diff --git a/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php index 8c577a57..e9adfea1 100644 --- a/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php +++ b/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php @@ -20,6 +20,7 @@ use App\Http\Resources\AddressResource; use App\Models\Address; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Carbon\Carbon; class UpdateAddressLogic extends AbstractControllerLogic { @@ -103,11 +104,20 @@ class UpdateAddressLogic extends AbstractControllerLogic $this->createRemarkProcessor->execute($address, $remarkObject); } + if ($request->input('pickup_time_to') <= $request->input('pickup_time_from')) { + $pickupTimeFrom = Carbon::parse($request->input('pickup_time_from')); + $request->merge([ + 'pickup_time_to' => $pickupTimeFrom->addHour()->format('H:i') // Format to hh:mm + ]); + } + $addressExtraFields = [ - 'property_type' => $request->input('property_type'), - 'tools_required_unload' => $request->input('tools_required_unload'), - 'pickup_time_from' => $request->input('pickup_time_from'), - 'pickup_time_to' => $request->input('pickup_time_to'), + 'property_type' => $request->input('property_type'), + 'tools_required_unload' => $request->input('tools_required_unload'), + 'pickup_time_from' => $request->input('pickup_time_from'), + 'pickup_time_to' => $request->input('pickup_time_to'), + 'receive_goods_after_hours' => $request->input('receive_goods_after_hours'), + 'receive_goods_on_weekend' => $request->input('receive_goods_on_weekend'), ]; $addressExtraFieldsObject = new RemarkObject(json_encode($addressExtraFields), Auth()->user()->id, RemarkTypes::ADDRESS_EXTRA_COLUMNS); diff --git a/app/Http/Resources/AddressResource.php b/app/Http/Resources/AddressResource.php index 5d2d8b5b..aac7ee64 100644 --- a/app/Http/Resources/AddressResource.php +++ b/app/Http/Resources/AddressResource.php @@ -27,10 +27,11 @@ class AddressResource extends JsonResource $outstationPostcodeConstant = $outstationPostcodeConstantObject->isEmpty() ? [] : (array)$outstationPostcodeConstantObject->first()->value; in_array((String)$this->postcode, $outstationPostcodeConstant) ? $postcodeArea = 'OUTSTATION_POSTCODE' : null; - $extrafields = json_decode($this->addressExtraFields->first()); - $extrafields = $extrafields ? (isset($extrafields->content) ? json_decode($extrafields->content) : null) : null; + // Handle extra fields + $extrafields = $this->addressExtraFields->first(); + $extrafields = $extrafields ? json_decode($extrafields->content, true) : []; - return [ + $returnArray = [ 'id' => $this->id, 'reference' => $this->reference, 'street_one' => $this->street_one, @@ -46,11 +47,6 @@ class AddressResource extends JsonResource 'contact' => new ContactResource($this->contacts->first()), 'remark' => new RemarkResource($this->remarks->first()), 'type' => $this->type, - 'extrafields' => $extrafields, - 'property_type' => $extrafields ? $extrafields->property_type : null, - 'tools_required_unload' => $extrafields ? $extrafields->tools_required_unload : null, - 'pickup_time_from' => $extrafields ? $extrafields->pickup_time_from : null, - 'pickup_time_to' => $extrafields ? $extrafields->pickup_time_to : null, $this->mergeWhen($this->relationLoaded('owner'), [ 'owner' => $this->when($this->owner instanceof Order, [ 'reference' => $this->owner->reference, @@ -60,5 +56,12 @@ class AddressResource extends JsonResource ]) ]; + + // Merge extra fields into the return array + if ($extrafields) { + $returnArray = array_merge($returnArray, $extrafields); + } + + return $returnArray; } } diff --git a/app/Http/Resources/OrderResource.php b/app/Http/Resources/OrderResource.php index 8b72130a..1ca4aaab 100644 --- a/app/Http/Resources/OrderResource.php +++ b/app/Http/Resources/OrderResource.php @@ -5,6 +5,7 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\OrderRoleTypes; use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\RemarkTypes; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\TransportType; use App\Models\Transaction; @@ -53,7 +54,9 @@ class OrderResource extends JsonResource 'invoices' => $this->whenLoaded('packingLists', function() use ($orderId) { return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get()); }), - 'remarks' => RemarkResource::collection($this->remarks), + 'remarks' => RemarkResource::collection( + $this->remarks()->where('type', '!=', RemarkTypes::ADDRESS_EXTRA_COLUMNS)->get() + ), 'created_at' => $this->created_at->format('d-m-Y') ]; diff --git a/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue b/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue index b599f3dc..02a80f12 100644 --- a/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue +++ b/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue @@ -129,18 +129,38 @@
Available to receive after working hours
+Available to receive goods on weekend
+