Class: EducodeSales::PlansController

Inherits:
ApplicationController show all
Defined in:
app/controllers/educode_sales/plans_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#authenticate_admin, #authenticate_request, #current_user, #render_failure, #render_success

Instance Method Details

#createObject



59
60
61
62
63
64
65
66
67
68
# File 'app/controllers/educode_sales/plans_controller.rb', line 59

def create
  plan = @current_admin.sale_plans.build(plan_params)
  plan.month = params["month"] + "-1"
  plan.business_id = @current_admin.businesses.find(params[:business_id]).id
  if plan.save
    render_success
  else
    render_failure plan
  end
end

#destroyObject



158
159
160
161
162
163
164
165
# File 'app/controllers/educode_sales/plans_controller.rb', line 158

def destroy
  sale_plan = SalePlan.find(params[:id])
  if sale_plan.destroy
    render_success
  else
    render_failure sale_plan
  end
end

#edit_monthObject



171
172
173
174
175
176
177
# File 'app/controllers/educode_sales/plans_controller.rb', line 171

def edit_month
  @businesses = @current_admin.businesses.pluck(:name, :id)
  @sale_plan = SalePlan.find(params[:id])
  @finish_rates = []
  11.times { |d| @finish_rates << ["#{d*10}%", d * 10]}
  render layout: false
end

#edit_monthlyObject



179
180
181
# File 'app/controllers/educode_sales/plans_controller.rb', line 179

def edit_monthly
  render layout: false
end

#edit_weekObject



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'app/controllers/educode_sales/plans_controller.rb', line 125

def edit_week
  @businesses = @current_admin.businesses.pluck(:name, :id)
  @sale_plan = SalePlan.find(params[:id])
  if @sale_plan.weekly.present?
    week = Time.now.strftime('%W').to_i
    if week > 3
      @weeks = [week, week - 1, week - 2]
    elsif week == 2
      @weeks = [week, week - 1]
    else
      @weeks = [week]
    end
    @weeks << @sale_plan.weekly
    @weeks = @weeks.uniq.sort
  end
  @months = [Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]
  @months << @sale_plan.month.strftime("%Y-%m")
  @months = @months.uniq.sort
  @finish_rates = []
  11.times { |d| @finish_rates << ["#{d * 10}%", d * 10] }
  render layout: false
end

#edit_weeklyObject



167
168
169
# File 'app/controllers/educode_sales/plans_controller.rb', line 167

def edit_weekly
  render layout: false
end

#indexObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/educode_sales/plans_controller.rb', line 6

def index
  # authorize! :read, SalePlan
  respond_to do |format|
    format.html do
      common = Common.find_by(clazz: 'staff_type', name: '销售')
      @staffs = Staff.includes(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id] }
      @years = (1..(Time.now.year - 2020)).map { |d| 2020 + d }
      @months = (1..12).map { |d| d }
    end
    format.json do
      if @current_admin.is_admin?
        @sale_plans = SalePlan
      else
        level = @current_admin.role.role_areas.find_by(clazz: '销售计划').level
        case level
        when '自己'
          @sale_plans = SalePlan.where(staff_id: @current_admin.id)
        when '区域'
          staff_ids = Staff.joins(department: :school).where("school.province in ?", staff.areas.pluck(:name)).pluck(:id)
          @sale_plans = SalePlan.where("staff_id in ?", staff_ids)
        else
          @sale_plans = SalePlan
        end
      end
      if params[:clazz] == 'week'
        @sale_plans = @sale_plans.where.not(weekly: nil)
      else
        @sale_plans = @sale_plans.where(weekly: nil)
      end
      if params[:q].present? && params[:q][:staff_id].present?
        @sale_plans = @sale_plans.where(staff_id: params[:q][:staff_id])
      end
      if params[:q].present? && params[:q][:year].present?
        @sale_plans = @sale_plans.where("month >= ? and month <= ?", "#{params[:q][:year]}-01-01 00:00:00".to_date, "#{params[:q][:year]}-12-31 23:59:00".to_date)
      end
      if params[:q].present? && params[:q][:month].present?
        @sale_plans = @sale_plans.where("month = ?", "#{params[:q][:month]}-01 00:00:00".to_date)
      end
      if params[:sort].present? && params[:sort][:field]
        @sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
      else
        @sale_plans = @sale_plans.order("updated_at desc")
      end

      @sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
    end
  end
end

#my_monthObject



193
194
195
196
197
198
199
200
201
# File 'app/controllers/educode_sales/plans_controller.rb', line 193

def my_month
  @sale_plans = SalePlan.where(staff_id: @current_admin.id, month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: nil)
  if  params[:sort].present? && params[:sort][:field]
    @sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
  else
    @sale_plans = @sale_plans.order("updated_at desc")
  end
  @sale_plans =  @sale_plans.page(params[:page]).per(params[:limit])
end

#my_weekObject



183
184
185
186
187
188
189
190
191
# File 'app/controllers/educode_sales/plans_controller.rb', line 183

def my_week
  @sale_plans = SalePlan.where(staff_id: @current_admin.id, month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i)
  if  params[:sort].present? && params[:sort][:field]
    @sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
  else
    @sale_plans = @sale_plans.order("updated_at desc")
  end
  @sale_plans =  @sale_plans.page(params[:page]).per(params[:limit])
end

#newObject



55
56
57
# File 'app/controllers/educode_sales/plans_controller.rb', line 55

def new
  render layout: false
end

#new_monthObject



93
94
95
96
97
# File 'app/controllers/educode_sales/plans_controller.rb', line 93

def new_month
  @business = Business.find_by(id: params[:business_id])
  @businesses = @current_admin.businesses.pluck(:name, :id)
  render layout: false
end

#new_monthlyObject



99
100
101
102
103
104
105
# File 'app/controllers/educode_sales/plans_controller.rb', line 99

def new_monthly
  sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
  @rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
  @departments_count = sale_plans.joins(:business).count("distinct(department_id)")
  @total_amount = sale_plans.joins(business: :last_follow_up).distinct.sum("total_amount")
  render layout: false
end

#new_weekObject



71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'app/controllers/educode_sales/plans_controller.rb', line 71

def new_week
  @business = Business.find_by(id: params[:business_id])
  week = Time.now.strftime('%W').to_i
  if week > 3
    @weeks = [week, week - 1, week - 2]
  elsif week == 2
    @weeks = [week, week - 1]
  else
    @weeks = [week]
  end
  @businesses = @current_admin.businesses.pluck(:name, :id)
  render layout: false
end

#new_weeklyObject



85
86
87
88
89
90
91
# File 'app/controllers/educode_sales/plans_controller.rb', line 85

def new_weekly
  sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i, staff_id: @current_admin.id)
  @rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
  @departments_count = sale_plans.joins(:business).count("distinct(department_id)")
  @total_amount = sale_plans.joins(business: :last_follow_up).distinct.sum("total_amount")
  render layout: false
end

#show_monthObject



116
117
118
119
# File 'app/controllers/educode_sales/plans_controller.rb', line 116

def show_month
  @sale_plan = SalePlan.find(params[:id])
  render layout: false
end

#show_monthlyObject



121
122
123
# File 'app/controllers/educode_sales/plans_controller.rb', line 121

def show_monthly
  render layout: false
end

#show_weekObject



107
108
109
110
# File 'app/controllers/educode_sales/plans_controller.rb', line 107

def show_week
  @sale_plan = SalePlan.find(params[:id])
  render layout: false
end

#show_weeklyObject



112
113
114
# File 'app/controllers/educode_sales/plans_controller.rb', line 112

def show_weekly
  render layout: false
end

#updateObject



148
149
150
151
152
153
154
155
156
# File 'app/controllers/educode_sales/plans_controller.rb', line 148

def update
  sale_plan = SalePlan.find(params[:id])
  params["month"] = params["month"] + "-1"
  if sale_plan.update(plan_params)
    render_success
  else
    render_failure sale_plan
  end
end