Compare commits

...

4 Commits

12 changed files with 181 additions and 6 deletions
@@ -0,0 +1,64 @@
<?php
namespace App\Classes\Modules\Orders\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\Services\CancelsOrder;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\Orders\Services\FetchOwnerCompanyConnection;
use App\Classes\Modules\Orders\Services\UpdateOwnerReference;
use App\Http\Resources\OrderResource;
use App\Http\Resources\PackingListResource;
use App\Models\CompanyConnection;
use App\Models\Order;
use App\Models\PackingList;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ChangeOrderOwnerLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Changed order owner',
'message' => 'You have successfully changed the owner'
];
}
/** @var Marking $marking */
private $marking;
/** @param UpdateOwnerReference $updateOwnerReference*/
private $updateOwnerReference;
private $fetchOwnerCompanyConnection;
public function __construct(UpdateOwnerReference $updateOwnerReference, FetchOwnerCompanyConnection $fetchOwnerCompanyConnection)
{
$this->updateOwnerReference = $updateOwnerReference;
$this->fetchOwnerCompanyConnection = $fetchOwnerCompanyConnection;
}
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
protected function logic(Request $request): JsonResponse
{
$reference = $request->route('reference');
$packing = PackingList::where('reference', $reference)->get();
$companyConnection = $this->fetchOwnerCompanyConnection->execute($request->marking)->invitee->orders;
$order = $this->updateOwnerReference->execute($reference, $companyConnection);
return response()->json($packing,200);
// return $this->resourceResponse(new PackingListResource($packing));
}
}
@@ -7,6 +7,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\Orders\Standards\Rules\CanFetchOrder;
use App\Http\Resources\BookingResource;
use App\Http\Resources\OrderProfileResource;
use App\Http\Resources\OrderResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -54,8 +55,16 @@ class FetchOrderLogic extends AbstractControllerLogic
$query = $this->fetchesOrder->execute(['reference' => $request->route('id'), 'with_packing_lists' => true]);
$filter_array = (array)json_decode(($request->input('filters')));
if (isset($filter_array['display_without_parcel'])) {
if ($filter_array['display_without_parcel']) {
return $this->collectionResponse(OrderProfileResource::collection($query));
}
}
return $this->resourceResponse(new OrderResource($query));
}
}
}
@@ -7,6 +7,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\Services\ListsOrders;
use App\Classes\Modules\Orders\Standards\Rules\CanListOrders;
use App\Classes\ValueObjects\Constants\OrderType;
use App\Http\Resources\OrderProfileResource;
use App\Http\Resources\OrderResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
@@ -47,6 +48,14 @@ class ListOrdersLogic extends AbstractControllerLogic
$query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true, 'type_in' => [OrderType::SHARED_CONTAINER, OrderType::DEDICATED_CONTAINER]]));
$filter_array = (array)json_decode(($request->input('filters')));
if (isset($filter_array['display_without_parcel'])) {
if ($filter_array['display_without_parcel']) {
return $this->collectionResponse(OrderProfileResource::collection($query));
}
}
return $this->collectionResponse(OrderResource::collection($query));
}
@@ -0,0 +1,14 @@
<?php
namespace App\Classes\Modules\Orders\Services;
use App\Classes\General\Eloquent\AbstractUpdateRecord;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Models\CompanyConnection;
class FetchOwnerCompanyConnection extends AbstractUpdateRecord
{
public function execute(string $marking)
{
return CompanyConnection::Where('invitee_reference',$marking)->first();
}
}
@@ -0,0 +1,17 @@
<?php
namespace App\Classes\Modules\Orders\Services;
use App\Classes\General\Eloquent\AbstractUpdateRecord;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Models\PackingList;
class UpdateOwnerReference extends AbstractUpdateRecord
{
public function execute(string $reference, Object $owner)
{
foreach($owner as $owner) {
PackingList::where('reference',$reference)->update(['owner_id' => $owner->id]);
}
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Controllers\Orders;
use App\Classes\Modules\Orders\ControllersLogic\ChangeOrderOwnerLogic;
use App\Http\Controllers\Controller;
use App\Models\CompanyConnection;
use App\Models\PackingList;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ChangeOrderOwnerController extends Controller
{
/**
* @param Request $request
* @param ChangeOrderOwnerLogic $changeOrderOwnerLogic
* @return JsonResponse
*/
public function update(Request $request, ChangeOrderOwnerLogic $logic): JsonResponse
{
return $logic->execute($request);
}
}
@@ -0,0 +1,37 @@
<?php
namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
use Illuminate\Http\Resources\Json\JsonResource;
class OrderProfileResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'reference' => $this->reference,
'identifier' => $this->id,
'reference_contract' => (int) $this->type,
'type' => (int) $this->type,
'status' => (int) $this->status,
'company_module' => new CompanyModuleResource($this->companyModule),
'warehouse' => new CompanyModuleResource($this->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee),
'address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()),
'address_change_request' => new AddressResource($this->addressesPendingVerification()->first()),
'invoices' => $this->whenLoaded('packingLists', function() {
return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->get());
}),
'remarks' => RemarkResource::collection($this->remarks),
'created_at' => $this->created_at->format('d-m-Y')
];
}
}
+1
View File
@@ -22,6 +22,7 @@ class OrderResource extends JsonResource
return [
'id' => $this->id,
'reference' => $this->reference,
'identifier' => $this->id,
'reference_contract' => (int) $this->type,
'type' => (int) $this->type,
'status' => (int) $this->status,
+1 -1
View File
@@ -23,7 +23,7 @@ use PhpParser\Node\Expr\AssignOp\Mod;
* Class CompanyModule
* @package App\Models
*
* @property \App\Models\Company company_id
* @property \App\Models\Company company_id
* @property integer type
* @property integer status
*/
@@ -213,7 +213,7 @@
<div class="col">
<div class="row">
<div class="col">
<list-component v-show="!$store.getters.isShowing('createOrderForm')" section="cancelledOrderListSection" :endpoint="route('api.order.list')" :options="item ? {per_page: 12, status_in: [4, 5, 6], company_module_id: item.company_module.id, with_packing_lists: true} : {per_page: 30, status_in: [4, 5, 6], with_packing_lists: true}" :columns=3>
<list-component v-show="!$store.getters.isShowing('createOrderForm')" section="cancelledOrderListSection" :endpoint="route('api.order.list')" :options="item ? {per_page: 12, status_in: [4, 5, 6], company_module_id: item.company_module.id, with_packing_lists: true} : {per_page: 30, status_in: [4, 5, 6], with_packing_lists: true, display_without_parcel:true}" :columns=3>
<template slot="list" slot-scope="{data}">
<order-component :data="data"></order-component>
</template>
@@ -234,4 +234,4 @@
export default {
mixins: [componentHandler]
}
</script>
</script>
File diff suppressed because one or more lines are too long
+1
View File
@@ -12,6 +12,7 @@ Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], f
Route::post('/address/change/request', 'RequestChangeOrderAddressController@request')->name('address.change.request');
Route::post('/update/{id}','UpdateOrderController@update')->name('reference.update');
Route::put('/address/{id}/status/{status}', 'ApproveChangeOrderAddressController@approve')->name('address.status.update');
Route::put('/update-marking/{reference}', 'ChangeOrderOwnerController@update')->name('orders.update.marking');
Route::post('/create-warehouse-packing-list', 'CreateWarehousePackingListController@create')->name('create.warehouse.packing_list');
Route::post('/create-shipping-packing-list', 'CreateShippingPackingListController@create')->name('create.shipping.packing_list');