mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/portal.git
synced 2026-08-22 22:14:26 +00:00
container load
This commit is contained in:
+2
-2
@@ -23,8 +23,8 @@ class CreateContainerLogic extends AbstractControllerLogic
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Created PackingList',
|
||||
'message' => 'You have successfully created a new PackingList'
|
||||
'title' => 'Created Container',
|
||||
'message' => 'You have successfully created a new Container'
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
||||
use App\Classes\Modules\PackingLists\Services\Containers\CreatesContainer;
|
||||
use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanCreateContainer;
|
||||
use App\Classes\Modules\Transports\Services\CreatesTransport;
|
||||
use App\Classes\Modules\Schedules\Services\CreatesSchedule;
|
||||
use App\Classes\Modules\PackingLists\DataTransferObjects\ContainerObject;
|
||||
use App\Classes\Modules\Transports\DataTransferObjects\TransportObject;
|
||||
use App\Classes\Modules\Schedules\DataTransferObjects\ScheduleObject;
|
||||
use App\Classes\Modules\PackingLists\Services\FetchesPackingList;
|
||||
use App\Classes\ValueObjects\Constants\TransportType;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
|
||||
use App\Http\Resources\ContainerResource;
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class CreateLoadContainerLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Created Container',
|
||||
'message' => 'You have successfully created a new Container'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var CanCreateContainer */
|
||||
private $canCreateContainer;
|
||||
|
||||
/** @var FetchesPackingList */
|
||||
private $fetchesPackingList;
|
||||
|
||||
/** @var FetchesCompanyModule */
|
||||
private $fetchesCompanyModule;
|
||||
|
||||
/** @var CreatesPackingList */
|
||||
private $createsContainer;
|
||||
|
||||
/** @var CreatesTransport */
|
||||
private $createsTransport;
|
||||
|
||||
/** @var CreatesSchedule */
|
||||
private $createsSchedule;
|
||||
|
||||
public function __construct(
|
||||
CanCreateContainer $canCreateContainer,
|
||||
FetchesPackingList $fetchesPackingList,
|
||||
FetchesCompanyModule $fetchesCompanyModule,
|
||||
CreatesContainer $createsContainer,
|
||||
CreatesTransport $createsTransport,
|
||||
CreatesSchedule $createsSchedule
|
||||
)
|
||||
{
|
||||
$this->canCreateContainer = $canCreateContainer;
|
||||
$this->fetchesPackingList = $fetchesPackingList;
|
||||
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
||||
$this->createsContainer = $createsContainer;
|
||||
$this->createsTransport = $createsTransport;
|
||||
$this->createsSchedule = $createsSchedule;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
$object = new ContainerObject(
|
||||
$request->input('container_reference'),
|
||||
$request->input('container_number'),
|
||||
$request->input('seal_reference'),
|
||||
$request->input('container_type'),
|
||||
$request->input('status')
|
||||
);
|
||||
|
||||
$company = $this->fetchesCompanyModule->execute(['id' => 2]);
|
||||
|
||||
$this->canCreateContainer->passes($object);
|
||||
|
||||
$container = $this->createsContainer->execute($object, $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]));
|
||||
|
||||
$transportObject = new TransportObject(TransportType::LAND, null, $request->input('tracking'), Carbon::parse($request->input('receive_date')), Carbon::parse($request->input('receive_date')), ApprovalStatus::APPROVED);
|
||||
$transport = $this->createsTransport->execute($transportObject, $container);
|
||||
|
||||
$scheduleObject = new ScheduleObject(Carbon::parse($request->input('receive_date')), Carbon::parse($request->input('receive_date')), ApprovalStatus::APPROVED);
|
||||
$schedule = $this->createsSchedule->execute($transport, $scheduleObject);
|
||||
|
||||
return $this->resourceResponse(new ContainerResource($container));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\PackingLists\Containers;
|
||||
|
||||
use App\Classes\Modules\PackingLists\ControllersLogic\Containers\CreateLoadContainerLogic;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CreateLoadContainerController
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param CreateLoadContainerLogic $logic
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function create(Request $request, CreateLoadContainerLogic $logic): JsonResponse {
|
||||
return $logic->execute($request);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
<template>
|
||||
<div class="row" @keyup.enter="submitForm">
|
||||
<div class="col">
|
||||
<div class="row m-b-20 text-info">
|
||||
<div class="col">
|
||||
<h3 class="text-left">Create Load Container</h3>
|
||||
</div>
|
||||
</div>
|
||||
<error-message-component class="m-b-20" :error="error"></error-message-component>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.receive_date">
|
||||
<label class="text-primary">Receive Date</label>
|
||||
<date-picker-component :parameters="parameters" :value="'receive_date'"></date-picker-component>
|
||||
</validation-wrapper-component>
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.tracking">
|
||||
<label class="text-primary">Tracking</label>
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.tracking">
|
||||
</validation-wrapper-component>
|
||||
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.company_module_id">
|
||||
<label class="text-primary">Company Module</label>
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.company_module_id">
|
||||
</validation-wrapper-component>
|
||||
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.container_reference">
|
||||
<label class="text-primary">Container Reference</label>
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.container_reference">
|
||||
</validation-wrapper-component>
|
||||
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.container_number">
|
||||
<label class="text-primary">Container Number</label>
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.container_number">
|
||||
</validation-wrapper-component>
|
||||
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.seal_reference">
|
||||
<label class="text-primary">Seal Reference</label>
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.seal_reference">
|
||||
</validation-wrapper-component>
|
||||
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.container_type">
|
||||
<label class="text-primary">Container Type</label>
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.container_type">
|
||||
</validation-wrapper-component>
|
||||
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.status">
|
||||
<label class="text-primary">Status</label>
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.status">
|
||||
</validation-wrapper-component>
|
||||
|
||||
<div class="row m-t-15 align-items-center justify-content-center">
|
||||
<div class="col">
|
||||
<div class="btn btn-block btn-lg btn-primary b-rad-none no-border" @click="submitForm">Submit</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import createContainerFormValidation from '../../../general/mixins/containers/validation/createContainerFormValidation';
|
||||
import componentHandler from '../../../general/mixins/componentHandler';
|
||||
import modalFormHandler from '../../../general/mixins/modalFormHandler';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
error: '',
|
||||
parameters: {
|
||||
tracking: this.tracking,
|
||||
receive_date: this.receive_date,
|
||||
company_module_id: this.company_module_id,
|
||||
container_reference: this.container_reference,
|
||||
container_number: this.container_number,
|
||||
seal_reference: this.seal_reference,
|
||||
container_type: this.container_type,
|
||||
status: this.status,
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
submitForm(){
|
||||
this.submit(this.route('api.packing_list.container.create.load'), 'post', this.section, true, true)
|
||||
}
|
||||
},
|
||||
mixins: [createContainerFormValidation, componentHandler, modalFormHandler]
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -12,7 +12,6 @@
|
||||
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.type">
|
||||
<label class="text-primary">Type</label>
|
||||
<select-component :options="[{'id': 0, 'text': 'Carton'}, {'id': 1, 'text': 'Pallet'}]" v-model="parameters.type"></select-component>
|
||||
|
||||
<input type="text" class="form-control fs-12" v-model.trim="parameters.type">
|
||||
</validation-wrapper-component>
|
||||
|
||||
|
||||
@@ -249,18 +249,19 @@
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-2">
|
||||
<div data-type="createShippingPackageList" class="btn btn-sm btn-block bg-white text-info b-rad-sm pointer requestModal">
|
||||
Add
|
||||
</div>
|
||||
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="stick-up" type="createShippingPackageList" size="large">
|
||||
<create-shipping-package-list-form-component :id="order.id" :section="section"></create-shipping-package-list-form-component>
|
||||
</modal-component>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row" v-if="order.origin_warehouse_packages.length">
|
||||
<div class="col">
|
||||
|
||||
<div class="col-12 mb-2">
|
||||
<div data-type="createShippingPackageList" class="btn btn-sm btn-block bg-white text-info b-rad-sm pointer requestModal">
|
||||
Add
|
||||
</div>
|
||||
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="stick-up" type="createShippingPackageList" size="large">
|
||||
<create-shipping-package-list-form-component :id="order.id" :section="section"></create-shipping-package-list-form-component>
|
||||
</modal-component>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" v-for="group in Math.ceil(order.origin_warehouse_packages.length / 2)">
|
||||
<div class="col-12 p-r-0" :class="'col-md-'+(12/2)" v-for="item in order.origin_warehouse_packages.slice((group - 1) * 2, group * 2)" v-bind:key="item.id" :data="item">
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
import { required } from "vuelidate/lib/validators";
|
||||
|
||||
export default {
|
||||
validations: {
|
||||
parameters: {
|
||||
tracking: {
|
||||
required
|
||||
},
|
||||
receive_date: {
|
||||
required
|
||||
},
|
||||
company_module_id: {
|
||||
required
|
||||
},
|
||||
container_reference: {
|
||||
required
|
||||
},
|
||||
container_number: {
|
||||
required
|
||||
},
|
||||
seal_reference: {
|
||||
required
|
||||
},
|
||||
container_type: {
|
||||
required
|
||||
},
|
||||
status: {
|
||||
required
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -23,6 +23,12 @@
|
||||
<div class="col"></div>
|
||||
<div class="col-auto p-r-0">
|
||||
<a href="{{route('orders.refresh')}}"><div class="btn btn-sm btn-warning all-caps b-rad-none pointer"><i class="fa fa-refresh m-r-10"></i>Refresh Orders</div></a>
|
||||
|
||||
<div data-type="createContainer" class="btn btn-sm btn-block bg-white text-info b-rad-sm pointer requestModal">Add</div>
|
||||
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="stick-up" type="createContainer" size="large">
|
||||
<create-load-container-form-component :section="'containerListSection'"></create-load-container-form-component>
|
||||
</modal-component>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@yield('inner_content')
|
||||
|
||||
@@ -14,6 +14,7 @@ Route::group(['namespace' => 'PackingLists', 'as' => 'packing_list.', 'prefix' =
|
||||
Route::get('/{id}/show', 'FetchContainerController@fetch')->name('show');
|
||||
Route::get('/list', 'ListContainersController@list')->name('list');
|
||||
Route::post('/create', 'CreateContainerController@create')->name('create');
|
||||
Route::post('/create/load', 'CreateLoadContainerController@create')->name('create.load');
|
||||
Route::put('/update/{id}', 'UpdateContainerController@update')->name('update');
|
||||
Route::delete('/delete/{id}', 'DeleteContainerController@delete')->name('delete');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user