Class: Wco::LeadsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/wco/leads_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#home, #tinymce

Methods included from ApplicationHelper

#my_truthy?, #obfuscate, #pp_amount, #pp_currency, #pp_date, #pp_datetime, #pp_money, #pp_percent, #pp_time, #pretty_date

Instance Method Details

#createObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/controllers/wco/leads_controller.rb', line 5

def create
  params[:lead][:tag_ids]&.delete ''
  params[:lead].delete :leadset_id if params[:lead][:leadset_id].blank?

  @lead = Wco::Lead.new params[:lead].permit!
  authorize! :create, @lead

  if params[:lead][:photo]
    photo = Wco::Photo.new photo: params[:lead][:photo]
    photo.is_public = true
    if photo.save
      @lead.photo = photo
    end
    params[:lead].delete :photo
  end

  if @lead.save
    flash_notice 'ok'
  else
    flash_alert @lead
  end
  redirect_to action: :index
end

#editObject



29
30
31
32
# File 'app/controllers/wco/leads_controller.rb', line 29

def edit
  authorize! :edit, Wco::Lead
  @lead = Wco::Lead.find params[:id]
end

#indexObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/controllers/wco/leads_controller.rb', line 34

def index
  authorize! :index, Wco::Lead
  @leads = Wco::Lead.all

  if params[:q].present?
    q = params[:q].downcase
    @leads = @leads.any_of(
      { email: /#{q}/i },
      { name:  /#{q}/i },
    );

    if 1 == @leads.length
      redirect_to controller: 'wco/leads', action: 'show', id: @leads[0].id
      return
    end
  end

  @leads = @leads.page( params[:leads_page ] ).per( current_profile.per_page )
end

#newObject



54
55
56
57
# File 'app/controllers/wco/leads_controller.rb', line 54

def new
  authorize! :new, Wco::Lead
  @lead = Wco::Lead.new
end

#showObject



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/controllers/wco/leads_controller.rb', line 59

def show
  @lead      = Wco::Lead.where({ id: params[:id] }).first
  @lead    ||= Wco::Lead.where({ email: params[:id] }).first
  authorize! :show, @lead
  if !@lead
    flash_alert "This lead does not exist"
    redirect_to request.referrer
    return
  end
  @ctxs  = @lead.ctxs.page(          params[:ctxs_page]  ).per( current_profile.per_page )
  @convs = @lead.conversations.page( params[:convs_page] ).per( current_profile.per_page )

end

#updateObject



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'app/controllers/wco/leads_controller.rb', line 73

def update
  params[:lead][:tag_ids]&.delete ''
  params[:lead].delete :leadset_id if params[:lead][:leadset_id].blank?

  @lead = Wco::Lead.find params[:id]
  authorize! :update, @lead

  if params[:lead][:photo]
    photo = Wco::Photo.new photo: params[:lead][:photo]
    photo.is_public = true
    if photo.save
      @lead.photo = photo
    end
    params[:lead].delete :photo
  end

  if @lead.update params[:lead].permit!
    flash_notice 'ok'
  else
    puts! @lead.errors.full_messages.join(", "), 'cannot update lead'
    flash_alert @lead
  end
  redirect_to action: :show, id: @lead.id
end