mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/izyim.git
synced 2026-08-19 04:24:00 +00:00
Major incomplete Change
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
namespace App\Classes\Modules\Accounts\Services;
|
||||
|
||||
use App\Classes\Modules\Accounts\DataTransferObjects\UserObject;
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateUserException;
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException;
|
||||
use App\Classes\Modules\ControllerLogic\Exceptions\ResourceConflictException;
|
||||
use App\Models\User;
|
||||
use App\Traits\DeterminesIfUserPasswordMatchesRequirements;
|
||||
@@ -34,7 +34,7 @@ class CreatesUserAccount {
|
||||
* @param UserObject $object
|
||||
*
|
||||
* @return User
|
||||
* @throws CannotCreateUserException
|
||||
* @throws CannotCreateOrderException
|
||||
*/
|
||||
public function execute(UserObject $object): ?User {
|
||||
|
||||
@@ -60,8 +60,7 @@ class CreatesUserAccount {
|
||||
return $user;
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
dd($exception);
|
||||
throw new CannotCreateUserException($exception->getMessage());
|
||||
throw new CannotCreateOrderException($exception->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,10 @@ namespace App\Classes\Modules\ControllersLogic\Accounts;
|
||||
|
||||
use App\Classes\Modules\Accounts\DataTransferObjects\UserInvitationObject;
|
||||
use App\Classes\Modules\Accounts\DataTransferObjects\UserObject;
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateUserException;
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException;
|
||||
use App\Classes\Modules\Accounts\Services\CreatesUserAccount;
|
||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||
use App\Classes\Modules\ControllerLogic\Exceptions\MalformedRequestException;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
use App\Events\Accounts\UserHasRegistered;
|
||||
use App\Models\UserInvitation;
|
||||
use App\Traits\DeterminesIfUserPasswordMatchesRequirements;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
@@ -74,7 +72,7 @@ class RegisterAccountLogic
|
||||
|
||||
return redirect()->route('dashboard');
|
||||
|
||||
} catch (CannotCreateUserException $exception) {
|
||||
} catch (CannotCreateOrderException $exception) {
|
||||
throw new InternalServerErrorException("Failed to create user because {$exception->getMessage()}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\ControllersLogic\Orders;
|
||||
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotConfirmOrderException;
|
||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\Services\ConfirmsOrder;
|
||||
use App\Classes\Modules\Orders\Services\SetsOrderWarehouse;
|
||||
use App\Classes\Modules\Orders\Services\UpdatesOrderSteps;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
use App\Models\Order;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ConfirmOrderLogic
|
||||
{
|
||||
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
|
||||
|
||||
/** @var ConfirmsOrder */
|
||||
private $confirmOrder;
|
||||
|
||||
/** @var UpdatesOrderSteps */
|
||||
private $updatesOrderSteps;
|
||||
|
||||
/**
|
||||
* ConfirmOrderLogic constructor.
|
||||
* @param Order $repository
|
||||
* @param SetsOrderWarehouse $setOrderWarehouse
|
||||
* @param ConfirmsOrder $confirmOrder
|
||||
* @param UpdatesOrderSteps $updatesOrderSteps
|
||||
*/
|
||||
public function __construct(Order $repository, SetsOrderWarehouse $setOrderWarehouse, ConfirmsOrder $confirmOrder, UpdatesOrderSteps $updatesOrderSteps)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
$this->setOrderWarehouse = $setOrderWarehouse;
|
||||
$this->confirmOrder = $confirmOrder;
|
||||
$this->updatesOrderSteps = $updatesOrderSteps;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $orderId
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws InternalServerErrorException
|
||||
* @throws \App\Classes\Modules\Accounts\Exceptions\CannotUpdateOrderWarehouseException
|
||||
*/
|
||||
public function execute(int $orderId, Request $request) {
|
||||
|
||||
try {
|
||||
|
||||
$order = $this->repository->findOrFail($orderId);
|
||||
|
||||
$orderObject = new OrderObject($orderId, null, $request->input('warehouse_id'));
|
||||
|
||||
if($orderObject->getWarehouseId()){
|
||||
$this->setOrderWarehouse->execute($orderObject);
|
||||
}
|
||||
|
||||
$this->confirmOrder->execute($orderObject);
|
||||
|
||||
return new JsonResponse("Order has been confirmed", HttpStatus::OK);
|
||||
|
||||
} catch (CannotConfirmOrderException $exception){
|
||||
throw new InternalServerErrorException("Failed to confirm order because {$exception->getMessage()}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\ControllersLogic\Orders;
|
||||
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException;
|
||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\Services\CreatesOrder;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CreateOrderLogic
|
||||
{
|
||||
|
||||
/** @var CreatesOrder */
|
||||
private $createOrder;
|
||||
|
||||
/**
|
||||
* CreateOrderLogic constructor.
|
||||
* @param CreatesOrder $createOrder
|
||||
*/
|
||||
public function __construct(CreatesOrder $createOrder)
|
||||
{
|
||||
$this->createOrder = $createOrder;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $companyId
|
||||
* @param Request $request
|
||||
* @return \App\Models\Order|null
|
||||
* @throws InternalServerErrorException
|
||||
*/
|
||||
public function execute(int $companyId, Request $request) {
|
||||
try {
|
||||
|
||||
$order = new OrderObject($request->input('marking'), $companyId);
|
||||
|
||||
return $this->createOrder->execute($order);
|
||||
|
||||
} catch (CannotCreateOrderException $exception){
|
||||
throw new InternalServerErrorException("Failed to create order because {$exception->getMessage()}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\ControllersLogic\Orders;
|
||||
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException;
|
||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||
use App\Classes\Modules\Orders\Services\CreatesOrder;
|
||||
use App\Classes\Modules\Orders\Services\UpdatesOrderSteps;
|
||||
use App\Models\Order;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UpdateOrderStepLogic
|
||||
{
|
||||
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
/** @var UpdatesOrderSteps */
|
||||
private $updateOrderSteps;
|
||||
|
||||
/**
|
||||
* UpdateOrderStepLogic constructor.
|
||||
* @param Order $repository
|
||||
* @param UpdatesOrderSteps $updateOrderSteps
|
||||
*/
|
||||
public function __construct(Order $repository, UpdatesOrderSteps $updateOrderSteps)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
$this->updateOrderSteps = $updateOrderSteps;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $orderId
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function execute(int $orderId, Request $request) {
|
||||
|
||||
$repository = $this->repository->findOrFail($orderId);
|
||||
|
||||
$orderObject = new OrderObject($orderId);
|
||||
|
||||
$stepObject = new StepObject($repository->current_step);
|
||||
|
||||
return $this->updateOrderSteps->execute($orderObject, $stepObject, $request);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class OrderObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
private $orderId;
|
||||
|
||||
/** @var int|null */
|
||||
private $companyId;
|
||||
|
||||
/** @var int|null */
|
||||
private $warehouseId;
|
||||
|
||||
/**
|
||||
* OrderObject constructor.
|
||||
* @param string $orderId
|
||||
* @param int|null $companyId
|
||||
* @param int|null $warehouseId
|
||||
*/
|
||||
public function __construct(string $orderId, ?int $companyId = null, ?int $warehouseId = null)
|
||||
{
|
||||
$this->orderId = $orderId;
|
||||
$this->companyId = $companyId;
|
||||
$this->warehouseId = $warehouseId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getOrderId(): string
|
||||
{
|
||||
return $this->orderId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCompanyId(): ?int
|
||||
{
|
||||
return $this->companyId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int|null
|
||||
*/
|
||||
public function getWarehouseId(): ?int
|
||||
{
|
||||
return $this->warehouseId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int|null $warehouseId
|
||||
*/
|
||||
public function setWarehouseId(?int $warehouseId): void
|
||||
{
|
||||
$this->warehouseId = $warehouseId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Omair Saleh
|
||||
* Date: 27/2/2019
|
||||
* Time: 3:28 PM
|
||||
*/
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class OrderStepObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
protected $orderId;
|
||||
|
||||
/** @var string */
|
||||
protected $currentStep;
|
||||
|
||||
/** @var null|string */
|
||||
protected $nextStep;
|
||||
|
||||
/**
|
||||
* OrderStepObject constructor.
|
||||
* @param string $orderId
|
||||
* @param string $currentStep
|
||||
* @param null|string $nextStep
|
||||
*/
|
||||
public function __construct(string $orderId, string $currentStep, ?string $nextStep)
|
||||
{
|
||||
$this->orderId = $orderId;
|
||||
$this->currentStep = $this->getCurrentStep();
|
||||
$this->currentStep = $this->getCurrentStep();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class PackageObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
private $description;
|
||||
|
||||
/** @var integer */
|
||||
private $quantity;
|
||||
|
||||
/** @var integer */
|
||||
private $width;
|
||||
|
||||
/** @var integer */
|
||||
private $height;
|
||||
|
||||
/** @var integer */
|
||||
private $length;
|
||||
|
||||
/**
|
||||
* PackageObject constructor.
|
||||
* @param string $description
|
||||
* @param int $quantity
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param int $length
|
||||
*/
|
||||
public function __construct(string $description, int $quantity, int $width, int $height, int $length)
|
||||
{
|
||||
$this->description = $description;
|
||||
$this->quantity = $quantity;
|
||||
$this->width = $width;
|
||||
$this->height = $height;
|
||||
$this->length = $length;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getDescription(): string
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getQuantity(): int
|
||||
{
|
||||
return $this->quantity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getWidth(): int
|
||||
{
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getHeight(): int
|
||||
{
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getLength(): int
|
||||
{
|
||||
return $this->length;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class PackingListObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
private $referenceId;
|
||||
|
||||
/** @var boolean */
|
||||
private $confirmed;
|
||||
|
||||
/** @var PackageObject[] */
|
||||
private $packages;
|
||||
|
||||
/**
|
||||
* PackingListObject constructor.
|
||||
* @param string $referenceId
|
||||
* @param bool $confirmed
|
||||
* @param array $packages
|
||||
*/
|
||||
public function __construct(string $referenceId, bool $confirmed, array $packages)
|
||||
{
|
||||
$this->referenceId = $referenceId;
|
||||
$this->confirmed = $confirmed;
|
||||
$this->packages = $packages;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getReferenceId(): string
|
||||
{
|
||||
return $this->referenceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isConfirmed(): bool
|
||||
{
|
||||
return $this->confirmed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return PackageObject[]
|
||||
*/
|
||||
public function getPackages()
|
||||
{
|
||||
return array_map(function($package){
|
||||
return new PackageObject($package['description'], $package['quantity'], $package['width'], $package['height'], $package['length']);
|
||||
}, $this->packages);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class ReceiveNoteObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
private $trackingNumber;
|
||||
|
||||
/** @var string */
|
||||
private $date;
|
||||
|
||||
/**
|
||||
* ReceiveNoteObject constructor.
|
||||
* @param string $trackingNumber
|
||||
* @param string $date
|
||||
*/
|
||||
public function __construct(string $trackingNumber, string $date)
|
||||
{
|
||||
$this->trackingNumber = $trackingNumber;
|
||||
$this->date = $date;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTrackingNumber(): string
|
||||
{
|
||||
return $this->trackingNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Carbon
|
||||
*/
|
||||
public function getDate(): Carbon
|
||||
{
|
||||
return Carbon::parse($this->date);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class StepObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
protected $referenceId;
|
||||
|
||||
/** @var bool */
|
||||
protected $isPrimary;
|
||||
|
||||
/** @var float */
|
||||
protected $sequence;
|
||||
|
||||
/**
|
||||
* StepObject constructor.
|
||||
* @param string $referenceId
|
||||
* @param bool $isPrimary
|
||||
* @param float $sequence
|
||||
*/
|
||||
public function __construct(string $referenceId, bool $isPrimary = false, float $sequence = 0)
|
||||
{
|
||||
$this->referenceId = $referenceId;
|
||||
$this->isPrimary = $isPrimary;
|
||||
$this->sequence = $sequence;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getReferenceId(): string
|
||||
{
|
||||
return $this->referenceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isPrimary(): bool
|
||||
{
|
||||
return $this->isPrimary;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getSequence(): float
|
||||
{
|
||||
return $this->sequence;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Accounts\Exceptions;
|
||||
|
||||
use App\Classes\Exceptions\Common\ErrorException;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
|
||||
final class CannotConfirmOrderException extends ErrorException {
|
||||
/**
|
||||
* @param string $message
|
||||
*/
|
||||
public function __construct(string $message) {
|
||||
parent::__construct($message, HttpStatus::BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Accounts\Exceptions;
|
||||
|
||||
use App\Classes\Exceptions\Common\ErrorException;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
|
||||
final class CannotCreateOrderException extends ErrorException {
|
||||
/**
|
||||
* @param string $message
|
||||
*/
|
||||
public function __construct(string $message) {
|
||||
parent::__construct($message, HttpStatus::BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Accounts\Exceptions;
|
||||
|
||||
use App\Classes\Exceptions\Common\ErrorException;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
|
||||
final class CannotCreateOrderStepsException extends ErrorException {
|
||||
/**
|
||||
* @param string $message
|
||||
*/
|
||||
public function __construct(string $message) {
|
||||
parent::__construct($message, HttpStatus::BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Accounts\Exceptions;
|
||||
|
||||
use App\Classes\Exceptions\Common\ErrorException;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
|
||||
final class CannotUpdateOrderWarehouseException extends ErrorException {
|
||||
/**
|
||||
* @param string $message
|
||||
*/
|
||||
public function __construct(string $message) {
|
||||
parent::__construct($message, HttpStatus::BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders;
|
||||
|
||||
use App\Classes\Interfaces\OrderPrimaryStep;
|
||||
|
||||
class InsertPrimaryStepsList implements OrderPrimaryStep
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\ReceiveNotes;
|
||||
|
||||
|
||||
use App\Classes\Objects\Orders\ReceiveNotes\ReceiveNoteObject;
|
||||
use App\Models\ReceiveNote as ReceiveNoteModel;
|
||||
|
||||
class CreateReceiveNote
|
||||
{
|
||||
|
||||
public function execute(ReceiveNoteObject $receiveNote){
|
||||
|
||||
$receiveNotes = new ReceiveNoteModel;
|
||||
$receiveNotes->order_id = $receiveNote->getOrderId();
|
||||
$receiveNotes->tracking_no = $receiveNote->getTrackingNo();
|
||||
$receiveNotes->receive_date = $receiveNote->getReceiveDate();
|
||||
|
||||
if($receiveNotes->save()){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\ReceiveNotes;
|
||||
|
||||
|
||||
use App\Http\Requests\ReceiveNoteValidator;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ReceiveNote
|
||||
{
|
||||
/** @var int */
|
||||
protected $orderId;
|
||||
|
||||
/** @var string */
|
||||
protected $trackingNo;
|
||||
|
||||
/** @var Carbon */
|
||||
protected $receiveDate;
|
||||
|
||||
/**
|
||||
* AbstractReceiveNote constructor.
|
||||
* @param int $orderId
|
||||
* @param Request $request
|
||||
*/
|
||||
public function __construct(int $orderId, Request $request)
|
||||
{
|
||||
$this->orderId = $orderId;
|
||||
$this->trackingNo = $request->input('tracking_no');
|
||||
$this->receiveDate = Carbon::parse($request->input('receive_date'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getOrderId(): int
|
||||
{
|
||||
return $this->orderId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTrackingNo(): string
|
||||
{
|
||||
return $this->trackingNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Carbon
|
||||
*/
|
||||
public function getReceiveDate(): Carbon
|
||||
{
|
||||
return $this->receiveDate;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||
use App\Models\Order;
|
||||
|
||||
class CompletesOrderStep {
|
||||
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* CompletesOrderStep constructor.
|
||||
* @param Order $repository
|
||||
*/
|
||||
public function __construct(Order $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param OrderObject $order
|
||||
* @param StepObject $step
|
||||
*/
|
||||
public function execute(OrderObject $order, StepObject $step){
|
||||
|
||||
/** @var Order $repository */
|
||||
$repository = $this->repository->findOrFail($order->getOrderId());
|
||||
|
||||
$orderStep = $repository->orderSteps()->where('reference_id', $step->getReferenceId())->firstOrFail();
|
||||
|
||||
$orderStep->complete = 1;
|
||||
|
||||
$orderStep->save();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Constants;
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Models\Order;
|
||||
|
||||
class CreatesOrder
|
||||
{
|
||||
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* CreatesOrder constructor.
|
||||
* @param Order $repository
|
||||
*/
|
||||
public function __construct(Order $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param OrderObject $order
|
||||
* @return Order
|
||||
* @throws CannotCreateOrderException
|
||||
*/
|
||||
public function execute(OrderObject $order): ?Order {
|
||||
|
||||
try {
|
||||
|
||||
$this->repository->company_id = $order->getCompanyId();
|
||||
$this->repository->marking = $order->getOrderId();
|
||||
$this->repository->current_step = Constants::ORDER_PROCESSING_STEP;
|
||||
|
||||
$this->repository->save();
|
||||
|
||||
return $this->repository;
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new CannotCreateOrderException($exception->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderStepsException;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Models\Order;
|
||||
|
||||
class CreatesOrderSteps
|
||||
{
|
||||
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* CompletesOrderStep constructor.
|
||||
* @param Order $repository
|
||||
*/
|
||||
public function __construct(Order $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param OrderObject $order
|
||||
* @param array $orderSteps
|
||||
* @throws CannotCreateOrderStepsException
|
||||
*/
|
||||
public function execute(OrderObject $order, array $orderSteps){
|
||||
|
||||
try {
|
||||
|
||||
/** @var Order $repository */
|
||||
$repository = $this->repository->findOrFail($order->getOrderId());
|
||||
|
||||
$repository->orderSteps()->delete();
|
||||
|
||||
$repository->orderSteps()->createMany($orderSteps);
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new CannotCreateOrderStepsException($exception->getMessage());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
|
||||
class CreatesPackingList
|
||||
{
|
||||
|
||||
public function execute(OrderObject $order, $packingList){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\ReceiveNoteObject;
|
||||
use App\Models\ReceiveNote;
|
||||
|
||||
class CreatesReceiveNote
|
||||
{
|
||||
|
||||
/** @var ReceiveNote */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* CreatesReceiveNote constructor.
|
||||
* @param ReceiveNote $repository
|
||||
*/
|
||||
public function __construct(ReceiveNote $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
public function execute(OrderObject $order , ReceiveNoteObject $receiveNote){
|
||||
|
||||
$this->repository->order_id = $order->getOrderId();
|
||||
$this->repository->tracking_no = $receiveNote->getTrackingNumber();
|
||||
$this->repository->receive_date = $receiveNote->getDate();
|
||||
|
||||
$this->repository->save();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Constants;
|
||||
use App\Models\Order;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class ListsOrderHistory
|
||||
{
|
||||
|
||||
|
||||
public function execute(string $orderId, Carbon $createdAt, bool $complete, Carbon $lastUpdate){
|
||||
/** @var Order $order */
|
||||
$order = Order::findOrFail($orderId);
|
||||
|
||||
$orderSteps = $order->orderSteps()->where('complete', true)->orderBy('sequence')->get();
|
||||
|
||||
$history = new Collection();
|
||||
|
||||
$history->push(['date' => $createdAt->format('d-m-Y H:i'), 'description' => 'Order created']);
|
||||
|
||||
|
||||
foreach ($orderSteps as $step){
|
||||
switch ($step->reference_id){
|
||||
case Constants::ORDER_PROCESSING_STEP:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Order has been confirmed']);
|
||||
break;
|
||||
case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order is packed and is ready to ship']);
|
||||
break;
|
||||
case Constants::ORDER_WAREHOUSE_RECEIVING_STEP:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has arrived at China\'s sorting centre']);
|
||||
break;
|
||||
case Constants::ORDER_WAREHOUSE_PACKING_STEP:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order is packed and is ready to ship']);
|
||||
break;
|
||||
case Constants::ORDER_SHIPPING_STEP:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has been shipped successfully']);
|
||||
break;
|
||||
case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has arrived at Malaysia\'s sorting centre']);
|
||||
break;
|
||||
case Constants::ORDER_WAREHOUSE_UNPACKING_STEP:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has been unpacked and being prepared for delivery']);
|
||||
break;
|
||||
case Constants::ORDER_DELIVERY_STEP:
|
||||
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order is out for delivery']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($complete){
|
||||
$history->push(['date' => $lastUpdate->format('d-m-Y H:i'), 'description' => 'Your Order has successfully been delivered']);
|
||||
}
|
||||
|
||||
return $history->reverse()->toArray();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Constants;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||
use App\Classes\Modules\Orders\Services\Processors\ConfirmsOrder;
|
||||
use App\Classes\Modules\Orders\Services\Processors\WarehousePackingOrder;
|
||||
use App\Classes\Modules\Orders\Services\Processors\WarehouseReceivesOrder;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ProcessesOrderStep
|
||||
{
|
||||
/** @var ConfirmsOrder */
|
||||
private $confirmOrder;
|
||||
|
||||
/** @var WarehouseReceivesOrder */
|
||||
private $warehouseReceivesOrder;
|
||||
|
||||
/** @var WarehousePackingOrder */
|
||||
private $warehousePackingOrder;
|
||||
|
||||
/**
|
||||
* StepProcessor constructor.
|
||||
* @param ConfirmsOrder $confirmOrder
|
||||
* @param WarehouseReceivesOrder $warehouseReceivesOrder
|
||||
* @param WarehousePackingOrder $warehousePackingOrder
|
||||
*/
|
||||
public function __construct(ConfirmsOrder $confirmOrder, WarehouseReceivesOrder $warehouseReceivesOrder, WarehousePackingOrder $warehousePackingOrder)
|
||||
{
|
||||
$this->confirmOrder = $confirmOrder;
|
||||
$this->warehouseReceivesOrder = $warehouseReceivesOrder;
|
||||
$this->warehousePackingOrder = $warehousePackingOrder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function execute(OrderObject $order, StepObject $step, Request $request): bool{
|
||||
switch ($step->getReferenceId()){
|
||||
case Constants::ORDER_PROCESSING_STEP:
|
||||
return $this->confirmOrder->execute($order, $request);
|
||||
case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER:
|
||||
return true;
|
||||
case Constants::ORDER_WAREHOUSE_RECEIVING_STEP:
|
||||
return $this->warehouseReceivesOrder->execute($order, $request);
|
||||
case Constants::ORDER_WAREHOUSE_PACKING_STEP:
|
||||
return $this->warehousePackingOrder->execute($order);
|
||||
case Constants::ORDER_SHIPPING_STEP:
|
||||
return true;
|
||||
case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP:
|
||||
return true;
|
||||
case Constants::ORDER_WAREHOUSE_UNPACKING_STEP:
|
||||
return true;
|
||||
case Constants::ORDER_DELIVERY_STEP:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services\Processors;
|
||||
|
||||
|
||||
use App\Classes\Constants;
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotConfirmOrderException;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||
use App\Classes\Modules\Orders\Services\CreatesOrderSteps;
|
||||
use App\Classes\Modules\Orders\Services\SetsOrderWarehouse;
|
||||
use App\Classes\Modules\Orders\Steps\GenerateOrderSteps;
|
||||
use App\Classes\Modules\Steps\ModularStep;
|
||||
use App\Models\Order;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class ConfirmsOrder
|
||||
{
|
||||
|
||||
/** @var SetsOrderWarehouse */
|
||||
private $setOrderWarehouse;
|
||||
|
||||
/** @var GenerateOrderSteps */
|
||||
private $generateOrderSteps;
|
||||
|
||||
/** @var CreatesOrderSteps */
|
||||
private $createsOrderSteps;
|
||||
|
||||
/**
|
||||
* ConfirmsOrder constructor.
|
||||
* @param SetsOrderWarehouse $setOrderWarehouse
|
||||
* @param GenerateOrderSteps $generateOrderSteps
|
||||
* @param CreatesOrderSteps $createsOrderSteps
|
||||
*/
|
||||
public function __construct(SetsOrderWarehouse $setOrderWarehouse, GenerateOrderSteps $generateOrderSteps, CreatesOrderSteps $createsOrderSteps)
|
||||
{
|
||||
$this->setOrderWarehouse = $setOrderWarehouse;
|
||||
$this->generateOrderSteps = $generateOrderSteps;
|
||||
$this->createsOrderSteps = $createsOrderSteps;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param OrderObject $order
|
||||
* @param Request $request
|
||||
* @return bool
|
||||
*/
|
||||
public function execute(OrderObject $order, Request $request){
|
||||
|
||||
try {
|
||||
|
||||
if($request->input('warehouse_id')){
|
||||
|
||||
$order->setWarehouseId($request->input('warehouse_id'));
|
||||
|
||||
$this->setOrderWarehouse->execute($order);
|
||||
}
|
||||
|
||||
$modules = new Collection();
|
||||
|
||||
$order->getWarehouseId() ? $modules->push(Constants::ORDER_MODULE_WAREHOUSE) : $modules->push(Constants::ORDER_MODULE_NO_WAREHOUSE);
|
||||
|
||||
$orderSteps = $this->generateOrderSteps->getSteps($modules->toArray())->toArray();
|
||||
|
||||
$this->createsOrderSteps->execute($order, $orderSteps);
|
||||
|
||||
return true;
|
||||
|
||||
} catch (\Exception $exception){
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services\Processors;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Models\PackingList;
|
||||
|
||||
class WarehousePackingOrder
|
||||
{
|
||||
/** @var PackingList */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* WarehousePackingOrder constructor.
|
||||
* @param PackingList $repository
|
||||
*/
|
||||
public function __construct(PackingList $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
public function execute(OrderObject $order){
|
||||
$packingList = $this->repository->where('order_id', $order->getOrderId())->firstOrFail();
|
||||
if($packingList->confirmed) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services\Processors;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\ReceiveNoteObject;
|
||||
use App\Classes\Modules\Orders\Services\CreatesReceiveNote;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class WarehouseReceivesOrder
|
||||
{
|
||||
|
||||
/** @var CreatesReceiveNote */
|
||||
private $createsReceiveNote;
|
||||
|
||||
/**
|
||||
* WarehouseReceiveOrder constructor.
|
||||
* @param CreatesReceiveNote $createsReceiveNote
|
||||
*/
|
||||
public function __construct(CreatesReceiveNote $createsReceiveNote)
|
||||
{
|
||||
$this->createsReceiveNote = $createsReceiveNote;
|
||||
}
|
||||
|
||||
|
||||
public function execute(OrderObject $order, Request $request){
|
||||
$object = new ReceiveNoteObject($request->input('tracking_no'), $request->input('receive_date'));
|
||||
$this->createsReceiveNote->execute($order, $object);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Modules\Accounts\Exceptions\CannotUpdateOrderWarehouseException;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Models\Order;
|
||||
|
||||
class SetsOrderWarehouse
|
||||
{
|
||||
|
||||
/** @var Order */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* SetsOrderWarehouse constructor.
|
||||
* @param Order $repository
|
||||
*/
|
||||
public function __construct(Order $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param OrderObject $order
|
||||
* @throws CannotUpdateOrderWarehouseException
|
||||
*/
|
||||
public function execute(OrderObject $order){
|
||||
try {
|
||||
|
||||
/** @var Order $repository */
|
||||
$repository = $this->repository->findOrFail($order->getOrderId());
|
||||
$repository->warehouse_id = $order->getWarehouseId();
|
||||
$repository->save();
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new CannotUpdateOrderWarehouseException($exception->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Constants;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderStep;
|
||||
|
||||
class UpdatesOrderCurrentStep
|
||||
{
|
||||
|
||||
/** @var Order */
|
||||
private $order;
|
||||
|
||||
/** @var OrderStep */
|
||||
private $orderStep;
|
||||
|
||||
/**
|
||||
* UpdatesOrderCurrentStep constructor.
|
||||
* @param Order $order
|
||||
* @param OrderStep $orderStep
|
||||
*/
|
||||
public function __construct(Order $order, OrderStep $orderStep)
|
||||
{
|
||||
$this->order = $order;
|
||||
$this->orderStep = $orderStep;
|
||||
}
|
||||
|
||||
|
||||
public function execute(OrderObject $order, StepObject $step){
|
||||
|
||||
$orderStep = $this->orderStep->where('order_id', $order->getOrderId())
|
||||
->where('complete', 0)->orderBy('sequence')->first();
|
||||
|
||||
$nextStep = $orderStep ? $orderStep->reference_id : null;
|
||||
|
||||
$repository = $this->order->findOrFail($order->getOrderId());
|
||||
$repository->current_step = $nextStep;
|
||||
|
||||
if($nextStep === null && $step !== Constants::ORDER_PROCESSING_STEP){
|
||||
$repository->complete = true;
|
||||
}
|
||||
|
||||
$repository->save();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UpdatesOrderSteps
|
||||
{
|
||||
|
||||
|
||||
/** @var ProcessesOrderStep */
|
||||
private $processesOrderStep;
|
||||
|
||||
/** @var CompletesOrderStep */
|
||||
private $completesOrderStep;
|
||||
|
||||
/** @var UpdatesOrderCurrentStep */
|
||||
private $updatesOrderCurrentStep;
|
||||
|
||||
/**
|
||||
* UpdatesOrderSteps constructor.
|
||||
* @param ProcessesOrderStep $processesOrderStep
|
||||
* @param CompletesOrderStep $completesOrderStep
|
||||
* @param UpdatesOrderCurrentStep $updatesOrderCurrentStep
|
||||
*/
|
||||
public function __construct(ProcessesOrderStep $processesOrderStep, CompletesOrderStep $completesOrderStep, UpdatesOrderCurrentStep $updatesOrderCurrentStep)
|
||||
{
|
||||
$this->processesOrderStep = $processesOrderStep;
|
||||
$this->completesOrderStep = $completesOrderStep;
|
||||
$this->updatesOrderCurrentStep = $updatesOrderCurrentStep;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param OrderObject $order
|
||||
* @param StepObject $step
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function execute(OrderObject $order, StepObject $step, Request $request) {
|
||||
|
||||
|
||||
if($this->processesOrderStep->execute($order, $step, $request)){
|
||||
$this->completesOrderStep->execute($order, $step);
|
||||
$this->updatesOrderCurrentStep->execute($order, $step);
|
||||
}
|
||||
|
||||
return new JsonResponse(null, HttpStatus::OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,42 +14,29 @@ class GenerateOrderSteps
|
||||
/** @var Collection */
|
||||
protected $steps;
|
||||
|
||||
/** @var array */
|
||||
protected $modules;
|
||||
|
||||
/**
|
||||
* GenerateOrderSteps constructor.
|
||||
* @param Collection $steps
|
||||
*/
|
||||
public function __construct(Collection $steps)
|
||||
{
|
||||
$this->steps = $steps;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $modules
|
||||
*/
|
||||
public function __construct(array $modules)
|
||||
{
|
||||
$this->steps = collect([]);
|
||||
$this->modules = $modules;
|
||||
|
||||
$this->primarySteps();
|
||||
$this->modularSteps();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getModules(): array
|
||||
{
|
||||
return $this->modules;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Collection
|
||||
*/
|
||||
public function getSteps(): Collection
|
||||
public function getSteps(array $modules): Collection
|
||||
{
|
||||
|
||||
$this->primarySteps();
|
||||
$this->modularSteps($modules);
|
||||
return $this->steps->sortBy('sequence');
|
||||
}
|
||||
|
||||
public function modularSteps(){
|
||||
$modularSteps = ModularStep::with('moduleGroups.steps')->whereIn('reference_id', $this->getModules())->get();
|
||||
public function modularSteps(array $modules){
|
||||
$modularSteps = ModularStep::with('moduleGroups.steps')->whereIn('reference_id', $modules)->get();
|
||||
foreach ($modularSteps as $module){
|
||||
foreach($module->moduleGroups as $group){
|
||||
$i = 0;
|
||||
|
||||
@@ -13,11 +13,12 @@ class RegisterAccountController extends Controller
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param RegisterAccountLogic $logic
|
||||
* @return RedirectResponse
|
||||
* @return JsonResponse
|
||||
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function register(Request $request, RegisterAccountLogic $logic): RedirectResponse {
|
||||
public function register(Request $request, RegisterAccountLogic $logic): JsonResponse
|
||||
{
|
||||
return $logic->execute($request);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Orders;
|
||||
|
||||
use App\Classes\Modules\ControllersLogic\Orders\ConfirmOrderLogic;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ConfirmOrderController
|
||||
{
|
||||
|
||||
/**
|
||||
* @param int $orderId
|
||||
* @param Request $request
|
||||
* @param ConfirmOrderLogic $logic
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws \App\Classes\Modules\Accounts\Exceptions\CannotUpdateOrderWarehouseException
|
||||
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||
*/
|
||||
public function confirm(int $orderId, Request $request, ConfirmOrderLogic $logic){
|
||||
return $logic->execute($orderId, $request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Orders;
|
||||
|
||||
use App\Classes\Modules\ControllersLogic\Orders\CreateOrderLogic;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CreateOrderController
|
||||
{
|
||||
|
||||
/**
|
||||
* @param int $companyId
|
||||
* @param Request $request
|
||||
* @param CreateOrderLogic $logic
|
||||
* @return \App\Models\Order|null
|
||||
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||
*/
|
||||
public function create(int $companyId, Request $request, CreateOrderLogic $logic){
|
||||
return $logic->execute($companyId, $request);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,12 @@
|
||||
namespace App\Http\Controllers\Orders;
|
||||
|
||||
use App\Classes\ControllersLogic\Orders\CreateOrder;
|
||||
use App\Classes\ControllersLogic\Orders\UpdateOrderStep;
|
||||
use App\Classes\Modules\ControllersLogic\Orders\UpdateOrderStepLogic;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\PackageObject;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\PackingListObject;
|
||||
use App\Models\CustomIssues;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderStep;
|
||||
use App\Models\PackingList;
|
||||
use App\Models\ShippingArrangement;
|
||||
use Carbon\Carbon;
|
||||
@@ -22,12 +25,9 @@ class OrderController extends Controller
|
||||
return OrderResource::collection($orders);
|
||||
}
|
||||
|
||||
public function insert(String $companyId, Request $request){
|
||||
return (new CreateOrder())->execute($companyId, $request) ? 200 : 408;
|
||||
}
|
||||
|
||||
public function updateStep(String $orderId, Request $request){
|
||||
return (new UpdateOrderStep())->execute($orderId, $request) ? 200 : 408;
|
||||
public function updateStep(String $orderId, Request $request, UpdateOrderStepLogic $logic){
|
||||
return $logic->execute($orderId, $request);
|
||||
// return (new UpdateOrderStepLogic())->execute($orderId, $request) ? 200 : 408;
|
||||
}
|
||||
|
||||
public function updatePackingList(String $orderId, Request $request){
|
||||
@@ -74,5 +74,12 @@ class OrderController extends Controller
|
||||
return 200;
|
||||
}
|
||||
|
||||
public function delete(String $orderId){
|
||||
/** @var Order $order */
|
||||
$order = Order::findOrFail($orderId);
|
||||
$order->delete();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Orders;
|
||||
|
||||
use App\Classes\Modules\ControllersLogic\Orders\UpdateOrderStepLogic;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UpdateOrderStepController
|
||||
{
|
||||
|
||||
/**
|
||||
* @param int $companyId
|
||||
* @param Request $request
|
||||
* @param UpdateOrderStepLogic $logic
|
||||
* @return \App\Models\Order|null
|
||||
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||
*/
|
||||
public function create(int $companyId, Request $request, UpdateOrderStepLogic $logic){
|
||||
return $logic->execute($companyId, $request);
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Classes\Modules\Orders\Services\ListsOrderHistory;
|
||||
use App\Classes\Modules\Steps\GetStep;
|
||||
use App\Classes\Modules\Steps\StepAttachments;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
@@ -24,12 +25,13 @@ class Order extends JsonResource
|
||||
'supplier_id' => $this->supplier_id,
|
||||
'warehouse_id' => $this->warehouse_id,
|
||||
'current_step' => $this->current_step,
|
||||
'complete' => $this->complete,
|
||||
'complete' => (float)$this->complete,
|
||||
'date' => $this->created_at->format('d/m/Y'),
|
||||
'steps' => [
|
||||
'details' => (new GetStep())->execute($this->current_step),
|
||||
'attachments' => (new StepAttachments())->execute($this->id, $this->current_step)
|
||||
]
|
||||
],
|
||||
'details' => (new ListsOrderHistory())->execute($this->id, $this->created_at, $this->complete, $this->updated_at)
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,13 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class Order extends AbstractModel
|
||||
{
|
||||
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'orders';
|
||||
|
||||
protected $fillable = [
|
||||
|
||||
@@ -22,6 +22,7 @@ class CreateOrdersTable extends Migration
|
||||
$table->string('warehouse_id')->nullable();
|
||||
$table->string('current_step')->nullable();
|
||||
$table->integer('complete')->default(0);
|
||||
$table->softDeletes();
|
||||
$table->timestamps();
|
||||
|
||||
$table->foreign('company_id')->references('id')->on('companies');
|
||||
|
||||
+22
@@ -2043,6 +2043,28 @@ padding-right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.order-history-border {
|
||||
height: .1875rem;
|
||||
width: 100%;
|
||||
background-position-x: -1.875rem;
|
||||
background-size: 7.25rem .1875rem;
|
||||
background-image: repeating-linear-gradient(45deg,$color-complete,$color-complete 33px,transparent 0,transparent 41px,$color-primary 0,$color-primary 74px,transparent 0,transparent 82px);
|
||||
}
|
||||
.order-history {
|
||||
.bullet-connector {
|
||||
width: 2px;
|
||||
height: 30px;
|
||||
background: $color-master-light;
|
||||
top: 10px;
|
||||
left: 18px;
|
||||
}
|
||||
&:last-child {
|
||||
.bullet-connector {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@keyframes slideDown {
|
||||
0% {
|
||||
|
||||
Vendored
+2
@@ -51,6 +51,7 @@ Vue.component('orders-list-component', require('./components/order/lists/OrdersL
|
||||
//elements
|
||||
Vue.component('account-component', require('./components/account/elements/AccountComponenet.vue'));
|
||||
|
||||
Vue.component('company-profile-component', require('./components/company/elements/CompanyProfileComponenet.vue'));
|
||||
Vue.component('company-summary-component', require('./components/company/elements/CompanySummaryComponenet.vue'));
|
||||
Vue.component('company-component', require('./components/company/elements/CompanyComponenet.vue'));
|
||||
Vue.component('address-book-component', require('./components/company/elements/AddressBookComponenet.vue'));
|
||||
@@ -61,6 +62,7 @@ Vue.component('warehouse-component', require('./components/warehouse/elements/Wa
|
||||
Vue.component('warehouse-summary-component', require('./components/warehouse/elements/WarehouseSummaryComponenet.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'));
|
||||
Vue.component('packing-step-component', require('./components/order/elements/PackingStepComponenet.vue'));
|
||||
Vue.component('supplier-packing-step-component', require('./components/order/elements/SupplierPackingStepComponenet.vue'));
|
||||
|
||||
@@ -1,166 +0,0 @@
|
||||
<template>
|
||||
<div class="relative" style="min-height: 100%;">
|
||||
<loading-component v-show="isLoading"></loading-component>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row bg-master-lightest hint-text no-margin p-t-10 p-b-10">
|
||||
<div class="col-2">
|
||||
<span class="muted hint-text">Reference</span>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<span class="muted hint-text">Address</span>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<span class="muted hint-text">Phone Number</span>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row align-items-center justify-content-center no-margin p-t-10 p-b-10 b-grey" v-for="(address, index) in addresses" v-bind:key="address.id" :class="{'b-b': index != addresses.length - 1}">
|
||||
<div class="col-2 ">
|
||||
<span class="fs-12">{{address.reference}}</span>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<span class="fs-12">{{address.street_one}} {{address.street_two}} {{address.city}} {{address.state}} {{address.post_code}} {{address.country}}</span>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<span class="fs-12 text-complete">{{address.contact}}</span>
|
||||
</div>
|
||||
<div class="col-3 text-right">
|
||||
<div class="row h-100">
|
||||
<div class="col-auto text-right p-t-10 p-b-10 bg-master-lightest m-r-5 ml-auto">
|
||||
<a href="#" class="requestDelete">
|
||||
<div data-toggle="tooltip" title="" data-placement="bottom" class="row link align-items-center justify-content-center" data-original-title="Delete">
|
||||
<div class="col">
|
||||
<i class="fa fa-times text-danger"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-auto text-right p-t-10 p-b-10 m-r-5 bg-master-lightest">
|
||||
<a href="#" class="requestDelete">
|
||||
<div data-toggle="tooltip" class="row link align-items-center justify-content-center" >
|
||||
<div class="col">
|
||||
<i class="fa fa-star text-master-light"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-auto text-right p-t-10 p-b-10 bg-master-lightest">
|
||||
<a href="#" class="requestDelete">
|
||||
<div data-toggle="tooltip" title="" data-placement="bottom" class="row link align-items-center justify-content-center" data-original-title="Delete">
|
||||
<div class="col">
|
||||
<i class="fa fa-pencil text-info"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-t-20">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col"></div>
|
||||
<div class="col"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-success b-rad-none all-caps"><i class="fa fa-plus m-r-5"></i> Add New Address</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ['companyId'],
|
||||
data() {
|
||||
return {
|
||||
addresses: [],
|
||||
address: {
|
||||
id: '',
|
||||
company_id: '',
|
||||
reference: '',
|
||||
contact: '',
|
||||
street_one: '',
|
||||
street_two: '',
|
||||
city: '',
|
||||
state: '',
|
||||
post_code: '',
|
||||
country: ''
|
||||
},
|
||||
current_page: '',
|
||||
pagination: {},
|
||||
isLoading: true
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.fetchAdresses();
|
||||
},
|
||||
|
||||
mounted() {
|
||||
Event.$on('updateAddressBookList', () => {
|
||||
this.fetchAdresses();
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
fetchAdresses(page = 1){
|
||||
let vm = this;
|
||||
|
||||
//turn on loading animation
|
||||
this.isLoading = true;
|
||||
|
||||
//set page to last if page requested is larger than last page
|
||||
if(page > this.pagination.last_page){ page = this.pagination.last_page }
|
||||
|
||||
//update current page to requested page
|
||||
this.current_page = page;
|
||||
|
||||
fetch(route('api.company.addressbook.list', {companyId: this.companyId}) + '?page='+ page).then(response => response.json())
|
||||
.then(response => {
|
||||
this.addresses = response.data;
|
||||
vm.makePagination(response.meta, response.links);
|
||||
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
},
|
||||
makePagination(meta, links){
|
||||
this.pagination = {
|
||||
current_page: meta.current_page,
|
||||
last_page: meta.last_page,
|
||||
next_page_url: links.next,
|
||||
previous_page_url: links.prev
|
||||
};
|
||||
|
||||
},
|
||||
deleteAddress(id){
|
||||
fetch(route('api.company.delete', {'id': id}), {
|
||||
method: 'delete'
|
||||
}).then(response => response.json())
|
||||
.then(data => {
|
||||
this.fetchAdresses(this.current_page);
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -1,128 +0,0 @@
|
||||
<template>
|
||||
<div class="row m-b-10 parentContainer">
|
||||
<div class="col m-b-5">
|
||||
<div class="row bg-white no-margin">
|
||||
<div class="col p-t-5 p-b-5 b-b b-grey">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<p class="fs-12 semi-bold no-margin">{{this.company.name}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<small class="muted fs-9">{{this.company.street_one}} {{this.company.street_two}}, {{this.company.city}}, {{this.company.state}}, {{this.company.post_code}}, {{this.company.country}}</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="row h-100">
|
||||
<div class="col-auto text-right bg-danger">
|
||||
<a href="#" class="requestDelete">
|
||||
<div class="row link align-items-center justify-content-center h-100" data-toggle="tooltip" title="Delete" data-placement="bottom">
|
||||
<div class="col">
|
||||
<i class="fa fa-trash text-white"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-auto text-right bg-info">
|
||||
<a class="pointer" @click='toggleEdit()' v-show="!isEditing">
|
||||
<div class="row link align-items-center justify-content-center h-100" data-toggle="tooltip" title="Edit" data-placement="bottom">
|
||||
<div class="col">
|
||||
<i class="fa fa-pencil text-white"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a class="pointer" @click='closeEdit()' v-show="isEditing">
|
||||
<div class="row link align-items-center justify-content-center h-100" data-toggle="tooltip" title="Edit" data-placement="bottom">
|
||||
<div class="col">
|
||||
<i class="fa fa-times text-white"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-auto text-right bg-master">
|
||||
<a :href="route('companies.profile', {companyId: this.company.id})">
|
||||
<div class="row link align-items-center justify-content-center h-100" data-toggle="tooltip" title="Manage" data-placement="bottom">
|
||||
<div class="col">
|
||||
<i class="fa fa-chevron-right text-white"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row bg-white no-margin">
|
||||
<div class="col no-padding">
|
||||
<slide-up-down :active="isEditing" :duration="700">
|
||||
<company-form-component v-on:collapseEdit="closeEdit()" :data="this.company"></company-form-component>
|
||||
</slide-up-down>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade stick-up deleteModal">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content-wrapper">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header clearfix text-left">
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<i class="fa fa-times fs-14"></i>
|
||||
</button>
|
||||
<h6>Remove Company</h6>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="no-margin">Are you sure you want to remove <strong>{{this.company.name}}</strong>?</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-sm btn-default" data-dismiss="modal">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-danger" data-dismiss="modal" @click="deleteCompany()">Delete Company</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {
|
||||
company: this.data,
|
||||
isEditing: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
Event.$on('collapseEdit', () => {
|
||||
this.closeEdit();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
route: route,
|
||||
deleteCompany(){
|
||||
fetch(route('api.company.delete', {'id': this.company.id}), {
|
||||
method: 'delete'
|
||||
}).then(response => response.json())
|
||||
.then(data => {
|
||||
Event.$emit('updateCompanyList');
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
},
|
||||
closeEdit(){
|
||||
this.isEditing = false;
|
||||
},
|
||||
toggleEdit(){
|
||||
Event.$emit('collapseEdit');
|
||||
this.isEditing = !this.isEditing;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,210 @@
|
||||
<template>
|
||||
<div class="panel">
|
||||
<div class="row m-t-30">
|
||||
<div class="col-3">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<company-summary-component :data="companyId"></company-summary-component>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row no-margin">
|
||||
<div class="col">
|
||||
<ul class="nav" role="tablist">
|
||||
<li class="full-width side-tab">
|
||||
<a href="#orders" class="active" data-toggle="tab" role="tab">
|
||||
<div class="row m-b-10">
|
||||
<div class="col">
|
||||
<div class="row p-b-5 p-t-5 bg-white tab-container">
|
||||
<div class="col text-master">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col-auto p-r-0">
|
||||
<div class="btn-rounded bg-primary text-center text-white" style="width: 30px; height: 30px;">
|
||||
<i class="fa fa-cube fs-12 lh-30"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col all-caps fs-12">
|
||||
My Orders
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-angle-right fs-14 lh-25"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="full-width side-tab">
|
||||
<a href="#profile" data-toggle="tab" role="tab">
|
||||
<div class="row m-b-10">
|
||||
<div class="col">
|
||||
<div class="row p-b-5 p-t-5 bg-white tab-container">
|
||||
<div class="col text-master">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col-auto p-r-0">
|
||||
<div class="btn-rounded bg-complete text-center text-white" style="width: 30px; height: 30px;">
|
||||
<i class="fa fa-book fs-12 lh-30"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col all-caps fs-12">
|
||||
Delivery Addresses
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-angle-right fs-12 lh-25"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="full-width side-tab">
|
||||
<a href="#profile" data-toggle="tab" role="tab">
|
||||
<div class="row m-b-10">
|
||||
<div class="col">
|
||||
<div class="row p-b-5 p-t-5 bg-white tab-container">
|
||||
<div class="col text-master">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col-auto p-r-0">
|
||||
<div class="btn-rounded bg-warning text-center text-white" style="width: 30px; height: 30px;">
|
||||
<i class="fa fa-cubes fs-12 lh-30"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col all-caps fs-12">
|
||||
Manage Company
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-angle-right fs-12 lh-25"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="card no-border bg-transparent">
|
||||
<div class="tab-content bg-transparent p-l-0 p-r-0">
|
||||
<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="#ship">
|
||||
To Ship
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-toggle="tab" href="#receive">
|
||||
To Receive
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-toggle="tab" href="#complete">
|
||||
Complete
|
||||
</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 :data="companyId"></orders-list-component>
|
||||
</div>
|
||||
<div class="tab-pane active" id="ship">
|
||||
|
||||
</div>
|
||||
<div class="tab-pane active" id="receive">
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="complete">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="profile">
|
||||
<ul class="nav nav-tabs nav-tabs-simple" role="tablist" data-init-reponsive-tabs="dropdownfx">
|
||||
<li>
|
||||
<a class="active" data-toggle="tab" href="#about">
|
||||
About
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-toggle="tab" href="#contacts">
|
||||
Contacts
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content bg-transparent p-l-0 p-r-0">
|
||||
<div class="tab-pane active" id="about">
|
||||
<company-form-component v-if="company !== null" :data="company"></company-form-component>
|
||||
</div>
|
||||
<div class="tab-pane" id="contacts">
|
||||
<!--<contact-list-component :data="initContacts()"></contact-list-component>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-2 p-t-40 p-r-0 p-l-0">
|
||||
<div class="row m-b-15 parentContainer">
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-block btn-primary b-rad-none all-caps bold p-t-10 p-b-10 requestModal" data-type="newOrder"><i class="fa fa-shopping-basket fs-14 m-r-5"></i> New Order</button>
|
||||
<modal-component type="newOrder">
|
||||
<order-form-component :data="companyId"></order-form-component>
|
||||
</modal-component>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-b-15">
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-block btn-info b-rad-none all-caps bold p-t-10 p-b-10"><i class="fa fa-envelope-open-o fs-14 m-r-5"></i> Send Invite</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-block btn-info bg-master bg-master b-rad-none all-caps bold p-t-10 p-b-10"><i class="fa fa-line-chart fs-14 m-r-5"></i> Reports</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {
|
||||
companyId: this.data,
|
||||
company: null
|
||||
}
|
||||
},
|
||||
created(){
|
||||
this.fetchCompany();
|
||||
},
|
||||
methods: {
|
||||
fetchCompany(){
|
||||
fetch(route('api.company.profile', {'id': this.companyId})).then(response => response.json())
|
||||
.then(response => {
|
||||
this.company = response.data;
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
},
|
||||
initContacts(){
|
||||
return {
|
||||
'type': 'company',
|
||||
'reference': this.company_id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -32,17 +32,11 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
}).then(() => {
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
|
||||
})
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
<template>
|
||||
<div class="inline">
|
||||
<div class="btn btn-sm btn-success b-rad-none requestModal" data-type="receiveNote">Confirm Order</div>
|
||||
<modal-component type="receiveNote">
|
||||
<loading-component style="left: 0;" v-show="isLoading"></loading-component>
|
||||
<div class="card card-default no-border">
|
||||
<div class="card-block no-padding">
|
||||
<div class="row p-t-30">
|
||||
<div class="col no-padding">
|
||||
<div class="b-l b-success p-l-15 m-b-15" style="border-left-width: 3px;">
|
||||
<h6 class="bold all-caps no-margin text-success">Confirm Order</h6>
|
||||
<div class="muted all-caps fs-12">Setup and confirm order</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form method="post" @submit.prevent="addOrder">
|
||||
<div class="row">
|
||||
<div class="col no-padding">
|
||||
<div class="row" v-show="this.showWarehouse">
|
||||
<div class="col no-padding">
|
||||
<div class="form-group form-group-default form-group-default-select2 m-b-0" >
|
||||
<label class="muted" style="z-index: 10000;">Warehouse</label>
|
||||
<select-component :options="this.warehouses" v-model="order.warehouse_id"></select-component>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto padding-5 bg-master-lighter pointer" @click="toggleIncludeWarehouse()">
|
||||
<div class="row align-items-center justify-content-center h-100">
|
||||
<div class="col">
|
||||
<i class="fa fa-times text-danger m-l-5 m-r-5"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-b-20">
|
||||
<div class="col no-padding">
|
||||
<div v-show="!this.showWarehouse" @click="toggleIncludeWarehouse()" class="b-a b-grey pull-right bold text-complete all-caps fs-11 p-l-15 p-r-15 p-t-5 p-b-5 pointer"><i class="fa fa-plus m-r-5"></i>Add Warehouse</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-right no-padding">
|
||||
<div class="row">
|
||||
<div class="col no-padding">
|
||||
<button class="btn b-rad-none btn-default" data-dismiss="modal">Cancel</button>
|
||||
<button type="submit" class="btn b-rad-none btn-primary" @click="confirmOrder()" data-dismiss="modal">Confirm Order</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</modal-component>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
'data': {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
order: {
|
||||
warehouse_id: null
|
||||
},
|
||||
warehouses: [],
|
||||
showWarehouse: false,
|
||||
isLoading: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.fetchWarehouses();
|
||||
},
|
||||
methods: {
|
||||
fetchWarehouses(){
|
||||
//turn on loading animation
|
||||
this.isLoading = true;
|
||||
|
||||
fetch(route('api.warehouse.list', {'all': true})).then(response => response.json())
|
||||
.then(response => {
|
||||
|
||||
this.warehouses = $.map(response.data, function(value, key){
|
||||
return {'id': value.id, 'text': value.name};
|
||||
});
|
||||
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
},
|
||||
confirmOrder() {
|
||||
|
||||
//turn on loading animation
|
||||
this.isLoading = true;
|
||||
fetch(route('api.order.step.update', {orderId: this.data}), {
|
||||
method: 'post',
|
||||
body: JSON.stringify(this.order),
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(() => {
|
||||
this.clearForm();
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList');
|
||||
|
||||
})
|
||||
},
|
||||
toggleIncludeWarehouse(){
|
||||
this.order.warehouse_id = null;
|
||||
this.showWarehouse = !this.showWarehouse;
|
||||
},
|
||||
clearForm(){
|
||||
this.order.warehouse_id = null;
|
||||
this.showWarehouse = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -32,17 +32,11 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
}).then(() => {
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
|
||||
})
|
||||
|
||||
@@ -40,7 +40,9 @@
|
||||
<div class="row">
|
||||
<div class="col p-t-10 p-b-10">
|
||||
<div class="row no-margin align-items-center justify-content-center">
|
||||
<div class="col"></div>
|
||||
<div class="col">
|
||||
<small class="text-danger fs-10 requestModal pointer" data-type="delete"><i class="fa fa-times"></i> delete order</small>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<component :is="stepComponent(this.order.current_step)" :attachments="this.order.steps.attachments" :data="this.order.id"></component>
|
||||
<div class="btn btn-sm btn-default b-rad-none">View Details</div>
|
||||
@@ -48,7 +50,42 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-t-5">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="order-history-border"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row fs-12 p-t-15 p-b-15 ">
|
||||
<div class="col">
|
||||
<div class="row m-l-0 m-r-0 m-b-15 relative order-history" v-for="detail in this.order.details">
|
||||
<div class="absolute bullet-connector"></div>
|
||||
<div class="col">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col-auto p-r-10">
|
||||
<div class="bg-master-light btn-rounded" style="width: 8px;height: 8px;" ></div>
|
||||
</div>
|
||||
<div class="col-auto hint-text p-l-0">
|
||||
{{detail.date}}
|
||||
</div>
|
||||
<div class="col p-l-0 semi-bold">
|
||||
{{detail.description}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<confirm-modal-component
|
||||
title="Cancel Order"
|
||||
:message="'Are you sure you want to cancel this order ?'"
|
||||
type="delete"
|
||||
danger
|
||||
v-on:confirm="deleteOrder()"></confirm-modal-component>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -59,6 +96,9 @@
|
||||
required: true
|
||||
}
|
||||
},
|
||||
created(){
|
||||
console.log(this.data);
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
order: this.data,
|
||||
@@ -74,8 +114,18 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
deleteOrder(){
|
||||
fetch(route('api.order.delete', {'id': this.data}), {
|
||||
method: 'delete'
|
||||
}).then(() => {
|
||||
Event.$emit('updateOrdersList');
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
},
|
||||
stepComponent(stepReference){
|
||||
switch (stepReference) {
|
||||
case 'PS_PROCESSING':
|
||||
return 'confirm-order-component';
|
||||
case 'MS_WAREHOUSE_RECEIVING':
|
||||
return 'receive-step-component';
|
||||
case 'MS_WAREHOUSE_PACKING':
|
||||
|
||||
@@ -258,17 +258,11 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
}).then(() => {
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
|
||||
})
|
||||
|
||||
@@ -77,19 +77,13 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
this.clearForm();
|
||||
}).then(() => {
|
||||
this.clearForm();
|
||||
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
|
||||
})
|
||||
|
||||
@@ -195,17 +195,12 @@
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
this.arrangementExist = true;
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
|
||||
})
|
||||
@@ -244,17 +239,11 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
}).then(() => {
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
|
||||
})
|
||||
|
||||
@@ -32,17 +32,11 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
}).then(() => {
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
|
||||
})
|
||||
|
||||
@@ -32,18 +32,11 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then(response => response.json()).then((response) => {
|
||||
if(response === 200){
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
} else {
|
||||
//failed to update;
|
||||
this.isLoading = false;
|
||||
}
|
||||
}).then(() => {
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
Event.$emit('updateOrdersList', true);
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@@ -30,26 +30,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" v-show="this.showWarehouse">
|
||||
<div class="col no-padding">
|
||||
<div class="form-group form-group-default form-group-default-select2 m-b-0" >
|
||||
<label class="muted" style="z-index: 10000;">Warehouse</label>
|
||||
<select-component :options="this.warehouses" v-model="order.warehouse_id"></select-component>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto padding-5 bg-master-lighter pointer" @click="toggleIncludeWarehouse()">
|
||||
<div class="row align-items-center justify-content-center h-100">
|
||||
<div class="col">
|
||||
<i class="fa fa-times text-danger m-l-5 m-r-5"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-b-20">
|
||||
<div class="col no-padding">
|
||||
<div v-show="!this.showWarehouse" @click="toggleIncludeWarehouse()" class="b-a b-grey pull-right bold text-complete all-caps fs-11 p-l-15 p-r-15 p-t-5 p-b-5 pointer"><i class="fa fa-plus m-r-5"></i>Add Warehouse</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-right no-padding">
|
||||
<div class="row">
|
||||
@@ -77,35 +57,15 @@
|
||||
data() {
|
||||
return {
|
||||
order: {
|
||||
marking: '',
|
||||
warehouse_id: null
|
||||
marking: ''
|
||||
},
|
||||
warehouses: [],
|
||||
showWarehouse: false,
|
||||
isLoading: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.fetchWarehouses();
|
||||
this.generateMarking();
|
||||
},
|
||||
methods: {
|
||||
fetchWarehouses(){
|
||||
//turn on loading animation
|
||||
this.isLoading = true;
|
||||
|
||||
fetch(route('api.warehouse.list', {'all': true})).then(response => response.json())
|
||||
.then(response => {
|
||||
|
||||
this.warehouses = $.map(response.data, function(value, key){
|
||||
return {'id': value.id, 'text': value.name};
|
||||
});
|
||||
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
},
|
||||
addOrder() {
|
||||
|
||||
//turn on loading animation
|
||||
@@ -116,7 +76,7 @@
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
}).then((response) => {
|
||||
}).then(() => {
|
||||
this.clearForm();
|
||||
//turn off loading animation
|
||||
this.isLoading = false;
|
||||
@@ -128,14 +88,8 @@
|
||||
generateMarking(){
|
||||
this.order.marking = Math.floor(Math.random() * 799999) + 200000;
|
||||
},
|
||||
toggleIncludeWarehouse(){
|
||||
this.order.warehouse_id = null;
|
||||
this.showWarehouse = !this.showWarehouse;
|
||||
},
|
||||
clearForm(){
|
||||
this.order.marking = '';
|
||||
this.order.warehouse_id = null;
|
||||
this.showWarehouse = false;
|
||||
this.generateMarking();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
<template>
|
||||
<div class="row m-t-20">
|
||||
<div class="col-7">
|
||||
<companies-list-component></companies-list-component>
|
||||
</div>
|
||||
<div class="col">
|
||||
<company-form-component type="create"></company-form-component>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
provide() {
|
||||
const countriesList = {};
|
||||
Object.defineProperty(countriesList, 'countries', {
|
||||
enumerable: true,
|
||||
get: () => this.countries
|
||||
});
|
||||
return {
|
||||
countriesList
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
countries: []
|
||||
}
|
||||
},
|
||||
created(){
|
||||
this.fetchCountries();
|
||||
},
|
||||
methods: {
|
||||
fetchCountries(){
|
||||
fetch(route('service.list.countries')).then(response => response.json())
|
||||
.then(response => {
|
||||
this.countries = $.map(response, function(value, key){
|
||||
return {'id': value.name, 'text': value.name};
|
||||
});
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -1,90 +1,91 @@
|
||||
@extends('layouts.base_portal')
|
||||
|
||||
@section('inner_content')
|
||||
<div class="row m-t-30">
|
||||
<div class="col-3">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<company-summary-component data="{{$companyId}}"></company-summary-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card no-border bg-transparent">
|
||||
<ul class="nav nav-tabs nav-tabs-master nav-tabs-fillup b-b b-grey">
|
||||
<li>
|
||||
<a data-toggle="tab" class="active" href="#orders">
|
||||
<span>
|
||||
<i class="fa fa-truck v-align-middle inline"></i>
|
||||
<div class="v-align-middle inline">Orders</div>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-toggle="tab" href="#addressBook">
|
||||
<span>
|
||||
<i class="fa fa-location-arrow v-align-middle inline"></i>
|
||||
<div class="v-align-middle inline">Address Book</div>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="hide">
|
||||
<a data-toggle="tab" href="#connections">
|
||||
<span>
|
||||
<i class="fa fa-vcard v-align-middle inline"></i>
|
||||
<div class="v-align-middle inline">Connections</div>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-toggle="tab" href="#contacts">
|
||||
<span>
|
||||
<i class="fa fa-address-book v-align-middle inline"></i>
|
||||
<div class="v-align-middle inline">Contacts</div>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content bg-transparent p-l-0 p-r-0">
|
||||
<div class="tab-pane active" id="orders">
|
||||
<orders-list-component data="{{$companyId}}"></orders-list-component>
|
||||
</div>
|
||||
<div class="tab-pane" id="addressBook">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<address-book-list-component data="{{$companyId}}"></address-book-list-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="connections">
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="contacts">
|
||||
<contact-list-component :data="{'type': 'company', 'reference': '{{$companyId}}'}"></contact-list-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-2 p-t-40 p-r-0 p-l-0">
|
||||
<div class="row m-b-15 parentContainer">
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-block btn-primary b-rad-none all-caps bold p-t-10 p-b-10 requestModal" data-type="newOrder"><i class="fa fa-shopping-basket fs-14 m-r-5"></i> New Order</button>
|
||||
<modal-component type="newOrder">
|
||||
<order-form-component data="{{$companyId}}"></order-form-component>
|
||||
</modal-component>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-b-15">
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-block btn-info b-rad-none all-caps bold p-t-10 p-b-10"><i class="fa fa-envelope-open-o fs-14 m-r-5"></i> Send Invite</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-block btn-info bg-master bg-master b-rad-none all-caps bold p-t-10 p-b-10"><i class="fa fa-line-chart fs-14 m-r-5"></i> Reports</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{--<div class="row m-t-30">--}}
|
||||
{{--<div class="col-3">--}}
|
||||
{{--<div class="row">--}}
|
||||
{{--<div class="col">--}}
|
||||
{{--<company-summary-component data="{{$companyId}}"></company-summary-component>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--<div class="col">--}}
|
||||
{{--<div class="card no-border bg-transparent">--}}
|
||||
{{--<ul class="nav nav-tabs nav-tabs-master nav-tabs-fillup b-b b-grey">--}}
|
||||
{{--<li>--}}
|
||||
{{--<a data-toggle="tab" class="active" href="#orders">--}}
|
||||
{{--<span>--}}
|
||||
{{--<i class="fa fa-truck v-align-middle inline"></i>--}}
|
||||
{{--<div class="v-align-middle inline">Orders</div>--}}
|
||||
{{--</span>--}}
|
||||
{{--</a>--}}
|
||||
{{--</li>--}}
|
||||
{{--<li>--}}
|
||||
{{--<a data-toggle="tab" href="#addressBook">--}}
|
||||
{{--<span>--}}
|
||||
{{--<i class="fa fa-location-arrow v-align-middle inline"></i>--}}
|
||||
{{--<div class="v-align-middle inline">Address Book</div>--}}
|
||||
{{--</span>--}}
|
||||
{{--</a>--}}
|
||||
{{--</li>--}}
|
||||
{{--<li class="hide">--}}
|
||||
{{--<a data-toggle="tab" href="#connections">--}}
|
||||
{{--<span>--}}
|
||||
{{--<i class="fa fa-vcard v-align-middle inline"></i>--}}
|
||||
{{--<div class="v-align-middle inline">Connections</div>--}}
|
||||
{{--</span>--}}
|
||||
{{--</a>--}}
|
||||
{{--</li>--}}
|
||||
{{--<li>--}}
|
||||
{{--<a data-toggle="tab" href="#contacts">--}}
|
||||
{{--<span>--}}
|
||||
{{--<i class="fa fa-address-book v-align-middle inline"></i>--}}
|
||||
{{--<div class="v-align-middle inline">Contacts</div>--}}
|
||||
{{--</span>--}}
|
||||
{{--</a>--}}
|
||||
{{--</li>--}}
|
||||
{{--</ul>--}}
|
||||
{{--<div class="tab-content bg-transparent p-l-0 p-r-0">--}}
|
||||
{{--<div class="tab-pane active" id="orders">--}}
|
||||
{{--<orders-list-component data="{{$companyId}}"></orders-list-component>--}}
|
||||
{{--</div>--}}
|
||||
{{--<div class="tab-pane" id="addressBook">--}}
|
||||
{{--<div class="row">--}}
|
||||
{{--<div class="col">--}}
|
||||
{{--<address-book-list-component data="{{$companyId}}"></address-book-list-component>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--<div class="tab-pane" id="connections">--}}
|
||||
{{----}}
|
||||
{{--</div>--}}
|
||||
{{--<div class="tab-pane" id="contacts">--}}
|
||||
{{--<contact-list-component :data="{'type': 'company', 'reference': '{{$companyId}}'}"></contact-list-component>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--<div class="col-2 p-t-40 p-r-0 p-l-0">--}}
|
||||
{{--<div class="row m-b-15 parentContainer">--}}
|
||||
{{--<div class="col">--}}
|
||||
{{--<button class="btn btn-sm btn-block btn-primary b-rad-none all-caps bold p-t-10 p-b-10 requestModal" data-type="newOrder"><i class="fa fa-shopping-basket fs-14 m-r-5"></i> New Order</button>--}}
|
||||
{{--<modal-component type="newOrder">--}}
|
||||
{{--<order-form-component data="{{$companyId}}"></order-form-component>--}}
|
||||
{{--</modal-component>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--<div class="row m-b-15">--}}
|
||||
{{--<div class="col">--}}
|
||||
{{--<button class="btn btn-sm btn-block btn-info b-rad-none all-caps bold p-t-10 p-b-10"><i class="fa fa-envelope-open-o fs-14 m-r-5"></i> Send Invite</button>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--<div class="row">--}}
|
||||
{{--<div class="col">--}}
|
||||
{{--<button class="btn btn-sm btn-block btn-info bg-master bg-master b-rad-none all-caps bold p-t-10 p-b-10"><i class="fa fa-line-chart fs-14 m-r-5"></i> Reports</button>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
<company-profile-component data="{{$companyId}}"></company-profile-component>
|
||||
@endsection
|
||||
|
||||
|
||||
+5
-3
@@ -102,11 +102,13 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
|
||||
|
||||
Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], function () {
|
||||
|
||||
// Create new warehouses
|
||||
Route::post('/{companyId}/create', 'OrderController@insert')->name('create');
|
||||
Route::get('/company/{companyId}/list', 'OrderController@listCompanyOrders')->name('company.list');
|
||||
|
||||
Route::post('/{orderId}', 'OrderController@updateStep')->name('step.update');
|
||||
Route::post('/{companyId}/create', 'CreateOrderController@create')->name('create');
|
||||
Route::delete('/{orderId}/delete', 'OrderController@delete')->name('delete');
|
||||
|
||||
|
||||
Route::post('/{orderId}/update', 'OrderController@updateStep')->name('step.update');
|
||||
|
||||
Route::post('/{orderId}/packing-list', 'OrderController@updatePackingList')->name('packages.update');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user