dbrax /
bill-me
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 Loading history...
|
|||
| 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 Loading history...
|
|||
| 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 Loading history...
|
|||
| 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: