diff --git a/app/Http/Controllers/AutoController.php b/app/Http/Controllers/AutoController.php index 37a3bf0..6efd962 100644 --- a/app/Http/Controllers/AutoController.php +++ b/app/Http/Controllers/AutoController.php @@ -78,6 +78,27 @@ class AutoController extends Controller public function store(Request $request) { + // Sanitize cost before validation + if ($request->has('cost')) { + $request->merge([ + 'cost' => str_replace(',', '', $request->cost) + ]); + } + + $request->validate([ + 'number' => 'required', + 'purpose_id' => 'required', + 'ordered_customer' => 'required', + 'ordered_customer_phone' => 'required', + 'customer_type' => 'required|in:physical,juridical', + 'owner_type' => 'required|in:physical,juridical', + 'car_category' => 'required', + 'car_mark' => 'required', + 'car_number' => 'required', + 'tech_passport' => 'required', + 'cost' => 'required|numeric', + ]); + $id = DB::table('auto_orders')->insertGetId([ 'number' => $request->number, 'status' => $request->status ?? 'draft', @@ -129,6 +150,27 @@ class AutoController extends Controller public function update(Request $request, $id) { + // Sanitize cost before validation + if ($request->has('cost')) { + $request->merge([ + 'cost' => str_replace(',', '', $request->cost) + ]); + } + + $request->validate([ + 'number' => 'required', + 'purpose_id' => 'required', + 'ordered_customer' => 'required', + 'ordered_customer_phone' => 'required', + 'customer_type' => 'required|in:physical,juridical', + 'owner_type' => 'required|in:physical,juridical', + 'car_category' => 'required', + 'car_mark' => 'required', + 'car_number' => 'required', + 'tech_passport' => 'required', + 'cost' => 'required|numeric', + ]); + DB::table('auto_orders')->where('id', $id)->update([ 'number' => $request->number, 'status' => $request->status, diff --git a/app/Http/Controllers/ConclusionController.php b/app/Http/Controllers/ConclusionController.php index 2721e7b..5a7187e 100644 --- a/app/Http/Controllers/ConclusionController.php +++ b/app/Http/Controllers/ConclusionController.php @@ -96,8 +96,34 @@ class ConclusionController extends Controller $size2 = $pdf->getTemplateSize($tpl); $pdf->AddPage($size2['orientation'], [$size2['width'], $size2['height']]); $pdf->useTemplate($tpl); - // Add QR to bottom-right corner - $pdf->Image($qrPath, $size2['width'] - 35, $size2['height'] - 35, 30, 30); + // Add QR to top-right corner + $pdf->Image($qrPath, $size2['width'] - 45, 15, 30, 30); + } + + // Append certificates from the database + $certificates = DB::table('certificates')->orderBy('sort')->get(); + foreach ($certificates as $certificate) { + $certPath = storage_path('app/' . $certificate->path); + if (file_exists($certPath)) { + // Support both PDF and Image certificates + $extCert = strtolower(pathinfo($certPath, PATHINFO_EXTENSION)); + if ($extCert === 'pdf') { + $certPageCount = $pdf->setSourceFile($certPath); + for ($j = 1; $j <= $certPageCount; $j++) { + $tplCert = $pdf->importPage($j); + $sizeCert = $pdf->getTemplateSize($tplCert); + $pdf->AddPage($sizeCert['orientation'], [$sizeCert['width'], $sizeCert['height']]); + $pdf->useTemplate($tplCert); + // Add watermark to certificate page too + $pdf->Image($qrPath, $sizeCert['width'] - 45, 15, 30, 30); + } + } elseif (in_array($extCert, ['jpg', 'jpeg', 'png'])) { + $pdf->AddPage('P', 'A4'); + $pdf->Image($certPath, 0, 0, 210, 297); + // Add watermark + $pdf->Image($qrPath, 210 - 45, 15, 30, 30); + } + } } $pdf->Output('F', $outputPath); diff --git a/app/Http/Controllers/EstateController.php b/app/Http/Controllers/EstateController.php index 1f1b57c..89b8f4d 100644 --- a/app/Http/Controllers/EstateController.php +++ b/app/Http/Controllers/EstateController.php @@ -59,6 +59,28 @@ class EstateController extends Controller public function store(Request $request) { + // Sanitize cost before validation + if ($request->has('cost')) { + $request->merge([ + 'cost' => str_replace(',', '', $request->cost) + ]); + } + + $request->validate([ + 'number' => 'required', + 'purpose_id' => 'required', + 'ordered_customer' => 'required', + 'ordered_customer_phone' => 'required', + 'customer_type' => 'required|in:physical,juridical', + 'owner_type' => 'required|in:physical,juridical', + 'name_of_object' => 'required', + 'region' => 'required', + 'district' => 'required', + 'address' => 'required', + 'tech_passport' => 'required', + 'cost' => 'required|numeric', + ]); + $id = DB::table('estate_orders')->insertGetId([ 'number' => $request->number, 'status' => $request->status ?? 'draft', @@ -112,6 +134,28 @@ class EstateController extends Controller public function update(Request $request, $id) { + // Sanitize cost before validation + if ($request->has('cost')) { + $request->merge([ + 'cost' => str_replace(',', '', $request->cost) + ]); + } + + $request->validate([ + 'number' => 'required', + 'purpose_id' => 'required', + 'ordered_customer' => 'required', + 'ordered_customer_phone' => 'required', + 'customer_type' => 'required|in:physical,juridical', + 'owner_type' => 'required|in:physical,juridical', + 'name_of_object' => 'required', + 'region' => 'required', + 'district' => 'required', + 'address' => 'required', + 'tech_passport' => 'required', + 'cost' => 'required|numeric', + ]); + DB::table('estate_orders')->where('id', $id)->update([ 'number' => $request->number, 'status' => $request->status, diff --git a/resources/views/auto/edit.blade.php b/resources/views/auto/edit.blade.php index d82e89b..2b88738 100755 --- a/resources/views/auto/edit.blade.php +++ b/resources/views/auto/edit.blade.php @@ -33,7 +33,7 @@ @error('number') @@ -47,7 +47,7 @@
customer_type=='physical') checked @endif + @if(old('customer_type', $order->customer_type)=='physical') checked @endif name="customer_type" onclick="handleCustomerClick(this.value);" value="physical" id="flexRadioDefault2"> @@ -102,7 +102,7 @@
customer_type=='juridical') checked + @if(old('customer_type', $order->customer_type)=='juridical') checked @endif name="customer_type" onclick="handleCustomerClick(this.value);" value="juridical" id="flexRadioDefault1"> @@ -111,7 +111,7 @@
-
+
-
- @error('customer_company') @@ -188,7 +188,7 @@
- owner_type=='physical') checked + owner_type)=='physical') checked @endif name="owner_type" onclick="handleOwnerClick(this.value);" value="physical" id="flexRadioDefault3"> @@ -198,7 +198,7 @@
owner_type=='juridical') checked + @if(old('owner_type', $order->owner_type)=='juridical') checked @endif name="owner_type" onclick="handleOwnerClick(this.value);" value="juridical" id="flexRadioDefault4"> @@ -207,13 +207,13 @@
-
+
- @@ -229,7 +229,7 @@ @error('owner_first_name') @@ -242,7 +242,7 @@ - @@ -253,7 +253,7 @@ @enderror
-
@error('owner_company') @@ -307,7 +307,7 @@ @error('car_mark') @@ -321,7 +321,7 @@ @error('color') @@ -339,7 +339,7 @@ class="form-control text-uppercase @error('made_date') is-invalid @enderror" id="auto-made_date-input" name="made_date" data-provider="flatpickr" data-date-format="d.m.Y" - value="{{ $order->made_date }}" + value="{{ old('made_date', $order->made_date) }}" data-deafult-date="{{ Carbon\Carbon::now('Asia/Tashkent')->format('d.m.Y') }}" placeholder="@lang('translation.write-car-made-date')" tabindex="13"> @@ -355,7 +355,7 @@ @error('body') @@ -369,7 +369,7 @@ @error('engine') @@ -385,7 +385,7 @@ @error('car_number') @@ -399,7 +399,7 @@ @error('type') @@ -413,7 +413,7 @@ @error('shassi') @@ -430,7 +430,7 @@ @error('tech_passport') @@ -447,7 +447,7 @@ class="form-control flatpickr-input @error('tech_given_date') is-invalid @enderror" id="auto-tech_given_date-input" name="tech_given_date" - value="{{ $order->tech_given_date }}" + value="{{ old('tech_given_date', $order->tech_given_date) }}" data-provider="flatpickr" data-date-format="d.m.Y" data-default="{{ Carbon\Carbon::now('Asia/Tashkent')->format('d.m.Y') }}" placeholder="@lang('translation.write-car-technical-passport-given-date')" @@ -466,7 +466,7 @@ @error('tech_given_whom') @@ -509,7 +509,7 @@ @endforeach - @error('diller') + @error('diller_id') @lang($message,['attribute'=>trans('translation.diller')]) @@ -531,7 +531,7 @@ @error('ordered_customer') @@ -546,7 +546,7 @@ @error('ordered_customer_phone') @@ -573,7 +573,7 @@ @@ -600,7 +600,7 @@ + rows="3" tabindex="27">{{ old('note', $order->note) }} @error('note') @lang($message,['attribute'=>trans('translation.note')]) diff --git a/resources/views/estate/edit.blade.php b/resources/views/estate/edit.blade.php index c5a65a3..db4197b 100755 --- a/resources/views/estate/edit.blade.php +++ b/resources/views/estate/edit.blade.php @@ -33,7 +33,7 @@ @error('number') @@ -47,7 +47,7 @@ @foreach($purposeCases as $purposeItem) @endforeach @@ -92,7 +92,7 @@
customer_type=='physical') checked @endif + @if(old('customer_type', $order->customer_type)=='physical') checked @endif name="customer_type" onclick="handleCustomerClick(this.value);" value="physical" id="flexRadioDefault2"> @@ -102,7 +102,7 @@
customer_type=='juridical') checked + @if(old('customer_type', $order->customer_type)=='juridical') checked @endif name="customer_type" onclick="handleCustomerClick(this.value);" value="juridical" id="flexRadioDefault1"> @@ -120,7 +120,7 @@ @error('customer_last_name') @@ -135,7 +135,7 @@ @error('customer_first_name') @@ -150,7 +150,7 @@ @error('customer_patronymic') @@ -166,7 +166,7 @@ @lang('translation.customer-juridical-name') @error('customer_company') @@ -188,7 +188,7 @@
- owner_type=='physical') checked + owner_type)=='physical') checked @endif name="owner_type" onclick="handleOwnerClick(this.value);" value="physical" id="flexRadioDefault3"> @@ -198,7 +198,7 @@
owner_type=='juridical') checked + @if(old('owner_type', $order->owner_type)=='juridical') checked @endif name="owner_type" onclick="handleOwnerClick(this.value);" value="juridical" id="flexRadioDefault4"> @@ -213,7 +213,7 @@ - @@ -229,7 +229,7 @@ @error('owner_first_name') @@ -242,7 +242,7 @@ - @@ -261,7 +261,7 @@ @error('owner_company') @@ -290,7 +290,7 @@ class="form-control text-uppercase @error('contract_date') is-invalid @enderror" id="estate-contract-date-input" name="contract_date" data-provider="flatpickr" data-date-format="d.m.Y" - value="{{ $order->contract_date }}" + value="{{ old('contract_date', $order->contract_date) }}" placeholder="@lang('translation.write-estate-contract-date')" tabindex="13"> @error('contract_date') @@ -307,7 +307,7 @@ @error('name_of_object') @@ -325,7 +325,7 @@ id="choices-region-input" tabindex="3"> @foreach($regions as $region) @endforeach @@ -348,7 +348,7 @@ id="choices-district-input" tabindex="3"> @foreach($districts as $district) @endforeach @@ -366,7 +366,7 @@ @error('address') @@ -380,7 +380,7 @@ @error('home') @@ -395,7 +395,7 @@ @lang('translation.area') @error('area') @@ -408,7 +408,7 @@ @lang('translation.overall-area') @error('overall_area') @@ -421,7 +421,7 @@ @lang('translation.usefull-area') @error('usefull_area') @@ -434,7 +434,7 @@ @lang('translation.live-area') @error('live_area') @@ -443,57 +443,6 @@ @enderror
- {{--
-
- - - @error('tech_passport') - - @lang($message,['attribute'=>trans('translation.estate-technical-passport')]) - - @enderror -
-
- - - @error('tech_given_date') - - @lang($message,['attribute'=>trans('translation.technical-passport-given-date')]) - - @enderror -
-
- - - @error('tech_given_whom') - - @lang($message,['attribute'=>trans('translation.technical-passport-given-by-whom')]) - - @enderror -
-
--}}
@@ -517,11 +466,11 @@ @lang('translation.select-diller') @error('ordered_customer') @@ -563,7 +512,7 @@ @error('ordered_customer_phone') @@ -590,7 +539,7 @@ @@ -617,7 +566,7 @@ + rows="3" tabindex="27">{{ old('note', $order->note) }} @error('note') @lang($message,['attribute'=>trans('translation.note')])