Completed
Push — master ( 45f86d...419882 )
by Ajit
12s
created

InvoicesController::delete()   A

Complexity

Conditions 3
Paths 15

Size

Total Lines 23
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 23
rs 9.0856
c 0
b 0
f 0
cc 3
eloc 14
nc 15
nop 1
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use DB;
6
use Auth;
7
use JavaScript;
0 ignored issues
show
Bug introduced by
The type JavaScript was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use App\Invoice;
9
use App\Service;
10
use Carbon\Carbon;
11
use App\Subscription;
12
use App\Cheque_detail;
13
use App\Invoice_detail;
14
use App\Payment_detail;
15
use Illuminate\Http\Request;
16
17
class InvoicesController extends Controller
18
{
19
    public function __construct()
20
    {
21
        $this->middleware('auth');
22
    }
23
24
    public function index(Request $request)
25
    {
26
        $invoices = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->paginate(10);
27
        $invoicesTotal = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->get();
28
        $count = $invoicesTotal->count();
29
30
        if (! $request->has('drp_start') or ! $request->has('drp_end')) {
31
            $drp_placeholder = 'Select daterange filter';
32
        } else {
33
            $drp_placeholder = $request->drp_start.' - '.$request->drp_end;
34
        }
35
36
        $request->flash();
37
38
        return view('invoices.index', compact('invoices', 'count', 'drp_placeholder'));
39
    }
40
41
    public function unpaid(Request $request)
42
    {
43
        $invoices = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 0)->paginate(10);
44
        $invoicesTotal = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 0)->get();
45
        $count = $invoicesTotal->count();
46
47
        if (! $request->has('drp_start') or ! $request->has('drp_end')) {
48
            $drp_placeholder = 'Select daterange filter';
49
        } else {
50
            $drp_placeholder = $request->drp_start.' - '.$request->drp_end;
51
        }
52
53
        $request->flash();
54
55
        return view('invoices.unpaid', compact('invoices', 'count', 'drp_placeholder'));
56
    }
57
58
    public function paid(Request $request)
59
    {
60
        $invoices = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 1)->paginate(10);
61
        $invoicesTotal = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 1)->get();
62
        $count = $invoicesTotal->count();
63
64
        if (! $request->has('drp_start') or ! $request->has('drp_end')) {
65
            $drp_placeholder = 'Select daterange filter';
66
        } else {
67
            $drp_placeholder = $request->drp_start.' - '.$request->drp_end;
68
        }
69
70
        $request->flash();
71
72
        return view('invoices.paid', compact('invoices', 'count', 'drp_placeholder'));
73
    }
74
75
    public function partial(Request $request)
76
    {
77
        $invoices = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 2)->paginate(10);
78
        $invoicesTotal = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 2)->get();
79
        $count = $invoicesTotal->count();
80
81
        if (! $request->has('drp_start') or ! $request->has('drp_end')) {
82
            $drp_placeholder = 'Select daterange filter';
83
        } else {
84
            $drp_placeholder = $request->drp_start.' - '.$request->drp_end;
85
        }
86
87
        $request->flash();
88
89
        return view('invoices.partial', compact('invoices', 'count', 'drp_placeholder'));
90
    }
91
92
    public function overpaid(Request $request)
93
    {
94
        $invoices = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 3)->paginate(10);
95
        $invoicesTotal = Invoice::indexQuery($request->sort_field, $request->sort_direction, $request->drp_start, $request->drp_end)->search('"'.$request->input('search').'"')->where('trn_invoice.status', 3)->get();
96
        $count = $invoicesTotal->count();
97
98
        if (! $request->has('drp_start') or ! $request->has('drp_end')) {
99
            $drp_placeholder = 'Select daterange filter';
100
        } else {
101
            $drp_placeholder = $request->drp_start.' - '.$request->drp_end;
102
        }
103
104
        $request->flash();
105
106
        return view('invoices.overpaid', compact('invoices', 'count', 'drp_placeholder'));
107
    }
108
109
    public function show($id)
110
    {
111
        $invoice = Invoice::findOrFail($id);
112
        $settings = \Utilities::getSettings();
113
114
        return view('invoices.show', compact('invoice', 'settings'));
115
    }
116
117
    public function createPayment($id, Request $request)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

117
    public function createPayment($id, /** @scrutinizer ignore-unused */ Request $request)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
118
    {
119
        $invoice = Invoice::findOrFail($id);
120
121
        return view('payments.create', compact('invoice'));
122
    }
123
124
    public function delete($id)
125
    {
126
        DB::beginTransaction();
127
128
        try {
129
            Invoice_detail::where('invoice_id', $id)->delete();
130
            $payment_details = Payment_detail::where('invoice_id', $id)->get();
131
132
            foreach ($payment_details as $payment_detail) {
133
                Cheque_detail::where('payment_id', $payment_detail->id)->delete();
134
                $payment_detail->delete();
135
            }
136
137
            Subscription::where('invoice_id', $id)->delete();
138
            Invoice::destroy($id);
139
140
            DB::commit();
141
142
            return back();
143
        } catch (\Exception $e) {
144
            DB::rollback();
145
146
            return back();
147
        }
148
    }
149
150
    public function discount($id)
151
    {
152
        $invoice = Invoice::findOrFail($id);
153
154
        JavaScript::put([
155
            'taxes' => \Utilities::getSetting('taxes'),
156
            'gymieToday' => Carbon::today()->format('Y-m-d'),
157
            'servicesCount' => Service::count(),
158
        ]);
159
160
        return view('invoices.discount', compact('invoice'));
161
    }
162
163
    public function applyDiscount($id, Request $request)
164
    {
165
        DB::beginTransaction();
166
167
        try {
168
            $invoice_total = $request->admission_amount + $request->subscription_amount + $request->taxes_amount - $request->discount_amount;
169
            $already_paid = Payment_detail::leftJoin('trn_cheque_details', 'trn_payment_details.id', '=', 'trn_cheque_details.payment_id')
170
                                       ->whereRaw("trn_payment_details.invoice_id = $id AND (trn_cheque_details.`status` = 2 or trn_cheque_details.`status` IS NULL)")
171
                                       ->sum('trn_payment_details.payment_amount');
172
173
            $pending = $invoice_total - $already_paid;
174
175
            $status = \Utilities::setInvoiceStatus($pending, $invoice_total);
176
177
            Invoice::where('id', $id)->update(['invoice_number'=> $request->invoice_number,
178
                                         'total'=> $invoice_total,
179
                                         'status'=> $status,
180
                                         'pending_amount'=> $pending,
181
                                         'discount_amount'=> $request->discount_amount,
182
                                         'discount_percent'=> $request->discount_percent,
183
                                         'discount_note'=> $request->discount_note,
184
                                         'tax'=> $request->taxes_amount,
185
                                         'additional_fees'=> $request->additional_fees,
186
                                         'note'=>' ', ]);
187
188
            DB::commit();
189
            flash()->success('Discount was successfully updated');
190
191
            return redirect(action('InvoicesController@show', ['id' => $id]));
192
        } catch (\Exception $e) {
193
            DB::rollback();
194
            flash()->error('Error while updating discount. Please try again');
195
196
            return back();
197
        }
198
    }
199
}
200