This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | /** |
||
4 | * Author: Emmanuel Paul Mnzava |
||
5 | * Twitter: @epmnzava |
||
6 | * Github: https://github.com/dbrax/bill-me |
||
7 | * Email: [email protected] |
||
8 | * |
||
9 | */ |
||
10 | |||
11 | namespace Epmnzava\BillMe; |
||
12 | |||
13 | use Epmnzava\BillMe\Models\Order; |
||
14 | use Epmnzava\BillMe\Models\Receipt; |
||
15 | use Epmnzava\BillMe\Models\Invoice; |
||
16 | use Epmnzava\BillMe\Models\OrderItem; |
||
17 | use Epmnzava\BillMe\Mail\Client\Invoices\InvoiceCreated; |
||
18 | use Epmnzava\BillMe\Mail\Client\OrderReceived; |
||
19 | use Epmnzava\BillMe\Mail\Merchant\NewOrder; |
||
20 | use Carbon\Carbon; |
||
21 | use Epmnzava\BillMe\Mail\Client\Invoices\InvoicePaid; |
||
22 | use Epmnzava\BillMe\Models\BillingPayment; |
||
23 | use Epmnzava\BillMe\Models\PaymentMethod; |
||
24 | use Mail; |
||
25 | |||
26 | class BillMe extends Queries |
||
27 | { |
||
28 | |||
29 | |||
30 | |||
31 | /** |
||
32 | * A function that triggers order creation |
||
33 | * |
||
34 | */ |
||
35 | |||
36 | |||
37 | public function createOrder( |
||
38 | string $firstname, |
||
39 | string $lastname, |
||
40 | string $email, |
||
41 | string $mobile_number, |
||
42 | float $amount, |
||
43 | string $payment_method, |
||
44 | string $notes, |
||
45 | string $ordertitle = "", |
||
46 | string $address, |
||
47 | array $orderitems, |
||
48 | $userid = null |
||
49 | ): Order { |
||
50 | |||
51 | $order = new Order; |
||
52 | $order->userid = $userid; |
||
53 | $order->firstname = $firstname; |
||
54 | $order->lastname = $lastname; |
||
55 | $order->email = $email; |
||
56 | $order->mobile_number = $mobile_number; |
||
57 | $order->amount = $amount; |
||
58 | $order->payment_method = $payment_method; |
||
59 | $order->status = "pending"; |
||
60 | $order->notes = $notes; |
||
61 | $order->ordertitle = $ordertitle; |
||
62 | $order->address = $address; |
||
63 | $order->date = date("Y-m-d"); |
||
64 | |||
65 | $order->save(); |
||
66 | |||
67 | // Loop through order items here |
||
68 | if (!empty($orderitems)) { |
||
69 | |||
70 | for ($i = 0; $i < count($orderitems); $i++) { |
||
0 ignored issues
–
show
|
|||
71 | $orderItem = new OrderItem(); |
||
72 | $orderItem->order_id = $order->id; |
||
73 | $orderItem->amount = $orderitems[$i]['amount']; |
||
74 | $orderItem->quantity = $orderitems[$i]['quantity']; |
||
75 | $orderItem->item = $orderitems[$i]['item']; |
||
76 | $orderItem->extra_details = serialize($orderitems[$i]['extra_details']); |
||
77 | $orderItem->date = date("Y-m-d"); |
||
78 | |||
79 | $orderItem->save(); |
||
80 | } |
||
81 | } |
||
82 | |||
83 | |||
84 | $invoice = $this->createInvoice($order); |
||
85 | |||
86 | if (config('bill-me.send_mail') == 1) |
||
87 | $this->sendMailNotifications($order, $invoice); |
||
88 | |||
89 | $billing_record = $this->add_billing_record($order, $invoice); |
||
0 ignored issues
–
show
$billing_record is not used, you could remove the assignment.
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently. $myVar = 'Value';
$higher = false;
if (rand(1, 6) > 3) {
$higher = true;
} else {
$higher = false;
}
Both the ![]() |
|||
90 | |||
91 | return $order; |
||
92 | } |
||
93 | |||
94 | |||
95 | |||
96 | public function add_billing_record(Order $order, Invoice $invoice): BillingPayment |
||
97 | { |
||
98 | |||
99 | $bill_payment = new BillingPayment; |
||
100 | $bill_payment->userid = $order->userid; |
||
101 | $bill_payment->invoiceid = $invoice->id; |
||
102 | $bill_payment->orderid = $order->id; |
||
103 | $bill_payment->amount = $invoice->amount; |
||
104 | $bill_payment->date = $order->date; |
||
105 | $bill_payment->save(); |
||
106 | |||
107 | |||
108 | return $bill_payment; |
||
109 | } |
||
110 | |||
111 | |||
112 | /** |
||
113 | * Function that triggers sending of email notification for orders |
||
114 | */ |
||
115 | |||
116 | public function sendMailNotifications(Order $order, Invoice $invoice): void |
||
117 | { |
||
118 | Mail::to(["email" => $order->email])->send(new OrderReceived($order)); |
||
119 | Mail::to(["email" => config('bill-me.your_mail_address')])->send(new NewOrder($order)); |
||
120 | Mail::to(["address" => $invoice->email])->send(new InvoiceCreated($invoice)); |
||
121 | } |
||
122 | |||
123 | |||
124 | |||
125 | /** |
||
126 | * Function that creates an invoie from an order |
||
127 | */ |
||
128 | |||
129 | public function createInvoice(Order $order): Invoice |
||
130 | { |
||
131 | |||
132 | $invoice = new Invoice; |
||
133 | $invoice->orderid = $order->id; |
||
134 | $invoice->userid = $order->userid; |
||
135 | $invoice->firstname = $order->firstname; |
||
136 | $invoice->lastname = $order->lastname; |
||
137 | $invoice->mobile_number = $order->mobile_number; |
||
138 | $invoice->email = $order->email; |
||
139 | $invoice->invoice_title = $order->ordertitle; |
||
140 | $invoice->amount = $order->amount; |
||
141 | $invoice->status = $order->status; |
||
142 | $invoice->address = $order->address; |
||
143 | $invoice->date = date('Y-m-d'); |
||
144 | $invoice->due_date = Carbon::now()->addDays(config('bill-me.due_date_duration'))->format('Y-m-d'); |
||
145 | $invoice->save(); |
||
146 | |||
147 | $order_update = Order::find($order->id); |
||
148 | $order_update->invoiceid = $invoice->id; |
||
149 | $order_update->save(); |
||
150 | |||
151 | return $invoice; |
||
152 | } |
||
153 | |||
154 | |||
155 | public function order_paid($orderid): void |
||
156 | { |
||
157 | |||
158 | $invoiceid = Invoice::where('orderid', $orderid)->first()->id; |
||
159 | |||
160 | $this->invoice_paid($invoiceid); |
||
161 | } |
||
162 | |||
163 | |||
164 | /** |
||
165 | * Function gets @param invoiceid and updates order , invoice and billing record that the user has paid |
||
166 | */ |
||
167 | public function invoice_paid($invoiceid): Invoice |
||
168 | { |
||
169 | |||
170 | $invoice = Invoice::find($invoiceid); |
||
171 | $invoice->status = "paid"; |
||
172 | $invoice->save(); |
||
173 | |||
174 | $order = Order::find($invoice->orderid); |
||
175 | $order->status = "completed"; |
||
176 | $order->save(); |
||
177 | |||
178 | $billing = $this->paid_billing_record($invoiceid); |
||
0 ignored issues
–
show
$billing is not used, you could remove the assignment.
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently. $myVar = 'Value';
$higher = false;
if (rand(1, 6) > 3) {
$higher = true;
} else {
$higher = false;
}
Both the ![]() |
|||
179 | |||
180 | //$receiptid = $this->create_receipt($invoiceid, $billingid); |
||
181 | |||
182 | // create email notification invoice paid order paid.. |
||
183 | |||
184 | if (config('bill-me.send_mail') == 1) |
||
185 | Mail::to(["email" => $order->email])->send(new InvoicePaid($invoice)); |
||
186 | |||
187 | |||
188 | return $invoice; |
||
189 | } |
||
190 | |||
191 | /** |
||
192 | * Function gets @param invoiceid and @param billingid and creates receipt |
||
193 | */ |
||
194 | public function create_receipt($invoiceid, $billingid): int |
||
195 | { |
||
196 | |||
197 | $receipt = new Receipt; |
||
198 | $receipt->invoiceid = $invoiceid; |
||
199 | $receipt->paymentid = $billingid; |
||
200 | $receipt->save(); |
||
201 | |||
202 | return $receipt->id; |
||
203 | } |
||
204 | |||
205 | |||
206 | |||
207 | public function paid_billing_record($invoiceid): BillingPayment |
||
208 | { |
||
209 | |||
210 | $billing_record = BillingPayment::find(BillingPayment::where('invoiceid', $invoiceid)->first()->id); |
||
211 | $billing_record->status = "paid"; |
||
212 | $billing_record->save(); |
||
213 | |||
214 | return $billing_record; |
||
215 | } |
||
216 | /** |
||
217 | * Function that gets you invoice details by using orderid |
||
218 | */ |
||
219 | |||
220 | public function getInvoiceByOrderId($orderid) |
||
221 | { |
||
222 | return Invoice::where('orderid', $orderid)->first(); |
||
223 | } |
||
224 | |||
225 | /** |
||
226 | * Function that gets you invoice details by using invoiceid |
||
227 | */ |
||
228 | |||
229 | public function getInvoiceByInvoiceId($invoiceid) |
||
230 | { |
||
231 | |||
232 | return Invoice::find($invoiceid); |
||
233 | } |
||
234 | |||
235 | |||
236 | |||
237 | |||
238 | |||
239 | /** |
||
240 | * Function that gets you order details by using orderid |
||
241 | */ |
||
242 | |||
243 | public function getOrderByOrderId($orderid) |
||
244 | { |
||
245 | return Order::find($orderid); |
||
246 | } |
||
247 | |||
248 | /** |
||
249 | * Function that gets you order details by using invoiceid |
||
250 | */ |
||
251 | |||
252 | public function getOrderByInvoiceId($invoiceid) |
||
253 | { |
||
254 | return Order::find(Invoice::where('id', $invoiceid)->first()->orderid); |
||
255 | } |
||
256 | |||
257 | |||
258 | /** |
||
259 | * Function that updates invoice status and returns void |
||
260 | */ |
||
261 | public function update_invoice_status(string $invoiceid, string $status): void |
||
262 | { |
||
263 | $invoice = Invoice::find($invoiceid); |
||
264 | $invoice->status = $status; |
||
265 | $invoice->save(); |
||
266 | } |
||
267 | |||
268 | /** |
||
269 | * Function to update invoice |
||
270 | */ |
||
271 | |||
272 | public function update_invoice(string $invoiceid, Invoice $invoice): Invoice |
||
0 ignored issues
–
show
|
|||
273 | { |
||
274 | } |
||
275 | |||
276 | |||
277 | |||
278 | |||
279 | /** |
||
280 | * Function that updates order status and returns void |
||
281 | */ |
||
282 | public function update_order_status(string $orderid, string $status): void |
||
283 | { |
||
284 | $order = Order::find($orderid); |
||
285 | $order->status = $status; |
||
286 | $order->save(); |
||
287 | } |
||
288 | |||
289 | |||
290 | /** |
||
291 | * Function that updates an order returns void |
||
292 | */ |
||
293 | public function update_order(string $order_id, Order $order): void |
||
0 ignored issues
–
show
|
|||
294 | { |
||
295 | } |
||
296 | |||
297 | |||
298 | /** |
||
299 | * Function that updates and status to cancelled returns void |
||
300 | */ |
||
301 | public function cancel_order(string $orderid): void |
||
302 | { |
||
303 | $order = Order::find($orderid); |
||
304 | $order->status = "cancelled"; |
||
305 | $order->save(); |
||
306 | } |
||
307 | |||
308 | |||
309 | /** |
||
310 | * Function that deletes an order returns void |
||
311 | */ |
||
312 | public function delete_order(string $orderid) |
||
313 | { |
||
314 | |||
315 | $order = Order::find($orderid); |
||
316 | $order->delete(); |
||
317 | $this->delete_invoice($orderid); |
||
318 | } |
||
319 | |||
320 | /** |
||
321 | * Function that deletes an invoice returns void |
||
322 | */ |
||
323 | public function delete_invoice(string $orderid): void |
||
324 | { |
||
325 | |||
326 | $invoice = Invoice::where('orderid', $orderid)->delete(); |
||
0 ignored issues
–
show
$invoice is not used, you could remove the assignment.
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently. $myVar = 'Value';
$higher = false;
if (rand(1, 6) > 3) {
$higher = true;
} else {
$higher = false;
}
Both the ![]() |
|||
327 | } |
||
328 | |||
329 | |||
330 | |||
331 | } |
||
332 |
If the size of the collection does not change during the iteration, it is generally a good practice to compute it beforehand, and not on each iteration: