tolerance_time_plugin_myprofile_controller.rb 1.41 KB
class ToleranceTimePluginMyprofileController < MyProfileController
  def index
    @tolerance = ToleranceTimePlugin::Tolerance.find_by_profile_id(profile.id) || ToleranceTimePlugin::Tolerance.create!(:profile => profile)
    convert_values
    if request.post?
      begin
        convert_params
        @tolerance.update_attributes!(params[:tolerance])
        convert_values
        session[:notice] = _('Tolerance updated')
      rescue
        session[:notice] = _('Tolerance could not be updated')
      end
    end
  end

  private

  def convert_params
    params[:tolerance][:content_tolerance] = params[:tolerance][:content_tolerance].to_i * params[:content_tolerance_unit].to_i if !params[:tolerance][:content_tolerance].blank?
    params[:tolerance][:comment_tolerance] = params[:tolerance][:comment_tolerance].to_i * params[:comment_tolerance_unit].to_i if !params[:tolerance][:comment_tolerance].blank?
  end

  def convert_values
    @content_default_unit = select_unit(@tolerance.content_tolerance)
    @comment_default_unit = select_unit(@tolerance.comment_tolerance)
    @tolerance.content_tolerance /= @content_default_unit if !@tolerance.content_tolerance.nil?
    @tolerance.comment_tolerance /= @comment_default_unit if !@tolerance.comment_tolerance.nil?
  end

  def select_unit(value)
    return 1 if value.nil? || value == 0
    return 3600 if value % 3600 == 0
    return 60 if value % 60 == 0
    return 1
  end
end