diff --git a/app/Http/Controllers/QuoteController.php b/app/Http/Controllers/QuoteController.php index 867646fdc0a2..5836d2091c21 100644 --- a/app/Http/Controllers/QuoteController.php +++ b/app/Http/Controllers/QuoteController.php @@ -18,6 +18,7 @@ use App\Factory\CloneQuoteToInvoiceFactory; use App\Factory\QuoteFactory; use App\Filters\QuoteFilters; use App\Http\Requests\Quote\ActionQuoteRequest; +use App\Http\Requests\Quote\BulkActionQuoteRequest; use App\Http\Requests\Quote\CreateQuoteRequest; use App\Http\Requests\Quote\DestroyQuoteRequest; use App\Http\Requests\Quote\EditQuoteRequest; @@ -510,7 +511,7 @@ class QuoteController extends BaseController * ), * ) */ - public function bulk() + public function bulk(BulkActionQuoteRequest $request) { $action = request()->input('action'); diff --git a/app/Http/Requests/Quote/BulkActionQuoteRequest.php b/app/Http/Requests/Quote/BulkActionQuoteRequest.php new file mode 100644 index 000000000000..330ed304fe77 --- /dev/null +++ b/app/Http/Requests/Quote/BulkActionQuoteRequest.php @@ -0,0 +1,41 @@ +all(); + + $rules = []; + + if($input['action'] == 'convert_to_invoice') + $rules['action'] = [new ConvertableQuoteRule()]; + + return $rules; + } + +} diff --git a/app/Http/ValidationRules/Quote/ConvertableQuoteRule.php b/app/Http/ValidationRules/Quote/ConvertableQuoteRule.php new file mode 100644 index 000000000000..a4c8074a102f --- /dev/null +++ b/app/Http/ValidationRules/Quote/ConvertableQuoteRule.php @@ -0,0 +1,67 @@ +checkQuoteIsConvertable(); //if it exists, return false! + } + + /** + * @return string + */ + public function message() + { + return ctrans('texts.quote_has_expired'); + } + + /** + * @return bool + */ + private function checkQuoteIsConvertable() : bool + { + $ids = request()->input('ids'); + + $quotes = Quote::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get(); + + foreach($quotes as $quote){ + + if(!$quote->service()->isConvertable()) + return false; + + } + + return true; + + } +}