Class: EmployeeReviewsController
- Inherits:
-
CrmController
- Object
- ActionController::Base
- ApplicationController
- CrmController
- EmployeeReviewsController
- Defined in:
- app/controllers/employee_reviews_controller.rb
Overview
Performance-review lifecycle for EmployeeReview: creation, editing,
state-machine reward completion, and the goal-import flow that carries
unfinished goals forward from a prior review.
Constant Summary
Constants included from Controllers::ReferenceFindable
Controllers::ReferenceFindable::ID_EMBEDDED_PATTERNS
Constants included from Controllers::AnalyticsEvents
Controllers::AnalyticsEvents::MAX_QUEUED_EVENTS, Controllers::AnalyticsEvents::SESSION_KEY
Constants included from Controllers::ErrorRendering
Controllers::ErrorRendering::NON_CONTENT_PATH_PREFIXES
Instance Method Summary collapse
-
#complete_allocate_reward ⇒ void
Renders the reward-allocation form for a completed review.
-
#complete_reward ⇒ void
Finalizes the allocated reward on the review.
-
#create ⇒ void
Creates a review with default review items, then routes to the goal-import step (unless it's a KPI review, which goes straight to the review itself).
-
#edit ⇒ void
Loads a review for editing.
-
#import_goals ⇒ void
Shows the picker for goals carried forward from previous reviews; skips straight to the review if there are none.
-
#import_goals_complete ⇒ void
Duplicates the selected prior-review goals onto this review, reset to
definedstate. -
#index ⇒ void
Redirects to the employee-review search (there's no plain index view).
-
#new ⇒ void
Builds a blank review of the requested type (default quarterly) for the employee.
-
#update ⇒ void
Updates a review; "Add More" re-renders the edit form instead of redirecting away.
Methods included from Controllers::Workflowable
#render_workflow_error_stream, #render_workflow_success_stream, #workflow_action, #workflow_action_complete
Methods included from Controllers::Showable
Methods included from Controllers::Destroyable
Methods inherited from CrmController
#access_denied, #context_id, #context_object, #crm_home_path, #current_ability, #default_url_options, #download_temp, #get_tempfile_path_for_download, #init_status_job_collector, #initialize_crm_lazy_chunks, #persist_enqueued_status_jobs, #record_not_found, #redirect_to_job_or_fallback, #render_edit_action, #set_context, #set_download_path, #stash_file_for_temp_download, #sync_admin_presence_cookie, #touch_employee_last_seen
Methods inherited from ApplicationController
#account_impersonated?, #add_to_flash, #after_sign_in_path_for, #bypass_forgery_protection?, #chat_enabled?, #cloudflare_cleared?, #default_catalog, #default_url_options, #enable_turbo_frames, #find_publication, #fix_invalid_accept_header, #init_js_utils, #is_globals_call?, #layout_by_resource, #locale_store, #redirect_to, #require_employee_for_crm, #set_base_host, #set_real_ip, #set_report_errors_for, #should_render_layout?, #skip_layout_for_turbo_frame?, #stamp_impersonation_context, #tab_frame_breakout_request?, #warmlyyours_canada_ip?, #warmlyyours_ip?, #y
Methods included from Controllers::ReturnPathHandling
#check_for_return_path, #redirect_to_return_path_or_default
Methods included from Controllers::AnalyticsEvents
#consume_queued_analytics_events, #registration_lead_type, #track_event
Methods included from Controllers::DeviceDetection
Methods included from Controllers::SubdomainDetection
#is_crm_request?, #is_www_request?, #json_request?
Methods included from Controllers::TurboSafeRedirect
Methods included from Controllers::TrackingDetection
#bot_request?, #gdpr_country?, #gdpr_country_data, #prevent_bots, #set_tracking_cookie, #track_visitor?
Methods included from Controllers::AcceleratedFileSending
#send_file_accelerated, #send_upload_accelerated
Methods included from Controllers::ErrorRendering
#excp_string, #mail_to_for_error_reporting, #render_400, #render_404, #render_406, #render_410, #render_500, #render_invalid_authenticity_token, #render_ip_spoof_error, #render_unpermitted_parameters, #safe_referer_or_fallback
Methods included from Controllers::TurnstileVerification
#load_turnstile_script_tag, #turnstile_lazy_widget, #turnstile_script_tag, #turnstile_widget, #validate_turnstile!
Methods included from Controllers::CloudflareCaching
edge_cached, #edge_cached_action?, #reset_cloudflare_cache, #set_cloudflare_cache, #skip_edge_cache!, #skip_session
Methods included from Controllers::Webpackable
#preload_webpack_fonts, #webpack_css_include, #webpack_css_url, #webpack_js_include, #wpd_is_running?
Methods included from Controllers::Localizable
#cloudflare_country_locale, #determine_request_locale, #geocoder_locale, #guest_user_locale_check, #locale_optional_www_auth_path?, #param_locale, #set_locale, #set_request_locale, #skip_localization?, #warmlyyours_ip_locale
Methods included from Controllers::Authenticable
#access_denied, #authenticate_account, #authenticate_account!, #authenticate_account_from_login_token!, #check_is_a_manager, #check_is_a_sales_manager, #check_is_an_admin, #check_is_an_employee, #check_party, #clear_mismatched_guest_user, #create_guest_user, #credentials?, #current_or_guest_user, #current_or_guest_user_id_read_only, #current_user, #devise_mapping, #fully_logged_in?, #generate_bot_id, #guest_user, #identifiable?, #init_current_user, #initialize_guest, #load_context_user, #logging_in, #resource, #resource_name, #restrict_access_for_non_employees, #scrubbed_request_path, #user_object, #warn_on_session_guest_id_leak
Methods included from UrlsHelper
#catalog_breadcrumb_links, #catalog_link, #catalog_link_for_product_line, #catalog_link_for_sku, #cms_link, #delocalized_path, #path_to_sales_product_sku, #path_to_sales_product_sku_for_product_line, #path_to_sales_product_sku_for_product_line_slug, #product_line_from_catalog_link, #protocol_neutral_url, #sanitize_external_url, #valid_external_url?
Instance Method Details
#complete_allocate_reward ⇒ void
This method returns an undefined value.
Renders the reward-allocation form for a completed review.
86 87 88 89 90 |
# File 'app/controllers/employee_reviews_controller.rb', line 86 def complete_allocate_reward @employee_review = @record || EmployeeReview.find(params[:id]) (:allocate_reward, @employee_review) render action: :complete_allocate_reward end |
#complete_reward ⇒ void
This method returns an undefined value.
Finalizes the allocated reward on the review.
95 96 97 98 99 100 |
# File 'app/controllers/employee_reviews_controller.rb', line 95 def complete_reward @employee_review = @record || EmployeeReview.find(params[:id]) (:complete, @employee_review) @employee_review.complete_reward! redirect_to employee_review_path(@employee_review) end |
#create ⇒ void
This method returns an undefined value.
Creates a review with default review items, then routes to the
goal-import step (unless it's a KPI review, which goes straight to the
review itself).
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/controllers/employee_reviews_controller.rb', line 46 def create @employee = Employee.find(params[:employee_id]) @employee_review = @employee.employee_record.employee_reviews.build(params[:employee_review]) @employee_review.reviewer ||= current_user.employee_record @employee_review.set_default_review_items (:create, @employee_review) if @employee_review.save if @employee_review.kpi? flash[:info] = 'KPI Review was created successfully.' redirect_to employee_review_path(@employee_review) else flash[:info] = 'Employee Review was created successfully. You can now choose to import goals from previous quarters that were unfinished or that continue this quarter, or click Skip to go directory to the review' redirect_to import_goals_employee_review_path(@employee_review) end else render :new, status: :unprocessable_content end end |
#edit ⇒ void
This method returns an undefined value.
Loads a review for editing.
36 37 38 39 |
# File 'app/controllers/employee_reviews_controller.rb', line 36 def edit @employee_review = EmployeeReview.find(params[:id]) (:update, @employee_review) end |
#import_goals ⇒ void
This method returns an undefined value.
Shows the picker for goals carried forward from previous reviews;
skips straight to the review if there are none.
106 107 108 109 110 111 |
# File 'app/controllers/employee_reviews_controller.rb', line 106 def import_goals @employee_review = EmployeeReview.find(params[:id]) (:update, @employee_review) load_previous_goals_grouped redirect_to employee_review_path(@employee_review) if @previous_goals_grouped.blank? end |
#import_goals_complete ⇒ void
This method returns an undefined value.
Duplicates the selected prior-review goals onto this review, reset to
defined state.
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'app/controllers/employee_reviews_controller.rb', line 117 def import_goals_complete @employee_review = EmployeeReview.find(params[:id]) (:update, @employee_review) employee_goals_to_import = EmployeeGoal.where(id: params[:employee_goal_ids]) employee_goals_to_import.each do |employee_goal_to_import| new_goal = employee_goal_to_import.dup new_goal.employee_review_id = @employee_review.id new_goal.state = 'defined' new_goal.earned_reward = nil new_goal.employee_comments = nil new_goal.supervisor_comments = nil new_goal.due_date = @employee_review.end_period new_goal.save end redirect_to employee_review_path(@employee_review, notice: "Import completed, #{employee_goals_to_import.size} processed") end |
#index ⇒ void
This method returns an undefined value.
Redirects to the employee-review search (there's no plain index view).
14 15 16 |
# File 'app/controllers/employee_reviews_controller.rb', line 14 def index redirect_to create_search_path('EmployeeReviewSearch') end |
#new ⇒ void
This method returns an undefined value.
Builds a blank review of the requested type (default quarterly) for
the employee.
22 23 24 25 26 27 28 29 30 31 |
# File 'app/controllers/employee_reviews_controller.rb', line 22 def new @employee = Employee.find(params[:employee_id]) review_type = params[:review_type] || :quarterly @employee_review = EmployeeReview.build_for_employee( employee: @employee, review_type: review_type, reviewer_employee_record: current_user.employee_record ) (:create, @employee_review) end |
#update ⇒ void
This method returns an undefined value.
Updates a review; "Add More" re-renders the edit form instead of
redirecting away.
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/controllers/employee_reviews_controller.rb', line 70 def update @employee_review = EmployeeReview.find(params[:id]) (:update, @employee_review) flash[:info] = 'Employee Review was updated successfully.' if @employee_review.update(params[:employee_review]) if @employee_review.errors.present? render action: :edit, status: :unprocessable_content elsif params['commit'] == 'Add More' render action: :edit else redirect_to_return_path_or_default(employee_review_path(@employee_review)) end end |