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']); }