require_dependency "educode_sales/application_controller" module EducodeSales class FollowUpsController < ApplicationController def create load_business follow_up = @business.follow_ups.build(follow_up_params) follow_up.staff = @current_admin params[:assign_follow_up].each do |d| follow_up.assign_follow_ups.build(staff_id: d) end follow_up.profit_amount = follow_up.actual_amount * (100-follow_up.divide_rate.to_i) * 0.01 if follow_up.actual_amount if follow_up.save if @business.last_follow_up.present? @business.last_follow_up.key_person.each do |d| key_person = d.dup key_person.follow_up_id = follow_up.id key_person.save end @business.last_follow_up.money_plans.each do |d| money = d.dup money.staff = @current_admin money.follow_up_id = follow_up.id money.save end end @business.update(last_follow_up_id: follow_up.id) render_success else render_failure follow_up end end def destroy follow_up = FollowUp.find(params[:id]) business = follow_up.business if follow_up.destroy if follow_up.id == business.last_follow_up_id business.update(last_follow_up: business.follow_ups.last, return_money: MoneyPlan.where(clazz: '已完成', follow_up_id: business.follow_ups.last&.id).sum(:amount)) end render_success else render_failure follow_up end end def update follow_up = FollowUp.find(params[:id]) follow_up.assign_attributes(follow_up_params) assign_follow_ups = [] params[:assign_follow_up].each do |d| assign_follow_ups << follow_up.assign_follow_ups.find_or_initialize_by(staff_id: d) end follow_up.assign_follow_ups = assign_follow_ups follow_up.profit_amount = follow_up.actual_amount * (100-follow_up.divide_rate.to_i) * 0.01 if follow_up.actual_amount if follow_up.save render_success else render_failure follow_up end end def teachers follow_up = FollowUp.find_by(id: params[:id]) if follow_up.present? @teachers = follow_up.key_person.includes(:teacher).page(params[:page]).per(params[:limit]) else @teachers = FollowUp.none end end def money_plans follow_up = FollowUp.find_by(id: params[:id]) @money_plans = follow_up.money_plans.page(params[:page]).per(params[:limit]) end def add_money follow_up = FollowUp.find(params[:id]) money_plan = follow_up.money_plans.build(date_at: params[:date_at], amount: params[:amount], clazz: params[:clazz]) money_plan.staff = @current_admin if money_plan.save render_success else render_failure money_plan end end def update_money follow_up = FollowUp.find_by(id: params[:id]) money_plan = follow_up.money_plans.find(params[:plan_id]) if money_plan.update(date_at: params[:date_at], amount: params[:amount], clazz: params[:clazz]) render_success else render_failure money_plan end end def delete_money follow_up = FollowUp.find_by(id: params[:id]) money_plan = follow_up.money_plans.find(params[:plan_id]) if money_plan.destroy render_success else render_failure money_plan end end def add_keys follow_up = FollowUp.find(params[:id]) if params[:name].blank? return render_failure '请从平台里选择教师' end names = params[:name].split("-") if names[0] == 't' # 从教师列表里选择的用户 teacher = Teacher.find(names[1]) key_peprson = KeyPerson.new(teacher_params) key_peprson.teacher = teacher else # 从头歌平台选择的用户 user = User.find(names[1]) teacher = Teacher.new(staff: @current_admin, professional_title: params[:professional_title], job: params[:job], user_id: user.id, is_key: true, department_id: user.department_id, name: user.real_name ) teacher.save key_peprson = KeyPerson.new(teacher_params) key_peprson.teacher = teacher end follow_up.key_person << key_peprson if follow_up.save! render_success else render_failure follow_up end rescue ActiveRecord::RecordInvalid => e if e.message.include?("Teacher已经被使用") || e.message.include?('Key person是无效的') render_failure '该老师已在关键人列表中' else render_failure e.message end end private def load_business @business = Business.find(params[:business_id]) end def follow_up_params params.permit(:clazz_id, :stage_id, :invitation_at, :reception_at, :total_amount, :actual_amount, :divide_rate, :description, :advise, :place_id) end def teacher_params params.permit(:professional_title, :job, :attitude_id, :sex, :birth_date, :remark, :tel) end end end