diff --git a/app/Classes/Modules/Accounts/DataTransferObjects/UserInvitationObject.php b/app/Classes/Modules/Accounts/DataTransferObjects/UserInvitationObject.php index ac1adc3..e8c8041 100644 --- a/app/Classes/Modules/Accounts/DataTransferObjects/UserInvitationObject.php +++ b/app/Classes/Modules/Accounts/DataTransferObjects/UserInvitationObject.php @@ -54,5 +54,13 @@ class UserInvitationObject return $this->hash; } + /** + * @param null|string $hash + */ + public function setHash(?string $hash): void + { + $this->hash = $hash; + } + } \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Services/CreatesUserInvitation.php b/app/Classes/Modules/Accounts/Services/CreatesUserInvitation.php index 91399f6..1c899ff 100644 --- a/app/Classes/Modules/Accounts/Services/CreatesUserInvitation.php +++ b/app/Classes/Modules/Accounts/Services/CreatesUserInvitation.php @@ -6,6 +6,7 @@ namespace App\Classes\Modules\Accounts\Services; use App\Classes\common; use App\Classes\Modules\Accounts\DataTransferObjects\UserInvitationObject; use App\Classes\Modules\Accounts\Exceptions\InvitationAlreadyExistsException; +use App\Classes\Modules\ControllerLogic\Exceptions\ResourceConflictException; use App\Models\UserInvitation; final class CreatesUserInvitation @@ -27,17 +28,21 @@ final class CreatesUserInvitation /** * @param UserInvitationObject $object * @return UserInvitation|null + * @throws ResourceConflictException */ public function execute(UserInvitationObject $object): ?UserInvitation { - $model = $this->repository->create([ - 'email' => $object->getInviteeEmail(), - 'hash' => $object->getHash(), - 'role_id' => $object->getRole(), - 'sender_id' => auth()->user()->getAuthIdentifier(), - 'is_complete' => false, - ]); - return $model; + + + $this->repository->email = $object->getInviteeEmail(); + $this->repository->hash = $object->getHash(); + $this->repository->role_id = $object->getRole(); + $this->repository->sender_id = auth()->user()->getAuthIdentifier(); + $this->repository->is_complete = false; + + $this->repository->save(); + + return $this->repository; } diff --git a/app/Classes/Modules/Accounts/Services/ListUserAccount.php b/app/Classes/Modules/Accounts/Services/ListsUserAccount.php similarity index 83% rename from app/Classes/Modules/Accounts/Services/ListUserAccount.php rename to app/Classes/Modules/Accounts/Services/ListsUserAccount.php index 5df19b0..4ecd5de 100644 --- a/app/Classes/Modules/Accounts/Services/ListUserAccount.php +++ b/app/Classes/Modules/Accounts/Services/ListsUserAccount.php @@ -12,7 +12,7 @@ namespace App\Classes\Modules\Accounts\Services; use App\Models\User; use App\Http\Resources\User as UserResource; -class ListUserAccount +class ListsUserAccount { /** @var User */ private $repository; @@ -29,7 +29,8 @@ class ListUserAccount public function execute() { - $user = $this->repository->get(); + /** @var User $user */ + $user = $this->repository->paginate(10); return UserResource::collection($user); } diff --git a/app/Classes/Modules/Accounts/Validation/CanSendAccountInvitation.php b/app/Classes/Modules/Accounts/Validation/CanSendAccountInvitation.php new file mode 100644 index 0000000..3e7b972 --- /dev/null +++ b/app/Classes/Modules/Accounts/Validation/CanSendAccountInvitation.php @@ -0,0 +1,39 @@ +repository = $repository; + } + + /** + * @param UserInvitationObject $object + * @return bool + */ + public function execute(UserInvitationObject $object){ + + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Validation/InvitationAlreadyExists.php b/app/Classes/Modules/Accounts/Validation/InvitationAlreadyExists.php new file mode 100644 index 0000000..4f98016 --- /dev/null +++ b/app/Classes/Modules/Accounts/Validation/InvitationAlreadyExists.php @@ -0,0 +1,43 @@ +repository = $repository; + } + + /** + * @param UserInvitationObject $object + * @return bool + * @throws ResourceConflictException + */ + public function execute(UserInvitationObject $object){ + + // ensure that there is not already an invitation for the email + $existingInvitations = $this->repository->where('email', $object->getInviteeEmail())->first(); + + if ($existingInvitations) { + throw new ResourceConflictException("An existing invitation already exists for the email {$object->getInviteeEmail()}"); + } + + + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Exceptions/CannotListCompanyOrderCategoryException.php b/app/Classes/Modules/Companies/Exceptions/CannotListCompanyOrderCategoryException.php new file mode 100644 index 0000000..90bb6c9 --- /dev/null +++ b/app/Classes/Modules/Companies/Exceptions/CannotListCompanyOrderCategoryException.php @@ -0,0 +1,15 @@ +repository = $repository; + } + + + /** + * @param int $id + * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection + * @throws CannotListCompanyOrderCategoryException + */ + public function execute(int $id){ + + try { + /** @var Order $orders */ + $orders = $this->repository->where('company_id', $id) + ->onlyTrashed()->get(); + + return OrderResource::collection($orders); + + } catch (\Exception $exception){ + throw new CannotListCompanyOrderCategoryException($exception->getMessage()); + } + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/ListsCompanyCompleteOrders.php b/app/Classes/Modules/Companies/Services/ListsCompanyCompleteOrders.php new file mode 100644 index 0000000..1513ee3 --- /dev/null +++ b/app/Classes/Modules/Companies/Services/ListsCompanyCompleteOrders.php @@ -0,0 +1,43 @@ +repository = $repository; + } + + /** + * @param int $id + * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection + * @throws CannotListCompanyOrderCategoryException + */ + public function execute(int $id){ + + try { + /** @var Order $orders */ + $orders = $this->repository->where('company_id', $id) + ->where('complete', true)->get(); + + return OrderResource::collection($orders); + + } catch (\Exception $exception){ + throw new CannotListCompanyOrderCategoryException($exception->getMessage()); + } + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/ListsCompanyOrdersCategory.php b/app/Classes/Modules/Companies/Services/ListsCompanyOrdersCategory.php new file mode 100644 index 0000000..8cff3a1 --- /dev/null +++ b/app/Classes/Modules/Companies/Services/ListsCompanyOrdersCategory.php @@ -0,0 +1,40 @@ +repository = $repository; + } + + public function execute(int $id, array $category){ + + try { + /** @var Order $orders */ + $orders = $this->repository->where('company_id', $id) + ->whereIn('current_step', $category)->get(); + + return OrderResource::collection($orders); + } catch (\Exception $exception){ + throw new CannotListCompanyOrderCategoryException($exception->getMessage()); + } + + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Accounts/RegistrationInvitationLogic.php b/app/Classes/Modules/ControllersLogic/Accounts/CreateAccountInvitationLogic.php similarity index 52% rename from app/Classes/Modules/ControllersLogic/Accounts/RegistrationInvitationLogic.php rename to app/Classes/Modules/ControllersLogic/Accounts/CreateAccountInvitationLogic.php index f7fe392..a84f4a3 100644 --- a/app/Classes/Modules/ControllersLogic/Accounts/RegistrationInvitationLogic.php +++ b/app/Classes/Modules/ControllersLogic/Accounts/CreateAccountInvitationLogic.php @@ -5,36 +5,35 @@ namespace App\Classes\Modules\ControllersLogic\Accounts; use App\Classes\Modules\Accounts\DataTransferObjects\UserInvitationObject; use App\Classes\Modules\Accounts\Services\CreatesUserInvitation; +use App\Classes\Modules\Accounts\Validation\CanSendAccountInvitation; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; use App\Classes\Modules\ControllerLogic\Exceptions\ResourceConflictException; use App\Classes\ValueObjects\Constants\HttpStatus; use App\Events\Accounts\UserInvited; -use App\Models\UserInvitation; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class RegistrationInvitationLogic +class CreateAccountInvitationLogic { - /** @var UserInvitation */ - private $repository; - /** @var CreatesUserInvitation */ private $createUserInvitation; + /** @var CanSendAccountInvitation */ + private $canSendAccountInvitation; + /** - * RegistrationInvitationLogic constructor. - * @param UserInvitation $repository + * CreateAccountInvitationLogic constructor. * @param CreatesUserInvitation $createUserInvitation + * @param CanSendAccountInvitation $canSendAccountInvitation */ - public function __construct( - UserInvitation $repository, - CreatesUserInvitation $createUserInvitation - ) { - $this->repository = $repository; + public function __construct(CreatesUserInvitation $createUserInvitation, CanSendAccountInvitation $canSendAccountInvitation) + { $this->createUserInvitation = $createUserInvitation; + $this->canSendAccountInvitation = $canSendAccountInvitation; } + /** * @param Request $request * @return JsonResponse @@ -44,23 +43,18 @@ class RegistrationInvitationLogic try { - // the email doesn't exist in the database, so create the user $object = new UserInvitationObject($request->get('role_id'), $request->get('email')); - // ensure that there is not already an invitation for the email - $existingInvitations = $this->repository->where('email', $object->getInviteeEmail())->get(); + if($this->canSendAccountInvitation->execute($object)){ - if ($existingInvitations->count() !== 0) { - throw new ResourceConflictException("An existing invitation already exists for the email {$object->getInviteeEmail()}"); + + $invitation = $this->createUserInvitation->execute($object); + + event(new UserInvited($invitation)); + + return new JsonResponse("Invitation have been sent!", HttpStatus::RESOURCE_CREATED); } - $invitation = $this->createUserInvitation->execute($object); - - // dispatch event for user invited - event(new UserInvited($invitation)); - - return new JsonResponse("Invitation have been sent!", HttpStatus::RESOURCE_CREATED); - } catch (ResourceConflictException $exception) { throw new InternalServerErrorException("Failed to send user invitation because {$exception->getMessage()}"); } diff --git a/app/Classes/Modules/ControllersLogic/Accounts/CreateUserLogic.php b/app/Classes/Modules/ControllersLogic/Accounts/CreateUserLogic.php new file mode 100644 index 0000000..8c99404 --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Accounts/CreateUserLogic.php @@ -0,0 +1,41 @@ +createsUserAccount = $createsUserAccount; + } + + /** + * @param Request $request + * @return \App\Models\User|null + * @throws \App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException + */ + public function execute(Request $request){ + // the email doesn't exist in the database, so create the user + $object = new UserObject($request->get('first_name'), $request->get('last_name'), + $request->get('email'), $request->get('password'), 0, true); + + + return $this->createsUserAccount->execute($object); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Accounts/ListUserAccountLogic.php b/app/Classes/Modules/ControllersLogic/Accounts/ListUserAccountLogic.php index a35f5aa..d6aa88f 100644 --- a/app/Classes/Modules/ControllersLogic/Accounts/ListUserAccountLogic.php +++ b/app/Classes/Modules/ControllersLogic/Accounts/ListUserAccountLogic.php @@ -1,26 +1,20 @@ listUserAccount = $listUserAccount; } diff --git a/app/Classes/Modules/ControllersLogic/Companies/ListCompanyOrderLogic.php b/app/Classes/Modules/ControllersLogic/Companies/ListCompanyOrderLogic.php new file mode 100644 index 0000000..aa65564 --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Companies/ListCompanyOrderLogic.php @@ -0,0 +1,68 @@ +fetchCompanyOrderCategorySteps = $fetchCompanyOrderCategorySteps; + $this->listsCompanyCompleteOrders = $listsCompanyCompleteOrders; + $this->listCompanyCancelledOrders = $listCompanyCancelledOrders; + $this->listCompanyOrdersCategory = $listCompanyOrdersCategory; + } + + + /** + * @param int $id + * @param string $category + * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection + * @throws InternalServerErrorException + */ + public function execute(int $id, string $category){ + try { + switch ($category){ + case OrderSteps::COMPANY_COMPLETE_CATEGORY: + return $this->listsCompanyCompleteOrders->execute($id); + case OrderSteps::COMPANY_CANCEL_CATEGORY: + return $this->listCompanyCancelledOrders->execute($id); + default: + return $this->listCompanyOrdersCategory->execute($id, $this->fetchCompanyOrderCategorySteps->execute($category)); + + } + } catch (CannotListCompanyOrderCategoryException $exception){ + throw new InternalServerErrorException('Cannot list company\'s order in category because'.$exception); + } + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Orders/ConfirmOrderLogic.php b/app/Classes/Modules/ControllersLogic/Orders/ConfirmOrderLogic.php index 9812c7f..bdf78ad 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/ConfirmOrderLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/ConfirmOrderLogic.php @@ -2,7 +2,7 @@ namespace App\Classes\Modules\ControllersLogic\Orders; -use App\Classes\Modules\Accounts\Exceptions\CannotConfirmOrderException; +use App\Classes\Modules\Accounts\Exceptions\CannotListCompanyOrdersException; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\Services\ConfirmsOrder; @@ -66,7 +66,7 @@ class ConfirmOrderLogic return new JsonResponse("Order has been confirmed", HttpStatus::OK); - } catch (CannotConfirmOrderException $exception){ + } catch (CannotListCompanyOrdersException $exception){ throw new InternalServerErrorException("Failed to confirm order because {$exception->getMessage()}"); } } diff --git a/app/Classes/Modules/ControllersLogic/Warehouses/ListWarehouseOrderLogic.php b/app/Classes/Modules/ControllersLogic/Warehouses/ListWarehouseOrderLogic.php new file mode 100644 index 0000000..43524fe --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Warehouses/ListWarehouseOrderLogic.php @@ -0,0 +1,61 @@ +fetchOrderCategorySteps = $fetchOrderCategorySteps; + $this->listOrdersCategory = $listOrdersCategory; + $this->listCompleteOrders = $listCompleteOrders; + } + + + /** + * @param int $id + * @param string $category + * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection + * @throws InternalServerErrorException + */ + public function execute(int $id, string $category){ + try { + switch ($category){ + case OrderSteps::WAREHOUSE_COMPLETE_CATEGORY: + return $this->listCompleteOrders->execute($id, $this->fetchOrderCategorySteps->execute($category)); + default: + return $this->listOrdersCategory->execute($id, $this->fetchOrderCategorySteps->execute($category)); + + } + + } catch (CannotListCompanyOrderCategoryException $exception){ + throw new InternalServerErrorException('Cannot list warehouse\'s orders in '.$category.' category because'.$exception); + } + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/Processors/ConfirmsOrder.php b/app/Classes/Modules/Orders/Services/Processors/ConfirmsOrder.php index dd78f23..d8bfd55 100644 --- a/app/Classes/Modules/Orders/Services/Processors/ConfirmsOrder.php +++ b/app/Classes/Modules/Orders/Services/Processors/ConfirmsOrder.php @@ -4,7 +4,7 @@ namespace App\Classes\Modules\Orders\Services\Processors; use App\Classes\Constants; -use App\Classes\Modules\Accounts\Exceptions\CannotConfirmOrderException; +use App\Classes\Modules\Accounts\Exceptions\CannotListCompanyOrdersException; use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; use App\Classes\Modules\Orders\Services\CreatesOrderSteps; diff --git a/app/Classes/Modules/Warehouses/Services/FetchWarehouseOrderCategorySteps.php b/app/Classes/Modules/Warehouses/Services/FetchWarehouseOrderCategorySteps.php new file mode 100644 index 0000000..eb3e15e --- /dev/null +++ b/app/Classes/Modules/Warehouses/Services/FetchWarehouseOrderCategorySteps.php @@ -0,0 +1,24 @@ +repository = $repository; + } + + public function execute(int $id, array $category){ + + try { + /** @var Order $orders */ + $orders = $this->repository->where('warehouse_id', $id) + ->whereIn('current_step', $category) + ->orWhere('complete', true)->get(); + + return OrderResource::collection($orders); + } catch (\Exception $exception){ + throw new CannotListCompanyOrderCategoryException($exception->getMessage()); + } + + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Warehouses/Services/ListsWarehouseOrdersCategory.php b/app/Classes/Modules/Warehouses/Services/ListsWarehouseOrdersCategory.php new file mode 100644 index 0000000..f027c57 --- /dev/null +++ b/app/Classes/Modules/Warehouses/Services/ListsWarehouseOrdersCategory.php @@ -0,0 +1,40 @@ +repository = $repository; + } + + public function execute(int $id, array $category){ + + try { + /** @var Order $orders */ + $orders = $this->repository->where('warehouse_id', $id) + ->whereIn('current_step', $category)->get(); + + return OrderResource::collection($orders); + } catch (\Exception $exception){ + throw new CannotListCompanyOrderCategoryException($exception->getMessage()); + } + + + } + +} \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/OrderSteps.php b/app/Classes/ValueObjects/Constants/OrderSteps.php new file mode 100644 index 0000000..6e4893e --- /dev/null +++ b/app/Classes/ValueObjects/Constants/OrderSteps.php @@ -0,0 +1,55 @@ + 'Administrator', 1 => 'Administrator', 2 => 'Importer', diff --git a/app/Events/Accounts/UserEvent.php b/app/Events/Accounts/UserEvent.php index df520b5..c683b2b 100644 --- a/app/Events/Accounts/UserEvent.php +++ b/app/Events/Accounts/UserEvent.php @@ -3,4 +3,5 @@ namespace App\Events\Accounts; interface UserEvent { + public function getData(); } diff --git a/app/Events/Accounts/UserInvited.php b/app/Events/Accounts/UserInvited.php index 6311974..c827beb 100644 --- a/app/Events/Accounts/UserInvited.php +++ b/app/Events/Accounts/UserInvited.php @@ -21,7 +21,7 @@ class UserInvited implements UserEvent { /** * @return UserInvitation */ - public function getInvitation(): UserInvitation + public function getData(): UserInvitation { return $this->invitation; } diff --git a/app/Http/Controllers/Account/CreateUserController.php b/app/Http/Controllers/Account/CreateUserController.php new file mode 100644 index 0000000..6d9b361 --- /dev/null +++ b/app/Http/Controllers/Account/CreateUserController.php @@ -0,0 +1,16 @@ +execute($request); + + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Account/InviteUserController.php b/app/Http/Controllers/Account/InviteUserController.php index 71e29a4..52a9a84 100644 --- a/app/Http/Controllers/Account/InviteUserController.php +++ b/app/Http/Controllers/Account/InviteUserController.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers\Account; -use App\Classes\Modules\ControllersLogic\Accounts\RegistrationInvitationLogic; +use App\Classes\Modules\ControllersLogic\Accounts\CreateAccountInvitationLogic; use App\Http\Controllers\Controller; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -11,11 +11,11 @@ class InviteUserController extends Controller { /** * @param Request $request - * @param RegistrationInvitationLogic $logic + * @param CreateAccountInvitationLogic $logic * @return JsonResponse * @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException */ - public function invite(Request $request, RegistrationInvitationLogic $logic): JsonResponse { + public function invite(Request $request, CreateAccountInvitationLogic $logic): JsonResponse { return $logic->execute($request); } } diff --git a/app/Http/Controllers/Account/ListUserController.php b/app/Http/Controllers/Account/ListUserController.php index ad2d280..d9ec1e9 100644 --- a/app/Http/Controllers/Account/ListUserController.php +++ b/app/Http/Controllers/Account/ListUserController.php @@ -1,14 +1,7 @@ execute($id, $category); + + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/OrderController.php b/app/Http/Controllers/Orders/OrderController.php index 36fbc88..ac31725 100644 --- a/app/Http/Controllers/Orders/OrderController.php +++ b/app/Http/Controllers/Orders/OrderController.php @@ -25,6 +25,12 @@ class OrderController extends Controller return OrderResource::collection($orders); } + public function listWarehouseOrders(String $id){ + $orders = Order::where('warehouse', $id)->orderBy('created_at', 'DESC') + ->paginate(100); + return OrderResource::collection($orders); + } + public function updateStep(String $orderId, Request $request, UpdateOrderStepLogic $logic){ return $logic->execute($orderId, $request); // return (new UpdateOrderStepLogic())->execute($orderId, $request) ? 200 : 408; diff --git a/app/Http/Controllers/Warehouses/WarehouseOrderController.php b/app/Http/Controllers/Warehouses/WarehouseOrderController.php new file mode 100644 index 0000000..911bb21 --- /dev/null +++ b/app/Http/Controllers/Warehouses/WarehouseOrderController.php @@ -0,0 +1,24 @@ +execute($id, $category); + + } + +} \ No newline at end of file diff --git a/app/Http/Resources/User.php b/app/Http/Resources/User.php index 82cecbf..5fcb8ea 100644 --- a/app/Http/Resources/User.php +++ b/app/Http/Resources/User.php @@ -2,8 +2,8 @@ namespace App\Http\Resources; -use App\Classes\Constants; use App\Classes\ValueObjects\Constants\UserRoles; +use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; class User extends JsonResource @@ -18,8 +18,8 @@ class User extends JsonResource { return [ 'full_name' => $this->first_name.' '.$this->last_name, - 'role' => UserRoles::ROLES_ID[$this->role_id], - 'created_at' => $this->created_at + 'role' => UserRoles::ROLES_NAMES[$this->role_id], + 'created_at' =>Carbon::parse($this->created_at)->format('d/m/Y') ]; } } diff --git a/config/mail.php b/config/mail.php index 95280a1..719bc4e 100644 --- a/config/mail.php +++ b/config/mail.php @@ -57,7 +57,7 @@ return [ 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'noreply@izyim.com'), - 'name' => env('MAIL_FROM_NAME', 'No Reply'), + 'name' => env('MAIL_FROM_NAME', 'IZYIM'), ], /* diff --git a/package.json b/package.json index efd4ca3..cc22426 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "magnific-popup": "^1.1.0", "metrojs": "^0.9.77", "modernizr": "^3.5.0", + "noty": "^3.2.0-beta", "owl.carousel": "^2.3.3", "pretty-checkbox": "^3.0.3", "select2": "^4.0.6-rc.1", @@ -42,9 +43,7 @@ "twitter-bootstrap-wizard": "^1.2.0", "typeahead.js": "^0.11.1", "vue-avatar": "^2.1.7", - "vue-select": "^2.5.1", - "vue-slide-up-down": "^1.4.1", - "vuejs-datepicker": "^1.5.4" + "vue-slide-up-down": "^1.4.1" }, "devDependencies": { "axios": "^0.18", @@ -104,6 +103,7 @@ "./node_modules/magnific-popup/dist/jquery.magnific-popup.js", "./node_modules/jquery-validation/dist/jquery.validate.js", "./node_modules/bootstrap-tagsinput/dist/bootstrap-tagsinput.js", + "./node_modules/noty/lib/noty.js", "./node_modules/vue/dist/vue.min.js", "./node_modules/switchery-npm/index.js" ], @@ -123,7 +123,12 @@ "./node_modules/magnific-popup/dist/magnific-popup.css", "./node_modules/pretty-checkbox/dist/pretty-checkbox.css", "./node_modules/bootstrap-tagsinput/dist/bootstrap-tagsinput.css", + "./node_modules/noty/lib/noty.css", + "./node_modules/noty/lib/themes/relax.css", + "./node_modules/noty/lib/themes/bootstrap-v4.css", + "./node_modules/noty/lib/themes/metroui.css", "./node_modules/bootstrap/dist/css/bootstrap.min.css" + ], "vendorFonts": [ "./node_modules/font-awesome/fonts/**/*" diff --git a/resources/assets/js/scripts.js b/resources/assets/js/scripts.js index 2a3dfb7..d000e65 100644 --- a/resources/assets/js/scripts.js +++ b/resources/assets/js/scripts.js @@ -28,6 +28,4 @@ $(function() { $('.singleLightBox').magnificPopup({ type: 'image' }); - - $('.datepicker').datepicker(); }); \ No newline at end of file diff --git a/resources/assets/js/validation.js b/resources/assets/js/validation.js index 6f22ce5..147759a 100644 --- a/resources/assets/js/validation.js +++ b/resources/assets/js/validation.js @@ -38,5 +38,15 @@ $(function() { onfocusout: false }); + $("#form-company").validate({ + rules: { + marking: true + }, + messages: { + marking: "this field is required" + }, + onfocusout: false + }); + }); diff --git a/resources/assets/sass/modules/_layout.scss b/resources/assets/sass/modules/_layout.scss index 9777866..6b37535 100644 --- a/resources/assets/sass/modules/_layout.scss +++ b/resources/assets/sass/modules/_layout.scss @@ -2064,6 +2064,17 @@ padding-right: 30px; } } } +.noty_bar { + .noty_body { + padding: 15px; + padding-bottom: 10px; + } + .noty_buttons { + padding: 15px; + padding-top: 0; + padding-bottom: 0; + } +} @keyframes slideDown { diff --git a/resources/assets/vue/app.js b/resources/assets/vue/app.js index 8138fc7..d2260bd 100644 --- a/resources/assets/vue/app.js +++ b/resources/assets/vue/app.js @@ -7,16 +7,12 @@ window.Vue = require('vue'); -import Avatar from 'vue-avatar' +import Avatar from 'vue-avatar'; Vue.component('user-avatar', Avatar); import SlideUpDown from 'vue-slide-up-down'; Vue.component('slide-up-down', SlideUpDown); -import Datepicker from 'vuejs-datepicker'; -Vue.component('datepicker', Datepicker); - - /** * Next, we will create a fresh Vue application instance and attach it to * the page. Then, you may begin adding components to this application @@ -30,6 +26,7 @@ Vue.component('modal-component', require('./components/common/ModalComponent.vue Vue.component('confirm-modal-component', require('./components/common/ConfirmModalComponent.vue')); Vue.component('warning-message-component', require('./components/common/WarningMessageComponent.vue')); Vue.component('accounts-search-component', require('./components/common/AccountsSearchComponent.vue')); +Vue.component('date-picker-component', require('./components/common/DatePickerComponent.vue')) //form elements Vue.component('file-selector', require('./components/form_elements/FileSelectorComponent.vue')); @@ -37,7 +34,8 @@ Vue.component('select-component', require('./components/form_elements/SelectComp Vue.component('address-component', require('./components/form_elements/AddressComponent.vue')); //lists -Vue.component('accounts-list-component', require('./components/account/lists/AccountsListComponenet.vue')); +Vue.component('accounts-list-component', require('./components/account/lists/AccountsListComponent.vue')); + Vue.component('companies-list-component', require('./components/company/lists/CompaniesListComponenet.vue')); Vue.component('address-book-list-component', require('./components/company/lists/AddressListComponenet.vue')); @@ -49,7 +47,8 @@ Vue.component('warehouses-list-component', require('./components/warehouse/lists Vue.component('orders-list-component', require('./components/order/lists/OrdersListComponenet.vue')); //elements -Vue.component('account-component', require('./components/account/elements/AccountComponenet.vue')); + +Vue.component('account-component', require('./components/account/elements/AccountComponent.vue')); Vue.component('company-profile-component', require('./components/company/elements/CompanyProfileComponenet.vue')); Vue.component('company-summary-component', require('./components/company/elements/CompanySummaryComponenet.vue')); @@ -82,7 +81,14 @@ Vue.component('contact-form-component', require('./components/contact/forms/Cont Vue.component('warehouse-form-component', require('./components/warehouse/forms/WarehouseFormComponent.vue')); -Vue.component('order-form-component', require('./components/order/forms/OrderFormComponent')); +Vue.component('order-form-component', require('./components/order/forms/OrderFormComponent.vue')); + +Vue.component('create-account-form-component', require('./components/account/forms/CreateAccountFormComponent.vue')); + + + +Vue.component('notification-component', require('./components/common/NotificationComponent.vue')); +Vue.component('company-error-notification-component', require('./components/company/notifications/CompanyErrorComponent.vue')); window.Event = new Vue(); diff --git a/resources/assets/vue/components/account/elements/AccountComponenet.vue b/resources/assets/vue/components/account/elements/AccountComponenet.vue deleted file mode 100644 index 83a5818..0000000 --- a/resources/assets/vue/components/account/elements/AccountComponenet.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - \ No newline at end of file diff --git a/resources/assets/vue/components/account/elements/AccountComponent.vue b/resources/assets/vue/components/account/elements/AccountComponent.vue new file mode 100644 index 0000000..7933646 --- /dev/null +++ b/resources/assets/vue/components/account/elements/AccountComponent.vue @@ -0,0 +1,38 @@ + + diff --git a/resources/assets/vue/components/account/forms/CreateAccountFormComponent.vue b/resources/assets/vue/components/account/forms/CreateAccountFormComponent.vue new file mode 100644 index 0000000..2a12455 --- /dev/null +++ b/resources/assets/vue/components/account/forms/CreateAccountFormComponent.vue @@ -0,0 +1,88 @@ + + + + diff --git a/resources/assets/vue/components/account/lists/AccountsListComponenet.vue b/resources/assets/vue/components/account/lists/AccountsListComponent.vue similarity index 84% rename from resources/assets/vue/components/account/lists/AccountsListComponenet.vue rename to resources/assets/vue/components/account/lists/AccountsListComponent.vue index feca70f..054d163 100644 --- a/resources/assets/vue/components/account/lists/AccountsListComponenet.vue +++ b/resources/assets/vue/components/account/lists/AccountsListComponent.vue @@ -1,13 +1,13 @@ + \ No newline at end of file + + + \ No newline at end of file diff --git a/resources/assets/vue/components/common/DatePickerComponent.vue b/resources/assets/vue/components/common/DatePickerComponent.vue new file mode 100644 index 0000000..f29308e --- /dev/null +++ b/resources/assets/vue/components/common/DatePickerComponent.vue @@ -0,0 +1,30 @@ + + + diff --git a/resources/assets/vue/components/common/NotificationComponent.vue b/resources/assets/vue/components/common/NotificationComponent.vue new file mode 100644 index 0000000..0f34dae --- /dev/null +++ b/resources/assets/vue/components/common/NotificationComponent.vue @@ -0,0 +1,39 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue index 6a88298..e67e2e2 100644 --- a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue +++ b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue @@ -36,7 +36,7 @@
  • - +
  • +
  • + + Cancelled + +
  • - +
    -
    - +
    +
    -
    - +
    +
    - + +
    +
    +
    +
    + +