public function store() { $Input = Request::all(); $objInvoice = \App\Invoice::findorFail($Input['InvoiceID']); if (!$this->objLoggedInUser->HasPermission("Edit/{$objInvoice->type}")) { abort('404'); } $tWarnings = []; foreach ($Input['InvoiceItem'] as $ID => $tItem) { if ($ID == 'new') { foreach ($tItem as $tNewItem) { if (trim($tNewItem['Title']) || trim($tNewItem['Type'])) { $objInvoiceItem = new \App\InvoiceItem(); $objInvoiceItem->title = trim($tNewItem['Title']); $objInvoiceItem->type = trim($tNewItem['Type']); $objInvoiceItem->invoice_id = $objInvoice->id; $objInvoiceItem->save(); } } continue; } $objInvoiceItem = \App\InvoiceItem::find($ID); // Precautionary check to make sure we are not modifying other order items if (!$objInvoiceItem || $objInvoiceItem->invoice_id != $objInvoice->id) { $tWarnings[] = 'Order Item (id=' . $objInvoiceItem->id . ') could not be saved properly. Did not match parent order id.'; continue; } if (trim(strtolower($objInvoiceItem->title)) != trim(strtolower($tItem['Title'])) || trim(strtolower($objInvoiceItem->type)) != trim(strtolower($tItem['Type']))) { $objInvoiceItem->status = \App\InvoiceItem::STATUS_MODIFIED; } $objInvoiceItem->title = $tItem['Title']; $objInvoiceItem->type = $tItem['Type']; $objInvoiceItem->save(); } $objInvoice->first_name = Request::get('InvoiceFirstName'); $objInvoice->last_name = Request::get('InvoiceLastName'); $objInvoice->type = Request::get('InvoiceType'); $objInvoice->email = Request::get('InvoiceEmail'); $objInvoice->phone = Request::get('InvoicePhone'); $objInvoice->company_name = Request::get('InvoiceCompany'); $objInvoice->minitrac_invoice_number = Request::get('MinitracInvoiceNumber'); $objInvoice->comments = $Input['Comments']; $objInvoice->assigned_to = $Input['AssignTo']; if ($objInvoice->status != \App\Invoice::STATUS_REVIEWED && $Input['Status'] == \App\Invoice::STATUS_REVIEWED) { $objInvoice->reviewed_by = $this->objLoggedInUser->id; } $objInvoice->status = $Input['Status']; $objInvoice->save(); if ($tWarnings) { return redirect('admin/invoices/edit/' . $objInvoice->id)->with('FormResponse', ['ResponseType' => static::MESSAGE_WARNING, 'Content' => implode('<br />', $tWarnings) . ' <br />Contact Administrator']); } if (Request::get('Submit') == 'Save') { $Path = $Input['ReturnTo'] == 'Dashboard' ? '' : '/invoices'; } else { $Path = '/invoices/edit/' . $objInvoice->id; } return redirect("admin{$Path}")->with('FormResponse', ['ResponseType' => static::MESSAGE_SUCCESS, 'Content' => 'Invoice saved successfully']); }
public function ProcessSaleRequest($Input) { // Get logged user, or register as guest $objUser = \Auth::User() ?: \App\User::GetGuestAccount(); // TODO: Nice error handling would be nice if (!$objUser) { App::abort('500', 'Invalid form request: Could not determine user account to submit form'); } // Create invoice $objInvoice = new \App\Invoice(); $objInvoice->user_id = $objUser->id; $objInvoice->type = $Input['RequestType']; $objInvoice->company_name = $Input['CompanyName']; $objInvoice->first_name = $Input['FirstName']; $objInvoice->last_name = $Input['LastName']; $objInvoice->email = $Input['EmailAddress']; $objInvoice->phone = $Input['PhoneNumber']; $objInvoice->status = \App\Invoice::STATUS_NEW; $objInvoice->comments = $Input['Comments']; if (!$objInvoice->save()) { App::abort('500', 'Master invoice could not save. Breaking page. Not saving invoice items.'); } // Invoice Items $tInvoiceItemFields = ['Brand', 'Environment', 'MotivePower', 'Capacity', 'Attachment', 'OperatingHours', 'Accessories' => ['LP Tank', 'Opportunity Charger', 'Seat Belt', 'Strobe Light', 'Fire Extinguisher', 'Side Shifter']]; if ($Input['RequestType'] == static::REQUEST_TYPE_RENTAL) { unset($tInvoiceItemFields[0]); } // Brand foreach ($tInvoiceItemFields as $Item) { if (is_array($Item)) { foreach ($Item as $Accessory) { if (in_array($Accessory, $Input['Accessories'])) { $objInvoiceItem = new \App\InvoiceItem(); $objInvoiceItem->invoice_id = $objInvoice->id; $objInvoiceItem->type = 'Accessory'; $objInvoiceItem->title = "{$Accessory}"; $objInvoiceItem->status = \App\InvoiceItem::STATUS_ACTIVE; $objInvoiceItem->save(); } } } else { if ($Input[$Item]) { $objInvoiceItem = new \App\InvoiceItem(); $objInvoiceItem->invoice_id = $objInvoice->id; $objInvoiceItem->type = $Item; $objInvoiceItem->title = $Input[$Item]; $objInvoiceItem->status = \App\InvoiceItem::STATUS_ACTIVE; $objInvoiceItem->save(); } } } EmailController::sendSalesEmail($Input); return redirect('/forms/success'); }