finalize last mile delivery

This commit is contained in:
omair saleh
2022-04-04 19:40:54 +08:00
parent bf4830ba7a
commit f96fef94fe
8 changed files with 50 additions and 101 deletions
@@ -2,10 +2,14 @@
namespace Database\Seeders;
use App\Classes\Modules\Accounts\DataTransferObjects\RegistrationObject;
use App\Classes\Modules\Accounts\Services\CreatesUser;
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
use App\Classes\Modules\Addresses\Processors\CreateAddressFromOldAddressProcessor;
use App\Classes\Modules\Addresses\Services\CreatesAddress;
use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject;
use App\Classes\Modules\Companies\DataTransferObjects\EmploymentObject;
use App\Classes\Modules\Companies\Processors\AssignEmployeeProcessor;
use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor;
use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor;
use App\Classes\Modules\Companies\Services\ApprovesCompanyConnection;
@@ -20,7 +24,9 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\CompanyType;
use App\Classes\ValueObjects\Constants\BusinessType;
use App\Classes\ValueObjects\Constants\RoleTypes;
use App\Models\CompanyModule;
use App\Models\User;
use Illuminate\Database\Seeder;
use App\Models\Company;
@@ -58,8 +64,14 @@ class LastMileDeliveryTableSeeder extends Seeder
/** @var CreatesContact */
private $createsContact;
/** @var CreatesUser */
private $createsUser;
/** @var AssignEmployeeProcessor */
private $assignEmployeeProcessor;
/**
* CompaniesTableSeeder constructor.
* LastMileDeliveryTableSeeder constructor.
* @param CreateCompanyProcessor $createCompanyProcessor
* @param UpdatesCompanyStatus $updatesCompanyStatus
* @param CreateCompanyModuleProcessor $createCompanyModuleProcessor
@@ -70,8 +82,10 @@ class LastMileDeliveryTableSeeder extends Seeder
* @param CreatesAddress $createsAddress
* @param CreatesCompany $createsCompany
* @param CreatesContact $createsContact
* @param CreatesUser $createsUser
* @param AssignEmployeeProcessor $assignEmployeeProcessor
*/
public function __construct(CreateCompanyProcessor $createCompanyProcessor, UpdatesCompanyStatus $updatesCompanyStatus, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, CreateAddressFromOldAddressProcessor $createAddressFromOldAddressProcessor, CreatesAddress $createsAddress, CreatesCompany $createsCompany, CreatesContact $createsContact)
public function __construct(CreateCompanyProcessor $createCompanyProcessor, UpdatesCompanyStatus $updatesCompanyStatus, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, CreateAddressFromOldAddressProcessor $createAddressFromOldAddressProcessor, CreatesAddress $createsAddress, CreatesCompany $createsCompany, CreatesContact $createsContact, CreatesUser $createsUser, AssignEmployeeProcessor $assignEmployeeProcessor)
{
$this->createCompanyProcessor = $createCompanyProcessor;
$this->updatesCompanyStatus = $updatesCompanyStatus;
@@ -83,6 +97,8 @@ class LastMileDeliveryTableSeeder extends Seeder
$this->createsAddress = $createsAddress;
$this->createsCompany = $createsCompany;
$this->createsContact = $createsContact;
$this->createsUser = $createsUser;
$this->assignEmployeeProcessor = $assignEmployeeProcessor;
}
@@ -116,6 +132,14 @@ class LastMileDeliveryTableSeeder extends Seeder
$contact = new ContactObject('Office Number', '0182909252', '', '');
$this->createsContact->execute($companyModule, $contact);
$user_object = new RegistrationObject('Winson', 'admin@last-mile-delivery.com', '1234567abcabc', '1234567abcabc', RoleTypes::USER, ApprovalStatus::APPROVED);
/** @var User $user */
$user = $this->createsUser->execute($user_object);
$Object = new EmploymentObject($companyModule, $user);
$this->assignEmployeeProcessor->execute($Object);
continue;
}
@@ -52,8 +52,7 @@
</div>
</div>
</div>
<delivery-orders-table-section-component></delivery-orders-table-section-component>
<!--<order-section-component :data="company"></order-section-component>-->
<delivery-orders-table-section-component :data="company"></delivery-orders-table-section-component>
</div>
</div>
</div>
@@ -64,9 +63,6 @@
</template>
<script>
export default {
// components: {
// Vuetable
// },
props: {
company_id: {
type: Number,
@@ -4,7 +4,7 @@
<loading-component style="height: 200px; top: 0;" key="1" color="success" v-show="$store.getters.isLoading(section)"></loading-component>
<div class="row" v-show="!$store.getters.isLoading(section)">
<div class="col">
<div class="row m-b-15">
<div class="row m-b-15" v-if="$store.getters.getCompanyModuleType === 8">
<div class="col-auto p-r-5">
<a :href="route('last_mile_delivery.order.export')" target="_blank">
<button type="button" class="btn btn-sm btn-block p-t-10 p-b-10 p-r-35 p-l-35 btn-complete b-rad-none">
@@ -46,7 +46,7 @@
<tbody>
<tr v-for="data in $store.getters.getListData(section)">
<th scope="col"><input type="checkbox" /></th>
<td><a :href="'https://www.tracking.my/lineclear/'+data.reference" target="_blank">{{data.reference}}</a></td>
<td>{{data.reference}}<a :href="'https://www.tracking.my/lineclear/'+data.reference" target="_blank"><div class="btn btn-xs btn-success m-l-10">Track <i class="fa fa-angle-right m-l-5"></i></div></a></td>
<td>{{data.company_module.marking}}</td>
<td>Walk In</td>
<td>{{data.packingList.type === 0 ? 'Package' : data.packingList.type === 1 ? 'Pallet' : 'Documents'}}</td>
@@ -80,17 +80,25 @@
</div>
</template>
<script>
import componentHandler from '../../../general/mixins/componentHandler';
export default {
data(){
return {
section: 'ListOrderTableSection',
emptyListSection: false,
filters: {
filters: this.data ? {
company_module_id: this.data.company_module.id,
per_page: 20,
order_by: {
column: 'id',
DESC: true,
},
} : {
per_page: 100,
order_by: {
column: 'id',
DESC: true,
}
},
metaData: {
from: null,
@@ -121,56 +129,12 @@
let listDecorators = this.$store.getters.getListDetails(this.section);
this.submit(this.route('api.delivery.order.list') + '?page=' + listDecorators.page + '&filters=' + JSON.stringify(listDecorators.filters), 'get', this.section, false, false)
},
updateOrderBy(field) {
field === this.filters.order_by.column ? this.filters.order_by.DESC = !this.filters.order_by.DESC : '';
this.filters.order_by.column = field;
this.updateFilters(this.filters);
},
updateOrderStatusFilter(status) {
this.orderStatusFilterDropDownStatus = false;
this.orderStatus = status;
switch(status) {
case 'Active':
this.filters.status_in = [2];
break;
case 'Complete':
this.filters.status_in = [3];
break;
case 'Pending Verification':
this.filters.status_in = [1];
break;
case 'Cancelled':
this.filters.status_in = [4, 5, 6];
break;
}
this.updateFilters(this.filters);
},
updatePerPageFilter(number) {
this.perPageFilterDropDownStatus = false;
this.filters.per_page = parseInt(number);
this.updateFilters(this.filters);
},
updateFilters(filters){
this.filters = filters;
this.setDecoratorDefault();
this.submit(this.route('api.delivery.order.list') + '?page=' + this.metaData.current_page + '&filters=' + JSON.stringify(this.filters), 'get', this.section, false, false)
},
successHandler(response){
this.$store.dispatch('completeList', {'name': this.section, 'data': response.payload.data});
this.$refs.pagination.makePagination(response.payload.meta, response.payload.links);
this.metaData = response.payload.meta;
},
resetFilter() {
this.filters.order_by.column = 'id';
this.filters.order_by.DESC = false;
this.filters.reference_like = '';
this.updateFilters(this.filters);
},
}
}
},
mixins: [componentHandler]
}
</script>
+2 -2
View File
@@ -1,8 +1,8 @@
export default {
methods: {
routesGuard(){
(!this.$store.getters.isAuthenticated && this.isProtectedRoute()&& this.isWithTokenRoute()) ? window.location.href = this.route('login') : '';
(this.$store.getters.isAuthenticated && !this.isProtectedRoute()&& this.isWithTokenRoute()) ? window.location.href = this.route('dashboard') : '';
(!this.$store.getters.isAuthenticated && this.isProtectedRoute()&& this.isWithTokenRoute()) ? window.location.href = window.location.href.indexOf(this.route('last_mile_delivery.login')) === 0 ? this.route('last_mile_delivery.login') : this.route('login') : '';
(this.$store.getters.isAuthenticated && !this.isProtectedRoute()&& this.isWithTokenRoute()) ? window.location.href = [7, 8].includes(this.$store.getters.getCompanyModuleType) ? this.route('last_mile_delivery.dashboard') : this.route('dashboard') : '';
},
isProtectedRoute(){
const unprotectedRoutes = [this.route('login'), this.route('account.email.verification'), this.route('company.claim'), this.route('last_mile_delivery.login')];
+2 -3
View File
@@ -10,9 +10,8 @@ export default {
'Authorization': 'Bearer '+getters.getAccessToken
}
}).then(response => {
if(response.status === 401 && window.location.href !== route('login')){
dispatch('userAuthentication', {access_token: '', redirect_url: '/'});
if(response.status === 401 && (window.location.href !== route('login') || window.location.href.indexOf(this.route('last_mile_delivery.login')) <= -1)){
dispatch('userAuthentication', {access_token: '', redirect_url: [7, 8].includes(getters.getCompanyModuleType) ? route('last_mile_delivery.login') : route('login')});
}
return response;
+3 -37
View File
@@ -1,42 +1,8 @@
<div class="row d-none" :class="[{'d-flex': $store.getters.isAdmin}]" v-if="$store.getters.isAdmin">
<div class="row d-none" :class="[{'d-flex': $store.getters.getCompanyModuleType === 8}]" v-if="$store.getters.getCompanyModuleType === 8">
<div class="col">
<div class="row">
<div class="col-6">
<div class="row p-b-5 b-b b-grey m-b-10 m-l-0 m-r-0">
<div class="col no-padding">
<h6>Orders List</h6>
</div>
</div>
<div class="row m-l-0 m-r-0">
<div class="col">
<list-component key="2" section="customerWithoutConfirmedOrdersListSection" :endpoint="route('api.company.list')" :options="{'has_business_module_type': 1, 'created_after': '18-09-2021','without_confirmed_orders': true}">
<template slot="list" slot-scope="{data}">
<company-component :data="data"></company-component>
</template>
</list-component>
<list-component section="searchOrderListSection" :endpoint="route('api.order.list')" :options="{reference_like:query, with_packing_lists: true}" :columns=3 v-if="$store.getters.isShowing('searchOrderSection')">
<template slot="list" slot-scope="{data}">
<order-component :data="data"></order-component>
</template>
</list-component>
</div>
</div>
</div>
<div class="col-6">
<div class="row p-b-5 b-b b-grey m-b-10 m-l-0 m-r-0">
<div class="col no-padding">
<h6>Customers List</h6>
</div>
</div>
<div class="row m-l-0 m-r-0">
<div class="col">
<list-component key="2" section="customerListSection" :endpoint="route('api.company.list')" :options="{'has_business_module_type': 1}">
<template slot="list" slot-scope="{data}">
<company-component :data="data"></company-component>
</template>
</list-component>
</div>
</div>
<div class="col">
<delivery-orders-table-section-component></delivery-orders-table-section-component>
</div>
</div>
</div>
@@ -1,4 +1,4 @@
<div class="row d-none" :class="[{'d-flex': !$store.getters.isAdmin}]" v-if="!$store.getters.isAdmin">
<div class="row d-none" :class="[{'d-flex': $store.getters.getCompanyModuleType === 7}]" v-if="$store.getters.getCompanyModuleType === 7">
<div class="col">
<delivery-customer-profile-section-component :company_id="$store.getters.getCompanyId"></delivery-customer-profile-section-component>
</div>
@@ -1,5 +1,5 @@
@extends('layouts.base_portal')
@section('inner_content')
@include('pages.delivery.customers')
@include('pages.delivery.customer')
@include('pages.delivery.admin')
@endsection