From e6bcdb36b38979f6d592c4ee92a786d46921e6db Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 2 May 2016 20:42:13 +0300 Subject: [PATCH] Removed extra entity load in the repos save function --- app/Http/Controllers/BaseController.php | 24 ------------------- app/Http/Controllers/ClientApiController.php | 2 +- app/Http/Controllers/ExpenseController.php | 2 +- app/Http/Controllers/InvoiceApiController.php | 2 +- app/Http/Controllers/InvoiceController.php | 10 +++----- app/Http/Controllers/PaymentApiController.php | 2 +- app/Http/Controllers/PaymentController.php | 2 +- app/Http/Controllers/ProductApiController.php | 2 +- app/Http/Controllers/TaxRateApiController.php | 2 +- app/Http/Controllers/TaxRateController.php | 4 +--- app/Http/Controllers/VendorController.php | 2 +- app/Ninja/Repositories/ClientRepository.php | 5 ++-- app/Ninja/Repositories/CreditRepository.php | 9 ++++--- app/Ninja/Repositories/ExpenseRepository.php | 7 ++++-- app/Ninja/Repositories/InvoiceRepository.php | 7 ++++-- app/Ninja/Repositories/PaymentRepository.php | 7 ++++-- app/Ninja/Repositories/ProductRepository.php | 7 ++++-- app/Ninja/Repositories/TaskRepository.php | 7 ++++-- app/Ninja/Repositories/TaxRateRepository.php | 15 ++++++------ app/Ninja/Repositories/VendorRepository.php | 7 ++++-- app/Services/ExpenseService.php | 4 ++-- app/Services/InvoiceService.php | 4 ++-- app/Services/VendorService.php | 4 ++-- 23 files changed, 65 insertions(+), 72 deletions(-) diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php index 4a33946c7631..2ce7a633f179 100644 --- a/app/Http/Controllers/BaseController.php +++ b/app/Http/Controllers/BaseController.php @@ -24,28 +24,4 @@ class BaseController extends Controller $this->layout = View::make($this->layout); } } - - protected function authorizeCreate() { - $this->authorize('create', $this->entityType); - } - - /* - protected function authorizeUpdate($entity) { - $this->authorize('edit', $entity); - } - */ - - protected function authorizeUpdate($input){ - $creating = empty($input['public_id']) || $input['public_id'] == '-1'; - - if($creating){ - $this->authorize('create', $this->entityType); - } - else{ - $className = Utils::getEntityName($this->entityType); - - $object = call_user_func(array("App\\Models\\{$className}", 'scope'), $input['public_id'])->firstOrFail(); - $this->authorize('edit', $object); - } - } } diff --git a/app/Http/Controllers/ClientApiController.php b/app/Http/Controllers/ClientApiController.php index 83689e274318..ba6b56c952fa 100644 --- a/app/Http/Controllers/ClientApiController.php +++ b/app/Http/Controllers/ClientApiController.php @@ -116,7 +116,7 @@ class ClientApiController extends BaseAPIController $data = $request->input(); $data['public_id'] = $publicId; - $client = $this->clientRepo->save($data); + $client = $this->clientRepo->save($data, $request->entity()); return $this->itemResponse($client); } diff --git a/app/Http/Controllers/ExpenseController.php b/app/Http/Controllers/ExpenseController.php index 406613489c6b..3da123c2d972 100644 --- a/app/Http/Controllers/ExpenseController.php +++ b/app/Http/Controllers/ExpenseController.php @@ -146,7 +146,7 @@ class ExpenseController extends BaseController $data = $request->input(); $data['documents'] = $request->file('documents'); - $expense = $this->expenseService->save($data); + $expense = $this->expenseService->save($data, $request->entity()); Session::flash('message', trans('texts.updated_expense')); diff --git a/app/Http/Controllers/InvoiceApiController.php b/app/Http/Controllers/InvoiceApiController.php index e4cc870f210c..32d38cc9316d 100644 --- a/app/Http/Controllers/InvoiceApiController.php +++ b/app/Http/Controllers/InvoiceApiController.php @@ -318,7 +318,7 @@ class InvoiceApiController extends BaseAPIController $data = $request->input(); $data['public_id'] = $publicId; - $this->invoiceService->save($data); + $this->invoiceService->save($data, $request->entity()); $invoice = Invoice::scope($publicId) ->with('client', 'invoice_items', 'invitations') diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 1a652ae8962c..270cc10b96ac 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -396,9 +396,7 @@ class InvoiceController extends BaseController { $data = $request->input(); $data['documents'] = $request->file('documents'); - - $this->authorizeUpdate($data); - + $action = Input::get('action'); $entityType = Input::get('entityType'); @@ -435,13 +433,11 @@ class InvoiceController extends BaseController { $data = $request->input(); $data['documents'] = $request->file('documents'); - - $this->authorizeUpdate($data); - + $action = Input::get('action'); $entityType = Input::get('entityType'); - $invoice = $this->invoiceService->save($data); + $invoice = $this->invoiceService->save($data, $request->entity()); $entityType = $invoice->getEntityType(); $message = trans("texts.updated_{$entityType}"); Session::flash('message', $message); diff --git a/app/Http/Controllers/PaymentApiController.php b/app/Http/Controllers/PaymentApiController.php index c1d0fd8ae0b6..5cea7f23641a 100644 --- a/app/Http/Controllers/PaymentApiController.php +++ b/app/Http/Controllers/PaymentApiController.php @@ -85,7 +85,7 @@ class PaymentApiController extends BaseAPIController $data = $request->input(); $data['public_id'] = $publicId; - $payment = $this->paymentRepo->save($data); + $payment = $this->paymentRepo->save($data, $request->entity()); return $this->itemResponse($payment); } diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index e3307f6f47e5..12537dbebaa1 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -603,7 +603,7 @@ class PaymentController extends BaseController public function update(UpdatePaymentRequest $request) { - $payment = $this->paymentRepo->save($request->input()); + $payment = $this->paymentRepo->save($request->input(), $request->entity()); Session::flash('message', trans('texts.updated_payment')); diff --git a/app/Http/Controllers/ProductApiController.php b/app/Http/Controllers/ProductApiController.php index 5bf1b239e4c0..6a8756eda4b6 100644 --- a/app/Http/Controllers/ProductApiController.php +++ b/app/Http/Controllers/ProductApiController.php @@ -42,7 +42,7 @@ class ProductApiController extends BaseAPIController $data = $request->input(); $data['public_id'] = $publicId; - $product = $this->productRepo->save($data); + $product = $this->productRepo->save($data, $request->entity()); return $this->itemResponse($product); } diff --git a/app/Http/Controllers/TaxRateApiController.php b/app/Http/Controllers/TaxRateApiController.php index 1c4e9bf255bc..85756205d9a1 100644 --- a/app/Http/Controllers/TaxRateApiController.php +++ b/app/Http/Controllers/TaxRateApiController.php @@ -42,7 +42,7 @@ class TaxRateApiController extends BaseAPIController $data = $request->input(); $data['public_id'] = $publicId; - $taxRate = $this->taxRateRepo->save($data); + $taxRate = $this->taxRateRepo->save($data, $request->entity()); return $this->itemResponse($taxRate); } diff --git a/app/Http/Controllers/TaxRateController.php b/app/Http/Controllers/TaxRateController.php index 223f7491092e..cba4058756de 100644 --- a/app/Http/Controllers/TaxRateController.php +++ b/app/Http/Controllers/TaxRateController.php @@ -75,9 +75,7 @@ class TaxRateController extends BaseController public function update(UpdateTaxRateRequest $request, $publicId) { - $taxRate = TaxRate::scope($publicId)->firstOrFail(); - - $this->taxRateRepo->save($request->input(), $taxRate); + $this->taxRateRepo->save($request->input(), $request->entity()); Session::flash('message', trans('texts.updated_tax_rate')); return Redirect::to('settings/' . ACCOUNT_TAX_RATES); diff --git a/app/Http/Controllers/VendorController.php b/app/Http/Controllers/VendorController.php index 10c7f7f03e89..f1952e20dee3 100644 --- a/app/Http/Controllers/VendorController.php +++ b/app/Http/Controllers/VendorController.php @@ -182,7 +182,7 @@ class VendorController extends BaseController */ public function update(UpdateVendorRequest $request) { - $vendor = $this->vendorService->save($request->input()); + $vendor = $this->vendorService->save($request->input(), $request->entity()); Session::flash('message', trans('texts.updated_vendor')); diff --git a/app/Ninja/Repositories/ClientRepository.php b/app/Ninja/Repositories/ClientRepository.php index 77ebcb7fd736..8d8c3ed527d4 100644 --- a/app/Ninja/Repositories/ClientRepository.php +++ b/app/Ninja/Repositories/ClientRepository.php @@ -72,12 +72,13 @@ class ClientRepository extends BaseRepository if ($client) { // do nothing - } if (!$publicId || $publicId == '-1') { + } elseif (!$publicId || $publicId == '-1') { $client = Client::createNew(); } else { $client = Client::scope($publicId)->with('contacts')->firstOrFail(); + \Log::warning('Entity not set in client repo save'); } - + // convert currency code to id if (isset($data['currency_code'])) { $currencyCode = strtolower($data['currency_code']); diff --git a/app/Ninja/Repositories/CreditRepository.php b/app/Ninja/Repositories/CreditRepository.php index 4381ae25771c..068707ace02b 100644 --- a/app/Ninja/Repositories/CreditRepository.php +++ b/app/Ninja/Repositories/CreditRepository.php @@ -59,12 +59,15 @@ class CreditRepository extends BaseRepository return $query; } - public function save($input) + public function save($input, $credit = null) { $publicId = isset($data['public_id']) ? $data['public_id'] : false; - - if ($publicId) { + + if ($credit) { + // do nothing + } elseif ($publicId) { $credit = Credit::scope($publicId)->firstOrFail(); + \Log::warning('Entity not set in credit repo save'); } else { $credit = Credit::createNew(); } diff --git a/app/Ninja/Repositories/ExpenseRepository.php b/app/Ninja/Repositories/ExpenseRepository.php index 4c67c0e7c91c..442af74bd32b 100644 --- a/app/Ninja/Repositories/ExpenseRepository.php +++ b/app/Ninja/Repositories/ExpenseRepository.php @@ -122,12 +122,15 @@ class ExpenseRepository extends BaseRepository return $query; } - public function save($input) + public function save($input, $expense = null) { $publicId = isset($input['public_id']) ? $input['public_id'] : false; - if ($publicId) { + if ($expense) { + // do nothing + } elseif ($publicId) { $expense = Expense::scope($publicId)->firstOrFail(); + \Log::warning('Entity not set in expense repo save'); } else { $expense = Expense::createNew(); } diff --git a/app/Ninja/Repositories/InvoiceRepository.php b/app/Ninja/Repositories/InvoiceRepository.php index 2ae18a738bd8..bbf58ca16c71 100644 --- a/app/Ninja/Repositories/InvoiceRepository.php +++ b/app/Ninja/Repositories/InvoiceRepository.php @@ -201,14 +201,16 @@ class InvoiceRepository extends BaseRepository ->make(); } - public function save($data) + public function save($data, $invoice = null) { $account = \Auth::user()->account; $publicId = isset($data['public_id']) ? $data['public_id'] : false; $isNew = !$publicId || $publicId == '-1'; - if ($isNew) { + if ($invoice) { + // do nothing + } elseif ($isNew) { $entityType = ENTITY_INVOICE; if (isset($data['is_recurring']) && filter_var($data['is_recurring'], FILTER_VALIDATE_BOOLEAN)) { $entityType = ENTITY_RECURRING_INVOICE; @@ -224,6 +226,7 @@ class InvoiceRepository extends BaseRepository } } else { $invoice = Invoice::scope($publicId)->firstOrFail(); + \Log::warning('Entity not set in invoice repo save'); } $invoice->fill($data); diff --git a/app/Ninja/Repositories/PaymentRepository.php b/app/Ninja/Repositories/PaymentRepository.php index 9b7d9787b457..dd99fccdfdd4 100644 --- a/app/Ninja/Repositories/PaymentRepository.php +++ b/app/Ninja/Repositories/PaymentRepository.php @@ -123,12 +123,15 @@ class PaymentRepository extends BaseRepository return $query; } - public function save($input) + public function save($input, $payment = null) { $publicId = isset($input['public_id']) ? $input['public_id'] : false; - if ($publicId) { + if ($payment) { + // do nothing + } elseif ($publicId) { $payment = Payment::scope($publicId)->firstOrFail(); + \Log::warning('Entity not set in payment repo save'); } else { $payment = Payment::createNew(); } diff --git a/app/Ninja/Repositories/ProductRepository.php b/app/Ninja/Repositories/ProductRepository.php index 7100b083a553..eb0e7383e9e5 100644 --- a/app/Ninja/Repositories/ProductRepository.php +++ b/app/Ninja/Repositories/ProductRepository.php @@ -31,12 +31,15 @@ class ProductRepository extends BaseRepository ); } - public function save($data) + public function save($data, $product = null) { $publicId = isset($data['public_id']) ? $data['public_id'] : false; - if ($publicId) { + if ($product) { + // do nothing + } elseif ($publicId) { $product = Product::scope($publicId)->firstOrFail(); + \Log::warning('Entity not set in product repo save'); } else { $product = Product::createNew(); } diff --git a/app/Ninja/Repositories/TaskRepository.php b/app/Ninja/Repositories/TaskRepository.php index 1bd0e38cb6b7..3a5eca04a112 100644 --- a/app/Ninja/Repositories/TaskRepository.php +++ b/app/Ninja/Repositories/TaskRepository.php @@ -64,10 +64,13 @@ class TaskRepository return $query; } - public function save($publicId, $data) + public function save($publicId, $data, $task = null) { - if ($publicId) { + if ($task) { + // do nothing + } elseif ($publicId) { $task = Task::scope($publicId)->firstOrFail(); + \Log::warning('Entity not set in task repo save'); } else { $task = Task::createNew(); } diff --git a/app/Ninja/Repositories/TaxRateRepository.php b/app/Ninja/Repositories/TaxRateRepository.php index 2e325100a016..8f1ad7f6550f 100644 --- a/app/Ninja/Repositories/TaxRateRepository.php +++ b/app/Ninja/Repositories/TaxRateRepository.php @@ -20,14 +20,15 @@ class TaxRateRepository extends BaseRepository ->select('tax_rates.public_id', 'tax_rates.name', 'tax_rates.rate', 'tax_rates.deleted_at'); } - public function save($data, $taxRate = false) + public function save($data, $taxRate = null) { - if ( ! $taxRate) { - if (isset($data['public_id'])) { - $taxRate = TaxRate::scope($data['public_id'])->firstOrFail(); - } else { - $taxRate = TaxRate::createNew(); - } + if ($taxRate) { + // do nothing + } elseif (isset($data['public_id'])) { + $taxRate = TaxRate::scope($data['public_id'])->firstOrFail(); + \Log::warning('Entity not set in tax rate repo save'); + } else { + $taxRate = TaxRate::createNew(); } $taxRate->fill($data); diff --git a/app/Ninja/Repositories/VendorRepository.php b/app/Ninja/Repositories/VendorRepository.php index df885f62e12e..ef5648f47d81 100644 --- a/app/Ninja/Repositories/VendorRepository.php +++ b/app/Ninja/Repositories/VendorRepository.php @@ -62,14 +62,17 @@ class VendorRepository extends BaseRepository return $query; } - public function save($data) + public function save($data, $vendor = null) { $publicId = isset($data['public_id']) ? $data['public_id'] : false; - if (!$publicId || $publicId == '-1') { + if ($vendor) { + // do nothing + } elseif (!$publicId || $publicId == '-1') { $vendor = Vendor::createNew(); } else { $vendor = Vendor::scope($publicId)->with('vendorcontacts')->firstOrFail(); + \Log::warning('Entity not set in vendor repo save'); } $vendor->fill($data); diff --git a/app/Services/ExpenseService.php b/app/Services/ExpenseService.php index 0b28a7c4d6b1..671648ea32a5 100644 --- a/app/Services/ExpenseService.php +++ b/app/Services/ExpenseService.php @@ -28,7 +28,7 @@ class ExpenseService extends BaseService return $this->expenseRepo; } - public function save($data) + public function save($data, $expense = null) { if (isset($data['client_id']) && $data['client_id']) { $data['client_id'] = Client::getPrivateId($data['client_id']); @@ -38,7 +38,7 @@ class ExpenseService extends BaseService $data['vendor_id'] = Vendor::getPrivateId($data['vendor_id']); } - return $this->expenseRepo->save($data); + return $this->expenseRepo->save($data, $expense); } public function getDatatable($search) diff --git a/app/Services/InvoiceService.php b/app/Services/InvoiceService.php index ecf0ad2fab0b..edbee8caf84c 100644 --- a/app/Services/InvoiceService.php +++ b/app/Services/InvoiceService.php @@ -30,7 +30,7 @@ class InvoiceService extends BaseService return $this->invoiceRepo; } - public function save($data) + public function save($data, $invoice = null) { if (isset($data['client'])) { $canSaveClient = false; @@ -46,7 +46,7 @@ class InvoiceService extends BaseService } } - $invoice = $this->invoiceRepo->save($data); + $invoice = $this->invoiceRepo->save($data, $invoice); $client = $invoice->client; $client->load('contacts'); diff --git a/app/Services/VendorService.php b/app/Services/VendorService.php index 6022507b452e..41f5fd4664bb 100644 --- a/app/Services/VendorService.php +++ b/app/Services/VendorService.php @@ -26,13 +26,13 @@ class VendorService extends BaseService return $this->vendorRepo; } - public function save($data) + public function save($data, $vendor = null) { if (Auth::user()->account->isNinjaAccount() && isset($data['plan'])) { $this->ninjaRepo->updatePlanDetails($data['public_id'], $data); } - return $this->vendorRepo->save($data); + return $this->vendorRepo->save($data, $vendor); } public function getDatatable($search)