Created
February 17, 2016 14:02
-
-
Save wolfieorama/c4e010b95eff6459b306 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
weekly_performance_reviews_controller.rb | |
class WeeklyPerformanceReviewsController < InheritedResources::Base | |
before_action :set_weekly_performance_review, only: [:show, :edit, :update, :destroy] | |
before_action :authenticate_admin! | |
def index | |
@weekly_performance_reviews = WeeklyPerformanceReview.all | |
end | |
def show | |
end | |
def new | |
@weekly_performance_review = WeeklyPerformanceReview.new | |
end | |
def edit | |
end | |
def create | |
@weekly_performance_review = WeeklyPerformanceReview.new(weekly_performance_review_params) | |
@last_score = WeeklyPerformanceReview.last.pluck(:kpi_quality_next_target) | |
respond_to do |format| | |
if @weekly_performance_review.save | |
format.html { redirect_to @weekly_performance_review, notice: 'Weekly Performance Review was successfully created.' } | |
format.json { render :show, status: :created, location: @weekly_performance_review } | |
else | |
format.html { render :new } | |
format.json { render json: @weekly_performance_review.errors, status: :unprocessable_entity } | |
end | |
end | |
end | |
def update | |
respond_to do |format| | |
if @weekly_performance_review.update(weekly_performance_review_params) | |
format.html { redirect_to @weekly_performance_review, notice: 'Weekly Performance Review was successfully updated.' } | |
format.json { render :show, status: :ok, location: @weekly_performance_review } | |
else | |
format.html { render :edit } | |
format.json { render json: @weekly_performance_review.errors, status: :unprocessable_entity } | |
end | |
end | |
end | |
def destroy | |
@weekly_performance_review.destroy | |
respond_to do |format| | |
format.html { redirect_to weekly_performance_reviews_url, notice: 'Weekly Performance Review was successfully destroyed.' } | |
format.json { head :no_content } | |
end | |
end | |
private | |
# Use callbacks to share common setup or constraints between actions. | |
def set_weekly_performance_review | |
@weekly_performance_review = WeeklyPerformanceReview.find(params[:id]) | |
end | |
# Never trust parameters from the scary internet, only allow the white list through. | |
def weekly_performance_review_params | |
params.require(:weekly_performance_review).permit(:user_id, :week_start, :week_end, :kpi_quality_target, :kpi_adherence_target, :kpi_production_target, :kpi_quality_actual, :kpi_adherence_actual, :kpi_production_actual, :kpi_quality_next_target, :kpi_adherence_next_target, :kpi_production_next_target, :sessions_count, | |
coaching_forms_attributes: [:id, :date_of_session, :agents_strong_points, :areas_of_improvement_to_be_worked_on, | |
:agents_comments, :agreed_action_points, :team_leaders_comments, :next_review_date, :associated_with, :tag_list, :_destroy]) | |
end | |
end | |
weekly_performance_review.rb | |
class WeeklyPerformanceReview < ActiveRecord::Base | |
has_many :coaching_forms, dependent: :destroy | |
belongs_to :user | |
belongs_to :admin | |
accepts_nested_attributes_for :coaching_forms, reject_if: :all_blank, allow_destroy: true | |
def week_of | |
d = Date.today | |
"Starting:"" ""#{d.beginning_of_week}"" ""Ending:"" ""#{d.beginning_of_week + 4}" | |
end | |
def has_children? | |
Array(self.coaching_forms).count | |
end | |
end | |
new.html.erb | |
<div class="col-md-8 col-md-offset-1"> | |
<div class="panel panel-default"> | |
<%= form_for(@weekly_performance_review) do |f| %> | |
<% if @weekly_performance_review.errors.any? %> | |
<div id="error_explanation"> | |
<h2><%= pluralize(@weekly_performance_review.errors.count, "error") %> prohibited this weekly_performance_review from being saved:</h2> | |
<ul> | |
<% @weekly_performance_review.errors.full_messages.each do |message| %> | |
<li><%= message %></li> | |
<% end %> | |
</ul> | |
</div> | |
<% end %> | |
<div class="panel panel-body"> | |
<div class="field"> | |
<%= f.collection_select(:user_id, User.all, :id, :name) %> | |
</div> | |
<hr> | |
<div class="row"> | |
<div class="col-md-4"> | |
<h4 style="text-align: center">Target score</h4> | |
<div class="field"> | |
<%= f.label :Quality %><br> | |
<%= f.number_field :kpi_quality_target %> | |
</div> | |
<div class="field"> | |
<%= f.label :Adherence %><br> | |
<%= f.number_field :kpi_adherence_target %> | |
</div> | |
<div class="field"> | |
<%= f.label :Production %><br> | |
<%= f.number_field :kpi_production_target %> | |
</div> | |
</div> | |
<div class="col-md-4"> | |
<h4 style="text-align: center">Actual score</h4> | |
<div class="field"> | |
<%= f.label :Quality %><br> | |
<%= f.number_field :kpi_quality_actual %> | |
</div> | |
<div class="field"> | |
<%= f.label :Adherence %><br> | |
<%= f.number_field :kpi_adherence_actual %> | |
</div> | |
<div class="field"> | |
<%= f.label :Production %><br> | |
<%= f.number_field :kpi_production_actual %> | |
</div> | |
</div> | |
<div class="col-md-4"> | |
<h4 style="text-align: center">Next target score</h4> | |
<div class="field"> | |
<%= f.label :Quality %><br> | |
<%= f.number_field :kpi_quality_next_target %> | |
</div> | |
<div class="field"> | |
<%= f.label :Adherence %><br> | |
<%= f.number_field :kpi_adherence_next_target %> | |
</div> | |
<div class="field"> | |
<%= f.label :Production %><br> | |
<%= f.number_field :kpi_production_next_target %> | |
</div> | |
</div> | |
</div> | |
<hr> | |
<div class="coaching_forms"> | |
<h2>Coaching Sessions</h2> | |
<%= f.fields_for :coaching_forms do |coaching_form, index| %> | |
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> | |
<div class="panel panel-default"> | |
<div class="panel-heading" role="tab" id="headingOne"> | |
<h4 class="panel-title"> | |
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse<%= index.to_s %>" aria-expanded="true" aria-controls="collapseOne"> | |
<h4>New coaching form</h4> | |
</a> | |
</h4> | |
</div> | |
<div id="collapse<%= index.to_s %>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne"> | |
<div class="panel-body"> | |
<div class="coaching_form"> | |
<%= render 'coaching_form_fields', f: coaching_form %> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<% end %> | |
<br> | |
<div class="links"> | |
<%= link_to_add_association 'New Coaching session', f, :coaching_forms, class: "btn btn-primary add-button" %> | |
</div> | |
<div> | |
<br> | |
<div class="actions"> | |
<%= f.submit %> | |
</div> | |
</div> | |
<% end %> | |
</div> | |
</div> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment