mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 17:18:29 -04:00 
			
		
		
		
	Merge branch 'v5-develop' of https://github.com/turbo124/invoiceninja into v5-develop
This commit is contained in:
		
						commit
						2de19e83f7
					
				| @ -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'); | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										41
									
								
								app/Http/Requests/Quote/BulkActionQuoteRequest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								app/Http/Requests/Quote/BulkActionQuoteRequest.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Invoice Ninja (https://invoiceninja.com). | ||||
|  * | ||||
|  * @link https://github.com/invoiceninja/invoiceninja source repository | ||||
|  * | ||||
|  * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com) | ||||
|  * | ||||
|  * @license https://www.elastic.co/licensing/elastic-license | ||||
|  */ | ||||
| 
 | ||||
| namespace App\Http\Requests\Quote; | ||||
| 
 | ||||
| use App\Http\Requests\Request; | ||||
| use App\Http\ValidationRules\Quote\ConvertableQuoteRule; | ||||
| 
 | ||||
| class BulkActionQuoteRequest extends Request | ||||
| { | ||||
|     /** | ||||
|      * Determine if the user is authorized to make this request. | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function authorize() : bool | ||||
|     { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     public function rules() | ||||
|     { | ||||
|         $input = $this->all(); | ||||
| 
 | ||||
|         $rules = []; | ||||
| 
 | ||||
|         if($input['action'] == 'convert_to_invoice') | ||||
|             $rules['action'] = [new ConvertableQuoteRule()];  | ||||
| 
 | ||||
|         return $rules; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										67
									
								
								app/Http/ValidationRules/Quote/ConvertableQuoteRule.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								app/Http/ValidationRules/Quote/ConvertableQuoteRule.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Quote Ninja (https://quoteninja.com). | ||||
|  * | ||||
|  * @link https://github.com/quoteninja/quoteninja source repository | ||||
|  * | ||||
|  * @copyright Copyright (c) 2021. Quote Ninja LLC (https://quoteninja.com) | ||||
|  * | ||||
|  * @license https://www.elastic.co/licensing/elastic-license | ||||
|  */ | ||||
| 
 | ||||
| namespace App\Http\ValidationRules\Quote; | ||||
| 
 | ||||
| use App\Models\Quote; | ||||
| use App\Utils\Traits\MakesHash; | ||||
| use Illuminate\Contracts\Validation\Rule; | ||||
| 
 | ||||
| /** | ||||
|  * Class ConvertableQuoteRule. | ||||
|  */ | ||||
| class ConvertableQuoteRule implements Rule | ||||
| { | ||||
|     use MakesHash; | ||||
| 
 | ||||
|     public function __construct() | ||||
|     { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param string $attribute | ||||
|      * @param mixed $value | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function passes($attribute, $value) | ||||
|     { | ||||
|         return $this->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; | ||||
| 
 | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user