EnquiriesController   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 164
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 12
dl 0
loc 164
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A edit() 0 5 1
A show() 0 7 1
A index() 0 19 3
A __construct() 0 3 1
A update() 0 23 1
A lost() 0 10 1
A store() 0 63 2
A markMember() 0 10 1
A create() 0 3 1
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use Auth;
7
use DB;
8
use Carbon\Carbon;
9
use App\Enquiry;
10
use App\Followup;
11
use App\Member;
12
use App\Plan;
13
use App\Subscription;
14
use App\Invoice;
15
use App\Invoice_detail;
16
use App\Payment_detail;
17
use App\Sms_trigger;
18
use App\Http\Requests;
19
use App\Http\Controllers\Controller;
20
21
class EnquiriesController extends Controller
22
{   
23
    public function __construct()
24
    {
25
        $this->middleware('auth');
26
    }
27
28
    public function index(Request $request)
29
    {
30
      $enquiries = Enquiry::indexQuery($request->sort_field,$request->sort_direction,$request->drp_start,$request->drp_end)->search('"'.$request->input('search').'"')->paginate(10);
31
      $enquiriesTotal = Enquiry::indexQuery($request->sort_field,$request->sort_direction,$request->drp_start,$request->drp_end)->search('"'.$request->input('search').'"')->get();
32
      $count = $enquiriesTotal->count();
33
     
34
 
35
      if (!$request->has('drp_start') or !$request->has('drp_end')) 
36
      {
37
        $drp_placeholder = "Select daterange filter";
38
      }
39
      else
40
      {
41
        $drp_placeholder = $request->drp_start. ' - ' .$request->drp_end;
42
      }
43
44
      $request->flash();
45
      
46
      return view('enquiries.index', compact('enquiries','count','drp_placeholder'));
47
      
48
    }
49
50
    public function show($id)
51
    {
52
      $enquiry = Enquiry::findOrFail($id);
53
54
      $followups = $enquiry->followups->sortByDesc('updated_at');
55
56
      return view('enquiries.show', compact('enquiry','followups'));
57
    }
58
59
    public function create()
60
    {
61
    	return view('enquiries.create');
62
    }
63
64
    public function store(Request $request)
65
    {
66
     // unique values check
67
     $this->validate($request, ['email' => 'unique:mst_enquiries,email',
68
                                'contact' => 'unique:mst_enquiries,contact']);
69
70
     // Start Transaction
71
        DB::beginTransaction();
72
73
        try {
74
                // store enquiries details
75
               $enquiryData = array('name'=>$request->name,
76
                                    'DOB'=> $request->DOB,
77
                                    'gender'=> $request->gender,
78
                                    'contact'=> $request->contact,
79
                                    'email'=> $request->email,
80
                                    'address'=> $request->address,
81
                                    'status'=> \constEnquiryStatus::Lead , 
82
                                    'pin_code'=> $request->pin_code , 
83
                                    'occupation'=> $request->occupation , 
84
                                    'start_by'=> $request->start_by , 
85
                                    'interested_in'=> implode(',',$request->interested_in), 
86
                                    'aim'=> $request->aim , 
87
                                    'source'=> $request->source);
88
89
              $enquiry  = new Enquiry($enquiryData);
90
              $enquiry->createdBy()->associate(Auth::user());
91
              $enquiry->updatedBy()->associate(Auth::user());
92
              $enquiry->save();
93
94
              //Store the followup details
95
              $followupData = array('enquiry_id'=>$enquiry->id,
96
                                     'followup_by'=>$request->followup_by,
97
                                     'due_date'=>$request->due_date,
98
                                     'status'=> \constFollowUpStatus::Pending,
99
                                     'outcome'=>'');
100
101
              $followup = new Followup($followupData);
102
              $followup->createdBy()->associate(Auth::user());
103
              $followup->updatedBy()->associate(Auth::user());
104
              $followup->save();
105
106
              // SMS Trigger
107
              $gym_name = \Utilities::getSetting('gym_name');
108
              $sender_id = \Utilities::getSetting('sms_sender_id');
109
110
              $sms_trigger = Sms_trigger::where('alias','=','enquiry_placement')->first();
111
              $message = $sms_trigger->message;
112
              $sms_text = sprintf($message,$enquiry->name,$gym_name);
113
              $sms_status = $sms_trigger->status;
114
115
              \Utilities::Sms($sender_id,$enquiry->contact,$sms_text,$sms_status);
116
117
              DB::commit();    
118
              flash()->success('Enquiry was successfully created');                         
119
              return redirect (action('EnquiriesController@show', ['id' => $enquiry->id]));
120
            } 
121
122
            catch (\Exception $e) 
123
            {
124
                DB::rollback();
125
                flash()->error('Error while creating the Enquiry');
126
                return redirect (action('EnquiriesController@index'));
127
            }
128
129
    } //End of store method
130
131
  	public function edit($id)
132
    {
133
      $enquiry=Enquiry::findOrFail($id);
134
135
      return view('enquiries.edit', compact('enquiry'));
136
    }
137
138
    public function update($id, Request $request)
139
    {
140
        $enquiry=Enquiry::findOrFail($id);
141
142
        $enquiry->name = $request->name;
143
        $enquiry->DOB =  $request->DOB;
144
        $enquiry->gender =  $request->gender;
145
        $enquiry->contact =  $request->contact;
146
        $enquiry->email =  $request->email;
147
        $enquiry->address =  $request->address;
148
        $enquiry->pin_code =  $request->pin_code; 
149
        $enquiry->occupation =  $request->occupation; 
150
        $enquiry->start_by =  $request->start_by; 
151
        $enquiry->interested_in =  implode(',',$request->interested_in); 
152
        $enquiry->aim =  $request->aim; 
153
        $enquiry->source =  $request->source;
154
        $enquiry->createdBy()->associate(Auth::user());
155
        $enquiry->updatedBy()->associate(Auth::user());
156
        $enquiry->update();
157
158
        flash()->success('Enquiry details were successfully updated');
159
160
        return redirect (action('EnquiriesController@show', ['id' => $enquiry->id]));
161
    }
162
163
    public function lost($id)
164
    {
165
      $enquiry=Enquiry::findOrFail($id);
166
167
      $enquiry->status = \constEnquiryStatus::Lost;
168
      $enquiry->updatedBy()->associate(Auth::user());
169
      $enquiry->update();
170
171
      flash()->success('Enquiry was marked as lost');
172
      return redirect('enquiries/all');
173
    }
174
175
    public function markMember($id)
176
    {
177
      $enquiry=Enquiry::findOrFail($id);
178
179
      $enquiry->status = \constEnquiryStatus::Member;
180
      $enquiry->updatedBy()->associate(Auth::user());
181
      $enquiry->update();
182
183
      flash()->success('Enquiry was marked as member');
184
      return redirect('enquiries/all');
185
    }
186
187
}