diff --git a/app/Classes/General/Eloquent/Filters/HasMorphCompanyModule.php b/app/Classes/General/Eloquent/Filters/HasMorphCompanyModule.php new file mode 100644 index 00000000..ad80e9d0 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/HasMorphCompanyModule.php @@ -0,0 +1,23 @@ +whereHasMorph('owner', ['App\Models\CompanyModule'], function ($query) use($value) { + $query->where('id',$value); + }); + } +} diff --git a/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php index e8d432b8..d746ac31 100644 --- a/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php +++ b/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php @@ -8,7 +8,7 @@ use App\Classes\Modules\Addresses\Services\CreatesAddress; use App\Classes\Modules\Addresses\Services\FetchesDistrict; use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress; use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; -use App\Classes\Modules\Companies\Services\FetchesCompany; +use App\Classes\Modules\Companies\Services\FetchesCompanyModule; use App\Http\Resources\AddressResource; use ErrorException; use Illuminate\Http\JsonResponse; @@ -33,8 +33,8 @@ class CreateAddressLogic extends AbstractControllerLogic /** @var FetchesDistrict */ private $fetchesDistrict; - /** @var FetchesCompany */ - private $fetchesCompany; + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; /** @var CreatesAddress */ private $createsAddress; @@ -43,14 +43,14 @@ class CreateAddressLogic extends AbstractControllerLogic * CreateAddressLogic constructor. * @param CanCreateAddress $canCreateAddress * @param FetchesDistrict $fetchesDistrict - * @param FetchesCompany $fetchesCompany + * @param FetchesCompanyModule $fetchesCompanyModule * @param CreatesAddress $createsAddress */ - public function __construct(CanCreateAddress $canCreateAddress, FetchesDistrict $fetchesDistrict, FetchesCompany $fetchesCompany, CreatesAddress $createsAddress) + public function __construct(CanCreateAddress $canCreateAddress, FetchesDistrict $fetchesDistrict, FetchesCompanyModule $fetchesCompanyModule, CreatesAddress $createsAddress) { $this->canCreateAddress = $canCreateAddress; $this->fetchesDistrict = $fetchesDistrict; - $this->fetchesCompany = $fetchesCompany; + $this->fetchesCompanyModule = $fetchesCompanyModule; $this->createsAddress = $createsAddress; } @@ -70,10 +70,10 @@ class CreateAddressLogic extends AbstractControllerLogic $this->canCreateAddress->passes($object); - $query = $this->createsAddress->execute($this->fetchesCompany->execute(['id' => $request->input('company_id')]), $object); + $query = $this->createsAddress->execute($this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]), $object); return $this->resourceResponse(new AddressResource($query)); } -} +} \ No newline at end of file diff --git a/app/Classes/Modules/Addresses/Services/CreatesAddress.php b/app/Classes/Modules/Addresses/Services/CreatesAddress.php index e6a7b8b3..0e650f07 100644 --- a/app/Classes/Modules/Addresses/Services/CreatesAddress.php +++ b/app/Classes/Modules/Addresses/Services/CreatesAddress.php @@ -6,7 +6,7 @@ use App\Classes\General\Eloquent\AbstractUpdateRecord; use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; use App\Models\Address; -use App\Models\Company; +use App\Models\CompanyModule; class CreatesAddress extends AbstractUpdateRelationshipRecord { @@ -17,7 +17,7 @@ class CreatesAddress extends AbstractUpdateRelationshipRecord * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute(Company $company, AddressObject $object) { + public function execute(CompanyModule $companyModule, AddressObject $object) { $model = new Address(); $model->street_one = $object->getStreetOne(); $model->street_two = $object->getStreetTwo(); @@ -26,7 +26,7 @@ class CreatesAddress extends AbstractUpdateRelationshipRecord $model->district_id = $object->getDistrictId(); $model->postcode = $object->getPostCode(); - return $this->handler($company->addresses(), $model); + return $this->handler($companyModule->addresses(), $model); } } \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/FetchesCompanyModule.php b/app/Classes/Modules/Companies/Services/FetchesCompanyModule.php new file mode 100644 index 00000000..f04d39cc --- /dev/null +++ b/app/Classes/Modules/Companies/Services/FetchesCompanyModule.php @@ -0,0 +1,34 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php new file mode 100644 index 00000000..bf960049 --- /dev/null +++ b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php @@ -0,0 +1,55 @@ + 'Retrieved Orders', + 'message' => 'You have successfully retrieved a list of Orders' + ]; + } + + /** @var CanListOrders */ + private $canListOrders; + + /** @var ListsOrders */ + private $listsOrders; + + /** + * ListOrdersLogic constructor. + * @param CanListOrders $canListOrders + * @param ListsOrders $listsOrders + */ + public function __construct(CanListOrders $canListOrders, ListsOrders $listsOrders) + { + $this->canListOrders = $canListOrders; + $this->listsOrders = $listsOrders; + } + + public function logic(Request $request) : JsonResponse + { + $this->canListOrders->passes(); + + $query = $this->listsOrders->execute($this->listsOrders->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(OrderResource::collection($query)); + + } + + + +} diff --git a/app/Classes/Modules/Orders/Services/ListsOrders.php b/app/Classes/Modules/Orders/Services/ListsOrders.php new file mode 100644 index 00000000..8b9c835b --- /dev/null +++ b/app/Classes/Modules/Orders/Services/ListsOrders.php @@ -0,0 +1,31 @@ +repository = $repository; + } + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanListOrders.php b/app/Classes/Modules/Orders/Standards/Rules/CanListOrders.php new file mode 100644 index 00000000..b7d48485 --- /dev/null +++ b/app/Classes/Modules/Orders/Standards/Rules/CanListOrders.php @@ -0,0 +1,40 @@ +execute($request); + } +} diff --git a/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue b/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue index de1c6443..e38ac3bf 100644 --- a/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue @@ -53,6 +53,7 @@ }, successHandler(){ this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: this.route('login')}); + this.$store.dispatch('updateIfCreateNewOrder',''); }, errorHandler(){ this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: this.route('login')}); diff --git a/resources/assets/vue/components/address/forms/AddressFormComponent.vue b/resources/assets/vue/components/address/forms/AddressFormComponent.vue new file mode 100644 index 00000000..6bd8840d --- /dev/null +++ b/resources/assets/vue/components/address/forms/AddressFormComponent.vue @@ -0,0 +1,128 @@ + + diff --git a/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue b/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue index d30fdbaf..c03f3507 100644 --- a/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue +++ b/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue @@ -2,7 +2,7 @@
-
+
diff --git a/resources/assets/vue/components/orders/elements/orderInstructionComponent.vue b/resources/assets/vue/components/orders/elements/orderInstructionComponent.vue new file mode 100644 index 00000000..1fd8c06d --- /dev/null +++ b/resources/assets/vue/components/orders/elements/orderInstructionComponent.vue @@ -0,0 +1,63 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/elements/orderListComponent.vue b/resources/assets/vue/components/orders/elements/orderListComponent.vue new file mode 100644 index 00000000..3ff056a8 --- /dev/null +++ b/resources/assets/vue/components/orders/elements/orderListComponent.vue @@ -0,0 +1,101 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/forms/selectAddressComponent.vue b/resources/assets/vue/components/orders/forms/selectAddressComponent.vue new file mode 100644 index 00000000..b17e5c83 --- /dev/null +++ b/resources/assets/vue/components/orders/forms/selectAddressComponent.vue @@ -0,0 +1,86 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/forms/selectWarehouseComponent.vue b/resources/assets/vue/components/orders/forms/selectWarehouseComponent.vue new file mode 100644 index 00000000..1480b515 --- /dev/null +++ b/resources/assets/vue/components/orders/forms/selectWarehouseComponent.vue @@ -0,0 +1,79 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/sections/createOrderComponent.vue b/resources/assets/vue/components/orders/sections/createOrderComponent.vue new file mode 100644 index 00000000..34b365a0 --- /dev/null +++ b/resources/assets/vue/components/orders/sections/createOrderComponent.vue @@ -0,0 +1,151 @@ + + diff --git a/resources/assets/vue/general/mixins/accounts/validation/createOrderFormValidation.js b/resources/assets/vue/general/mixins/accounts/validation/createOrderFormValidation.js new file mode 100644 index 00000000..99e88049 --- /dev/null +++ b/resources/assets/vue/general/mixins/accounts/validation/createOrderFormValidation.js @@ -0,0 +1,14 @@ +import { required, email, numeric, sameAs, requiredUnless, requiredIf } from "vuelidate/lib/validators"; +import authenticationHandler from '../authenticationHandler' +export default { + validations: { + parameters: { + warehouse_id: { + required: requiredIf(function () { return this.step === 2 }) + }, + address_id: { + required:requiredIf(function () { return this.step === 3}) + }, + } + }, +} \ No newline at end of file diff --git a/resources/assets/vue/vuex/modules/order.js b/resources/assets/vue/vuex/modules/order.js new file mode 100644 index 00000000..ec98bd9d --- /dev/null +++ b/resources/assets/vue/vuex/modules/order.js @@ -0,0 +1,26 @@ +export default { + state: { + orderExist:localStorage.getItem('new-order') || 0, + }, + getters: { + orderExist: (state, getters) => getters.getOrder > 0 || state.orderExist, + }, + mutations: { + UPDATE_IF_NEW_ORDER(state){ + state.orderExist = 0; + }, + }, + actions: { + updateIfCreateNewOrder(store ,order){ + localStorage.setItem('new-order', order); + store.commit('UPDATE_IF_NEW_ORDER'); + }, + showCreateOrderForm(store){ + store.dispatch('toggleSection', {name: 'createOrderForm', status: true}) + }, + showOrderList(store){ + store.dispatch('toggleSection', {name: 'orderList', status: true}) + store.dispatch('toggleSection', {name: 'createOrderForm', status: false}) + }, + } +} \ No newline at end of file diff --git a/resources/assets/vue/vuex/store.js b/resources/assets/vue/vuex/store.js index 2c3d911b..15339f90 100644 --- a/resources/assets/vue/vuex/store.js +++ b/resources/assets/vue/vuex/store.js @@ -6,6 +6,7 @@ import createNotification from './modules/createNotification' import crudRequest from './modules/crudRequest' import authentication from './modules/authentication' import loadRequestQueue from './modules/loadRequestQueue' +import order from './modules/order' Vue.use(Vuex); @@ -16,6 +17,7 @@ export default new Vuex.Store({ loadRequestQueue, createNotification, crudRequest, - authentication + authentication, + order } }) \ No newline at end of file diff --git a/resources/views/pages/addresses/index.blade.php b/resources/views/pages/addresses/index.blade.php new file mode 100644 index 00000000..5bf256c2 --- /dev/null +++ b/resources/views/pages/addresses/index.blade.php @@ -0,0 +1,4 @@ +@extends('layouts.base_portal') +@section('inner_content') + {{-- @include('pages.dashboards.customer') --}} +@endsection \ No newline at end of file diff --git a/resources/views/pages/dashboards/customer.blade.php b/resources/views/pages/dashboards/customer.blade.php index c5e842c2..c5d7c3a8 100644 --- a/resources/views/pages/dashboards/customer.blade.php +++ b/resources/views/pages/dashboards/customer.blade.php @@ -1,5 +1,5 @@
- +
\ No newline at end of file diff --git a/resources/views/pages/dashboards/index.blade.php b/resources/views/pages/dashboards/index.blade.php index 039ab52c..d7430c5c 100644 --- a/resources/views/pages/dashboards/index.blade.php +++ b/resources/views/pages/dashboards/index.blade.php @@ -1,92 +1,94 @@ @extends('layouts.base_portal') @section('inner_content') -

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

-

TEWTASE

- + @include('pages.dashboards.customer') + @endsection \ No newline at end of file diff --git a/resources/views/pages/orders/index.blade.php b/resources/views/pages/orders/index.blade.php new file mode 100644 index 00000000..3808538d --- /dev/null +++ b/resources/views/pages/orders/index.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.base_portal') +@section('inner_content') + + + + + + +@endsection \ No newline at end of file diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php index 7f220dfc..7d319ea0 100644 --- a/resources/views/partials/menu.blade.php +++ b/resources/views/partials/menu.blade.php @@ -22,7 +22,7 @@ style=" fill:#4a90e2;">
-
Dashboard
+
Dashboard
@@ -33,7 +33,7 @@ style=" fill:#4a90e2;">
-
My Orders
+
My Orders
@@ -55,7 +55,7 @@ style=" fill:#4a90e2;">
-
My Addresses
+
My Addresses
diff --git a/routes/order.php b/routes/order.php index 04d6b8ef..790c34d7 100644 --- a/routes/order.php +++ b/routes/order.php @@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Route; Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], function () { #Route::get('/{id}/show', 'FetchOrderController@fetch')->name('show'); - #Route::get('/list', 'ListOrdersController@list')->name('list'); + Route::get('/list', 'ListOrdersController@list')->name('list'); Route::post('/create', 'CreateOrderController@create')->name('create'); Route::put('/confirm/{id}', 'ConfirmOrderController@confirm')->name('confirm'); #Route::put('/update/{id}', 'UpdateOrderController@update')->name('update'); diff --git a/routes/web.php b/routes/web.php index 6fc5897b..93cf6d4f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -43,3 +43,11 @@ Route::get('/account/password/reset/{token}', function ($token) { Route::get('/dashboard', function () { return view('pages.dashboards.index'); })->name('dashboard'); + +Route::get('/order', function () { + return view('pages.orders.index'); +})->name('order'); + +Route::get('/address', function () { + return view('pages.addresses.index'); +})->name('address');