mirror of
https://gitlab.com/omair-personal/izyim.git
synced 2026-08-19 04:14:05 +00:00
Merge branch 'master' into 'changePassword'
# Conflicts: # routes/web.php
This commit is contained in:
@@ -26,7 +26,7 @@ class ListsCompanyCompleteOrders
|
||||
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
* @throws CannotListCompanyOrderCategoryException
|
||||
*/
|
||||
public function execute(int $id){
|
||||
public function execute(int $id){
|
||||
|
||||
try {
|
||||
/** @var Order $orders */
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: user
|
||||
* Date: 22/03/2019
|
||||
* Time: 10:00 AM
|
||||
*/
|
||||
|
||||
namespace App\Classes\Modules\ControllersLogic\Orders;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\Services\ListsOrder;
|
||||
|
||||
class ListOrderLogic
|
||||
{
|
||||
/** @var ListsOrder
|
||||
* */
|
||||
private $ListOrder;
|
||||
|
||||
/**
|
||||
* ListOrderLogic constructor.
|
||||
* @param ListsOrder $ListOrder
|
||||
*/
|
||||
public function __construct(ListsOrder $ListOrder)
|
||||
{
|
||||
$this->ListOrder = $ListOrder;
|
||||
}
|
||||
|
||||
|
||||
public function execute(String $category){
|
||||
return $this->ListOrder->execute($category);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: user
|
||||
* Date: 25/03/2019
|
||||
* Time: 10:53 AM
|
||||
*/
|
||||
|
||||
namespace App\Classes\Modules\ControllersLogic\Orders;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\Services\SearchesOrder;
|
||||
use App\Classes\ValueObjects\Constants\OrderSteps;
|
||||
use App\Classes\Modules\Companies\Services\FetchCompanyOrderCategorySteps;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SearchOrderLogic
|
||||
{
|
||||
/** @var FetchCompanyOrderCategorySteps */
|
||||
private $fetchCompanyOrderCategorySteps;
|
||||
|
||||
/** @var SearchesOrder */
|
||||
private $searchesOrder;
|
||||
|
||||
/**
|
||||
* SearchOrderLogic constructor.
|
||||
* @param FetchCompanyOrderCategorySteps $fetchCompanyOrderCategorySteps
|
||||
* @param SearchesOrder $searchesOrder
|
||||
*/
|
||||
public function __construct(FetchCompanyOrderCategorySteps $fetchCompanyOrderCategorySteps, SearchesOrder $searchesOrder)
|
||||
{
|
||||
$this->fetchCompanyOrderCategorySteps = $fetchCompanyOrderCategorySteps;
|
||||
$this->searchesOrder = $searchesOrder;
|
||||
}
|
||||
|
||||
|
||||
public function execute(Request $request)
|
||||
{
|
||||
return $this->searchesOrder->execute($request, $request->input('status') ? $this->fetchCompanyOrderCategorySteps->execute($request->input('status')) : []);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: user
|
||||
* Date: 22/03/2019
|
||||
* Time: 10:03 AM
|
||||
*/
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Models\Order;
|
||||
use App\Http\Resources\Order as OrderResource;
|
||||
|
||||
class ListsOrder
|
||||
{
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* ListsOrder constructor.
|
||||
* @param Order $repository
|
||||
*/
|
||||
public function __construct(Order $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
public function execute(String $category){
|
||||
|
||||
//$order = $this->repository->where('complete',1)->paginate(10);
|
||||
|
||||
$category === 'complete' ? $order = $this->repository->where('complete',true)->paginate(10) :
|
||||
$order = $this->repository->where('complete',false)->paginate(10);
|
||||
return OrderResource::collection($order);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: user
|
||||
* Date: 25/03/2019
|
||||
* Time: 10:53 AM
|
||||
*/
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Models\Order;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Http\Resources\Order as OrderResource;
|
||||
|
||||
class SearchesOrder
|
||||
{
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* SearchesOrder constructor.
|
||||
* @param Order $repository
|
||||
*/
|
||||
public function __construct(Order $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
public function execute(Request $request,array $status)
|
||||
{
|
||||
|
||||
$order = $this->repository;
|
||||
|
||||
if($request->input('marking') !== null)
|
||||
{
|
||||
$order = $order->where('marking','LIKE','%'.$request->input('marking').'%');
|
||||
}
|
||||
|
||||
if($request->input('startDate') !== null)
|
||||
{
|
||||
$startDate = Carbon::createFromFormat('d-m-Y', $request->input('startDate'))->format('Y-m-d');
|
||||
$order = $order->where('created_at', '>=', $startDate);
|
||||
}
|
||||
|
||||
if($request->input('endDate') !== null)
|
||||
{
|
||||
$endDate = Carbon::createFromFormat('d-m-Y', $request->input('endDate'))->format('Y-m-d');
|
||||
$order = $order->where('created_at', '<=', $endDate);
|
||||
}
|
||||
|
||||
if(count($status))
|
||||
{
|
||||
$order = $order->whereIn('current_step', $status);
|
||||
}
|
||||
|
||||
$order = $order->paginate(10);
|
||||
return OrderResource::collection($order);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: user
|
||||
* Date: 22/03/2019
|
||||
* Time: 10:00 AM
|
||||
*/
|
||||
|
||||
namespace App\Http\Controllers\Orders;
|
||||
|
||||
|
||||
use App\Classes\Modules\ControllersLogic\Orders\ListOrderLogic;
|
||||
|
||||
class ListOrderController
|
||||
{
|
||||
public function list(String $category,ListOrderLogic $logic){
|
||||
|
||||
return $logic->execute($category);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: user
|
||||
* Date: 25/03/2019
|
||||
* Time: 10:52 AM
|
||||
*/
|
||||
|
||||
namespace App\Http\Controllers\Orders;
|
||||
|
||||
|
||||
use App\Classes\Modules\ControllersLogic\Orders\SearchOrderLogic;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SearchOrderController
|
||||
{
|
||||
public function search(Request $request, SearchOrderLogic $logic)
|
||||
{
|
||||
return $logic->execute($request);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "laravel/laravel",
|
||||
"name": "izyim/izyim",
|
||||
"description": "The Laravel Framework.",
|
||||
"keywords": ["framework", "laravel"],
|
||||
"license": "MIT",
|
||||
|
||||
Vendored
+14
@@ -20,6 +20,9 @@ Vue.component('slide-up-down', SlideUpDown);
|
||||
*/
|
||||
|
||||
//general elements
|
||||
|
||||
Vue.component('order-search-component', require('./components/common/OrdersSearchComponent.vue'));
|
||||
|
||||
Vue.component('loading-component', require('./components/common/LoadingComponent.vue'));
|
||||
Vue.component('pagination-component', require('./components/common/PaginationComponent.vue'));
|
||||
Vue.component('modal-component', require('./components/common/ModalComponent.vue'));
|
||||
@@ -34,6 +37,11 @@ Vue.component('select-component', require('./components/form_elements/SelectComp
|
||||
Vue.component('address-component', require('./components/form_elements/AddressComponent.vue'));
|
||||
|
||||
//lists
|
||||
|
||||
Vue.component('search-order-list-component',require('./components/order/lists/SearchOrdersComponent.vue'));
|
||||
|
||||
Vue.component('invite-account-list-component',require('./components/account/lists/AccountsInviteListComponent.vue'));
|
||||
|
||||
Vue.component('accounts-list-component', require('./components/account/lists/AccountsListComponent.vue'));
|
||||
Vue.component('invite-account-list-component', require('./components/account/lists/AccountsInviteListComponent.vue'));
|
||||
|
||||
@@ -49,6 +57,10 @@ Vue.component('orders-list-component', require('./components/order/lists/OrdersL
|
||||
|
||||
//elements
|
||||
|
||||
Vue.component('search-order-component', require('./components/order/elements/SearchOrderComponent.vue'));
|
||||
|
||||
|
||||
Vue.component('invite-account-component',require('./components/account/elements/AccountInviteComponent.vue'));
|
||||
Vue.component('account-component', require('./components/account/elements/AccountComponent.vue'));
|
||||
Vue.component('invite-account-component', require('./components/account/elements/AccountInviteComponent.vue'));
|
||||
|
||||
@@ -62,6 +74,8 @@ Vue.component('warehouse-profile-component', require('./components/warehouse/ele
|
||||
Vue.component('warehouse-component', require('./components/warehouse/elements/WarehouseComponenet.vue'));
|
||||
Vue.component('warehouse-summary-component', require('./components/warehouse/elements/WarehouseSummaryComponenet.vue'));
|
||||
|
||||
Vue.component('order-page-component', require('./components/order/elements/OrdersPageComponent.vue'));
|
||||
|
||||
Vue.component('order-component', require('./components/order/elements/OrderComponenet.vue'));
|
||||
Vue.component('confirm-order-component', require('./components/order/elements/ConfirmOrderComponent.vue'));
|
||||
Vue.component('receive-step-component', require('./components/order/elements/ReceiveStepComponenet.vue'));
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
//turn on loading animation
|
||||
this.isLoading = true;
|
||||
|
||||
fetch(route('api.account.list') + '?page='+ page).then(response => response.json())
|
||||
fetch(route('api.account.invite.list') + '?page='+ page).then(response => response.json())
|
||||
.then(response => {
|
||||
|
||||
this.accounts = response.data;
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
<template>
|
||||
<div class="row m-t-30">
|
||||
<div class="col-4">
|
||||
<div class="row no-margin">
|
||||
<div class="col bg-white" style="-webkit-box-shadow: 0px 7px 25px -19px rgba(0,0,0,0.75); -moz-box-shadow: 0px 7px 25px -19px rgba(0,0,0,0.75); box-shadow: 0px 7px 25px -30px rgba(0,0,0,0.75);">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row p-t-10 p-b-10 b-b b-grey m-b-15 text-white bg-success hint-text">
|
||||
<div class="col">
|
||||
<small class="bold all-caps">
|
||||
Search Filters
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col">
|
||||
<div class="form-group form-group-default m-b-15" >
|
||||
<label>Order No.</label>
|
||||
<input type="text" class="form-control" v-model="searchOrder.marking">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col">
|
||||
<div class="form-group form-group-default form-group-default-select2 m-b-15" >
|
||||
<label>Status</label>
|
||||
<select-component :options="['All', 'processing', 'receiving', 'shipping']"></select-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<small class="all-caps muted fs-10 bold">Select Date Range</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row p-b-10 p-t-10 bg-white tab-container">
|
||||
<div class="col text-master">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col p-r-5">
|
||||
<div class="form-group form-group-default" >
|
||||
<label>Start Date</label>
|
||||
<date-picker-component class="form-control" v-model="searchOrder.startDate" name="start_date" v-on:updateDate="setStartDate($event)"></date-picker-component>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col p-l-5">
|
||||
<div class="form-group form-group-default" >
|
||||
<label>End Date</label>
|
||||
<date-picker-component class="form-control" v-model="searchOrder.endDate" name="end_date" v-on:updateDate="setEndDate($event)"></date-picker-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row p-b-10">
|
||||
<div class="col">
|
||||
<div class="btn btn-sm btn-block b-success text-success all-caps bold" @click="searchOrders()">
|
||||
Search Orders
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row p-b-15">
|
||||
<div class="col">
|
||||
<div class="btn btn-sm btn-block bg-white b-grey all-caps muted" @click="clearForm()">
|
||||
<span>Clear</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card no-border bg-transparent">
|
||||
<div class="row" v-show="this.searchActive">
|
||||
<div class="col">
|
||||
<div class="relative" style="min-height: 300px">
|
||||
<loading-component v-show="isLoading"></loading-component>
|
||||
<div class="row" v-if="!orders.length && isLoading === false">
|
||||
<div class="col text-center p-t-30 p-b-30 bg-white">
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<img src="https://static.thenounproject.com/png/10066-200.png" width="60" class="hint-text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="bold all-caps p-t-15 fs-12 text-primary">No orders found</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<small class="all-caps fs-10 muted">No orders matching your criteria</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<order-component v-for="order in orders" v-bind:key="order.id" :data="order"></order-component>
|
||||
<pagination-component class="m-b-20" ref="pagination" v-on:changePage="searchOrders($event)"></pagination-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content bg-transparent p-l-0 p-r-0" v-show="!this.searchActive">
|
||||
<div class="tab-pane active" id="orders">
|
||||
<ul class="nav nav-tabs nav-tabs-simple" role="tablist" data-init-reponsive-tabs="dropdownfx">
|
||||
<li>
|
||||
<a class="active" data-toggle="tab" href="#processing">
|
||||
Processing
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-toggle="tab" href="#completed">
|
||||
Completed
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content bg-transparent p-l-0 p-r-0">
|
||||
<div class="tab-pane active" id="processing">
|
||||
<orders-list-component type="forwarder" category="processing"></orders-list-component>
|
||||
</div>
|
||||
<div class="tab-pane" id="completed">
|
||||
<orders-list-component type="forwarder" category="complete"></orders-list-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data(){
|
||||
return {
|
||||
searchOrder: {
|
||||
marking: null,
|
||||
// status: 'All',
|
||||
startDate: null,
|
||||
endDate: null
|
||||
},
|
||||
orders: [],
|
||||
searchActive: false,
|
||||
isLoading: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
searchOrders(page = 1){
|
||||
//turn on loading animation
|
||||
this.isLoading = true;
|
||||
fetch(route('api.order.search') + '?page='+ page, {
|
||||
method: 'post',
|
||||
body: JSON.stringify(this.searchOrder),
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json())
|
||||
.then(response => {
|
||||
this.orders = response.data;
|
||||
this.searchActive = true;
|
||||
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
this.$refs.pagination.makePagination(response.meta, response.links);
|
||||
|
||||
})
|
||||
},
|
||||
setStartDate(date){
|
||||
this.searchOrder.startDate = date;
|
||||
},
|
||||
setEndDate(date){
|
||||
this.searchOrder.endDate = date;
|
||||
},
|
||||
clearForm(){
|
||||
this.searchOrder = {
|
||||
marking: '',
|
||||
startDate: '',
|
||||
endDate: ''
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -36,7 +36,7 @@
|
||||
},
|
||||
'id': {
|
||||
type: String,
|
||||
required: true
|
||||
required: false
|
||||
},
|
||||
'category': {
|
||||
type: String,
|
||||
@@ -68,6 +68,10 @@
|
||||
url = route('api.warehouse.order.list', {id: this.id, category: this.category});
|
||||
}
|
||||
|
||||
if(this.type === 'forwarder'){
|
||||
url = route('api.order.list', {category: this.category});
|
||||
}
|
||||
|
||||
fetch(url + '?page='+ page)
|
||||
.then(response => response.json())
|
||||
.then(response => {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
@extends('layouts.base_portal')
|
||||
|
||||
@section('inner_content')
|
||||
<order-page-component></order-page-component>
|
||||
@endsection
|
||||
@@ -13,7 +13,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{route('dashboard')}}" class="b-r b-grey">
|
||||
<a href="{{route('order')}}" class="b-r b-grey">
|
||||
<div class="inline v-align-middle">
|
||||
<span class="block m-b-5 lh-13 fs-12 semi-bold">Orders</span>
|
||||
<span class="block muted lh-11 fs-10 all-caps">Manage & Track</span>
|
||||
|
||||
@@ -19,6 +19,8 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
|
||||
Route::group(['prefix' => 'account', 'as' => 'account.', 'namespace' => 'Account'], function () {
|
||||
Route::get('/list', 'ListUserController@list')->name('list');
|
||||
Route::post('/create', 'RegisterAccountController@register')->name('create');
|
||||
Route::post('/update/{id}', 'UpdateUserController@update')->name('update');
|
||||
|
||||
Route::group(['prefix' => 'invite', 'as' => 'invite.'], function () {
|
||||
Route::post('/invite', 'InviteUserController@invite')->name('create');
|
||||
Route::get('/list/active', 'ListUserController@list')->name('list');
|
||||
@@ -126,6 +128,9 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
|
||||
Route::post('/{orderId}/shipping-arrangement', 'OrderController@orderShippingArrangement')->name('shipping.arrangement.create');
|
||||
Route::post('/{orderId}/shipping-arrangement/reschedule', 'OrderController@rescheduleShipping')->name('shipping.arrangement.reschedule');
|
||||
|
||||
Route::get('/list/{category}', 'ListOrderController@list')->name('list');
|
||||
|
||||
Route::post('/search','SearchOrderController@search')->name('search');
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -54,6 +54,10 @@ Route::group(['middleware' => ['secure', 'clearcache']], function (): void {
|
||||
return view('pages.orders.profile');
|
||||
})->name('order.profile');
|
||||
|
||||
Route::get('/order', function(){
|
||||
return view('pages.orders.index');
|
||||
})->name('order');
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user