diff --git a/app/Classes/Modules/Accounts/Services/ExpiresPasswordReset.php b/app/Classes/Modules/Accounts/Services/ExpiresPasswordReset.php new file mode 100644 index 00000000..b8b27692 --- /dev/null +++ b/app/Classes/Modules/Accounts/Services/ExpiresPasswordReset.php @@ -0,0 +1,28 @@ +is_expired = true; + return $this->handler($model); + + + } + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php b/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php index d63678f3..4d9677d3 100644 --- a/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php +++ b/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php @@ -55,6 +55,7 @@ class GeneratesAuthenticationToken { /** @var Company $companyModule */ $companyModule = $user->companyModule()->first(); + $order = $companyModule->orders->count(); $claims = [ 'id' => $user->id, @@ -66,7 +67,9 @@ class GeneratesAuthenticationToken { if($user->type === RoleTypes::USER) { $claims = array_merge($claims, [ - 'company_id' => $companyModule->company_id + 'company_id' => $companyModule->company_id, + 'company_module_id' => $companyModule->id, + 'order' => $order ]); } diff --git a/app/Models/CompanyModule.php b/app/Models/CompanyModule.php index bcb39dee..ce6ffc90 100644 --- a/app/Models/CompanyModule.php +++ b/app/Models/CompanyModule.php @@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphMany; +use Illuminate\Database\Eloquent\Relations\HasMany; + use Illuminate\Database\Eloquent\SoftDeletes; /** @@ -56,6 +58,15 @@ class CompanyModule extends AbstractModel return $this->belongsToMany(User::class, (new CompanyEmployee())->getTable(), 'company_module_id', 'user_id'); } + /** + * @return HasMany + */ + public function orders(): HasMany + { + return $this->HasMany(Order::class, 'company_module_id'); + } + + // /** // * @return HasMany // */ diff --git a/database/migrations/2021_07_05_115638_create_banks_table.php b/database/migrations/2021_07_05_115638_create_banks_table.php index 6b416d79..e41e8483 100644 --- a/database/migrations/2021_07_05_115638_create_banks_table.php +++ b/database/migrations/2021_07_05_115638_create_banks_table.php @@ -45,6 +45,6 @@ class CreateBanksTable extends Migration */ public function down() { - Schema::dropIfExists('banks'); + Schema::dropIfExists('bank_accounts'); } } diff --git a/resources/assets/sass/_custom.scss b/resources/assets/sass/_custom.scss new file mode 100644 index 00000000..d5520287 --- /dev/null +++ b/resources/assets/sass/_custom.scss @@ -0,0 +1,113 @@ +@page { + header: page-header; + footer: page-footer; +} + +body { + font-family: sun-extA; +} + +.header { + margin-top: 5em; +} + +.sidebar { + width: 285px; + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: 100; + padding: 0 15px 0 15px; /* Height of navbar */ + /* box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); */ +} + +.sidebar-sticky { + position: relative; + top: 0; + height: calc(100vh - 48px); + padding-top: .5rem; + overflow-x: hidden; + overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { +.sidebar-sticky { + position: -webkit-sticky; + position: sticky; + } +} + +.sidebar .nav-link { + font-weight: 500; + color: #333; +} + +.sidebar .nav-link .feather { + margin-right: 4px; + color: #999; +} + +.sidebar .nav-link.active { + color: #007bff; +} + +.sidebar .nav-link:hover .feather, +.sidebar .nav-link.active .feather { + color: inherit; +} + +.sidebar-heading { + font-size: .75rem; + text-transform: uppercase; +} + +.navbar-brand { + padding-top: .75rem; + padding-bottom: .75rem; + font-size: 1rem; + background-color: rgba(0, 0, 0, .25); + box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25); +} + +.navbar .navbar-toggler { + top: .25rem; + right: 1rem; +} + +.navbar .form-control { + padding: .75rem 1rem; + border-width: 0; + border-radius: 0; +} + +.form-control-dark { + color: #fff; + background-color: rgba(255, 255, 255, .1); + border-color: rgba(255, 255, 255, .1); +} + +.form-control-dark:focus { + border-color: transparent; + box-shadow: 0 0 0 3px rgba(255, 255, 255, .25); +} + +.text-menu { + color: #a6a6a6; + font-size: 16px; +} + +.board { + width: 100%; + height: 180px; + background: -webkit-linear-gradient(#503C93, #912873); + background: linear-gradient(#503C93, #912873); +} + +.text-small { + font-size: 12px; +} + +.btn-white { + background-color: #ffffff !important; +} \ No newline at end of file diff --git a/resources/assets/sass/main.scss b/resources/assets/sass/main.scss index 6c8a8703..d606b5f9 100644 --- a/resources/assets/sass/main.scss +++ b/resources/assets/sass/main.scss @@ -32,6 +32,8 @@ @import "modules"; // Responsive Util @import "responsive"; +// Import custom +@import "custom"; diff --git a/resources/assets/vue/components/accounts/elements/EmailVerificationComponent.vue b/resources/assets/vue/components/accounts/elements/EmailVerificationComponent.vue new file mode 100644 index 00000000..5169f3b0 --- /dev/null +++ b/resources/assets/vue/components/accounts/elements/EmailVerificationComponent.vue @@ -0,0 +1,77 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/accounts/elements/LoginFormComponent.vue b/resources/assets/vue/components/accounts/elements/LoginFormComponent.vue new file mode 100644 index 00000000..db5b7111 --- /dev/null +++ b/resources/assets/vue/components/accounts/elements/LoginFormComponent.vue @@ -0,0 +1,78 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue b/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue new file mode 100644 index 00000000..de1c6443 --- /dev/null +++ b/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue @@ -0,0 +1,63 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue index e5a6c991..e5ee6305 100644 --- a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue @@ -28,6 +28,13 @@
Sign In
+
+
+
+

New Customer? Create Account

+
+
+
diff --git a/resources/assets/vue/components/accounts/forms/RegistrationCheckEmailFormComponent.vue b/resources/assets/vue/components/accounts/forms/RegistrationCheckEmailFormComponent.vue new file mode 100644 index 00000000..e96c3f46 --- /dev/null +++ b/resources/assets/vue/components/accounts/forms/RegistrationCheckEmailFormComponent.vue @@ -0,0 +1,84 @@ + + diff --git a/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue b/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue index e436960a..be33cc6e 100644 --- a/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue @@ -6,14 +6,13 @@
-
Create Account
-
Create your account by filling in the form below.
+
-
+
@@ -27,22 +26,11 @@
-
- -

Company

-
-

Personal

@@ -80,81 +68,148 @@
-
-
-
-
-
-
-
-
-

Account Information

-
-
-
-
- - - - -
-
-
-
- - - - -
-
- - - - -
-
-
-
-
-
-
-
-
-
- +
+
+ +
- -
-
- -
-
- - -
-
-
-
- -
-
- +
@@ -166,8 +221,14 @@ diff --git a/resources/assets/vue/components/accounts/sections/RegistrationSectionComponent.vue b/resources/assets/vue/components/accounts/sections/RegistrationSectionComponent.vue new file mode 100644 index 00000000..e956e17c --- /dev/null +++ b/resources/assets/vue/components/accounts/sections/RegistrationSectionComponent.vue @@ -0,0 +1,39 @@ + + diff --git a/resources/assets/vue/components/companies/sections/customerDashboardSectionComponent.vue b/resources/assets/vue/components/companies/sections/customerDashboardSectionComponent.vue new file mode 100644 index 00000000..6d8979aa --- /dev/null +++ b/resources/assets/vue/components/companies/sections/customerDashboardSectionComponent.vue @@ -0,0 +1,21 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/general/elements/LoadingComponent.vue b/resources/assets/vue/components/general/elements/LoadingComponent.vue index 77668ce3..e4180dca 100644 --- a/resources/assets/vue/components/general/elements/LoadingComponent.vue +++ b/resources/assets/vue/components/general/elements/LoadingComponent.vue @@ -24,7 +24,7 @@ case 'primary': return '#912873'; case 'success': - return '#349128'; + return '#912873'; case 'danger': return '#F3201F'; case 'white': diff --git a/resources/assets/vue/general/mixins/accounts/checkEmailHandler.js b/resources/assets/vue/general/mixins/accounts/checkEmailHandler.js new file mode 100644 index 00000000..8be23185 --- /dev/null +++ b/resources/assets/vue/general/mixins/accounts/checkEmailHandler.js @@ -0,0 +1,23 @@ +import errorMessageHandler from "../errorMessageHandler"; +import formHandler from "../formHandler"; + +export default { + methods: { + successHandler(response){ + this.formHandler(''); + this.status = { + message:response.message, + error:false + } + }, + errorHandler(error){ + this.formHandler(error.message); + this.status = { + message:"", + error:true + } + } + }, + mixins: [errorMessageHandler, formHandler] + +} \ No newline at end of file diff --git a/resources/assets/vue/general/mixins/accounts/validation/registrationCheckEmailValidation.js b/resources/assets/vue/general/mixins/accounts/validation/registrationCheckEmailValidation.js new file mode 100644 index 00000000..04e80ac2 --- /dev/null +++ b/resources/assets/vue/general/mixins/accounts/validation/registrationCheckEmailValidation.js @@ -0,0 +1,13 @@ +import { required, email } from "vuelidate/lib/validators"; +import checkEmailHandler from '../checkEmailHandler' +export default { + validations: { + parameters: { + email: { + required, + email + }, + } + }, + mixins: [checkEmailHandler] +} \ No newline at end of file diff --git a/resources/assets/vue/general/mixins/accounts/validation/registrationFormValidation.js b/resources/assets/vue/general/mixins/accounts/validation/registrationFormValidation.js index a280739d..69e6ead0 100644 --- a/resources/assets/vue/general/mixins/accounts/validation/registrationFormValidation.js +++ b/resources/assets/vue/general/mixins/accounts/validation/registrationFormValidation.js @@ -4,10 +4,10 @@ export default { validations: { parameters: { name: { - required + required, }, email: { - required: requiredIf(function () { return this.step === 2 }), + required, email }, company_name: { @@ -18,12 +18,18 @@ export default { numeric }, password: { - required: requiredIf(function () { return this.step === 2 }), + required }, password_confirmation: { - required: requiredIf(function () { return this.step === 2 }), + required, sameAs: sameAs('password') - } + }, + identification_no:{ + required + }, + files:{ + required + }, } }, mixins: [authenticationHandler] diff --git a/resources/assets/vue/general/mixins/stepNavi.js b/resources/assets/vue/general/mixins/stepNavi.js new file mode 100644 index 00000000..a3c05a0d --- /dev/null +++ b/resources/assets/vue/general/mixins/stepNavi.js @@ -0,0 +1,22 @@ +export default { + methods: { + changeStep(direction) { + this.status.direction = direction; + + if (direction === 'next') { + + if (this.validate()) { + //this.step += 1; + this.status.email = this.parameters.email; + this.$emit('updateStatus', this.status); + } + return; + } + this.$emit('updateStatus', this.status); + this.$v.$reset(); + }, + }, + beforeDestroy: function (event) { + }, + +} \ No newline at end of file diff --git a/resources/assets/vue/vuex/modules/authentication.js b/resources/assets/vue/vuex/modules/authentication.js index f349afa2..0af8a45b 100644 --- a/resources/assets/vue/vuex/modules/authentication.js +++ b/resources/assets/vue/vuex/modules/authentication.js @@ -17,6 +17,8 @@ export default { getUserId: (state, getters) => getters.getDecodedAccessToken.user.id, getUserEmail: (state, getters) => getters.getDecodedAccessToken.user.email, getCompanyId: (state, getters) => getters.getDecodedAccessToken.user.company_id, + getCompanyModuleId: (state, getters) => getters.getDecodedAccessToken.user.company_module_id, + getOrder: (state, getters) => getters.getDecodedAccessToken.user.order, getDecodedAccessToken(state) { try{ diff --git a/resources/views/layouts/base_login.blade.php b/resources/views/layouts/base_login.blade.php index dcd78ed9..b189d212 100644 --- a/resources/views/layouts/base_login.blade.php +++ b/resources/views/layouts/base_login.blade.php @@ -1,7 +1,5 @@ @extends('layouts.base') @section('content') - - @yield('inner_content') - + @yield('inner_content') @endsection \ No newline at end of file diff --git a/resources/views/layouts/base_portal.blade.php b/resources/views/layouts/base_portal.blade.php index 583dcc37..cadf3ee4 100644 --- a/resources/views/layouts/base_portal.blade.php +++ b/resources/views/layouts/base_portal.blade.php @@ -2,6 +2,7 @@ @section('content') @include('partials.header') + @include('partials.menu')
diff --git a/resources/views/pages/accounts/email_verified.blade.php b/resources/views/pages/accounts/email_verified.blade.php new file mode 100644 index 00000000..86cf0405 --- /dev/null +++ b/resources/views/pages/accounts/email_verified.blade.php @@ -0,0 +1,13 @@ +@extends('layouts.base_login') + +@section('inner_content') +
+
+
+
+ +
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/pages/accounts/login.blade.php b/resources/views/pages/accounts/login.blade.php index 4042bc05..9e7a5181 100644 --- a/resources/views/pages/accounts/login.blade.php +++ b/resources/views/pages/accounts/login.blade.php @@ -1,7 +1,7 @@ @extends('layouts.base_login') @section('inner_content') -
+
@@ -57,7 +57,7 @@
-
+
@@ -123,7 +123,21 @@
+
+
+
+
+
+
+ +
+
+ +
+
+
+
@endsection \ No newline at end of file diff --git a/resources/views/pages/accounts/reset_password.blade.php b/resources/views/pages/accounts/reset_password.blade.php new file mode 100644 index 00000000..4fae44b7 --- /dev/null +++ b/resources/views/pages/accounts/reset_password.blade.php @@ -0,0 +1,74 @@ +@extends('layouts.base_login') + +@section('inner_content') + +
+
+ +
+
+
+
+ + +
+
+
+
+
Reset your password
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+

Support:

+
+
+
+
+

To obtain access to this site or for any questions about its
use submit an email message to info@izyim.com

+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Password Changed
+
+
+
+
+ Your password has been changed successfully +
+
+
+ +
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/pages/dashboards/admin.blade.php b/resources/views/pages/dashboards/admin.blade.php new file mode 100644 index 00000000..71944a13 --- /dev/null +++ b/resources/views/pages/dashboards/admin.blade.php @@ -0,0 +1,461 @@ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Payments
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Supplier Bills
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
    +
  • +
  • +
+
+
+
+
+

webarch

+

Today's sales

+
+

+ MYR + 102,967 +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
Purchase CODE #2345 + Qty 1 + + 27 RM +
+
+
+
+
+
+
+
+
+
+
+ {{----}} + {{----}} + {{----}} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Currency Orders
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Payment Proof
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Purchase Orders
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+ Pending Verification +
+
+
+
+ + + +
+
+
+
+
+
+
+
+ Pending Submission +
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1.5810
+
+
+
+
+
- 0.0% +
+
+
+
+
+
+
+
RMB
+
+
+
USD
+
+
+
SGD
+
+
+
+
+
+
+
+
+
+
+
+
+
Customer Verification
+
+
+ +
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/resources/views/pages/dashboards/customer.blade.php b/resources/views/pages/dashboards/customer.blade.php new file mode 100644 index 00000000..c5e842c2 --- /dev/null +++ b/resources/views/pages/dashboards/customer.blade.php @@ -0,0 +1,5 @@ +
+
+ +
+
\ No newline at end of file diff --git a/resources/views/pages/dashboards/index.blade.php b/resources/views/pages/dashboards/index.blade.php new file mode 100644 index 00000000..496640e4 --- /dev/null +++ b/resources/views/pages/dashboards/index.blade.php @@ -0,0 +1,5 @@ +@extends('layouts.base_portal') +@section('inner_content') + @include('pages.dashboards.admin') + @include('pages.dashboards.customer') +@endsection \ No newline at end of file diff --git a/resources/views/pages/templates/dashboard.blade.php b/resources/views/pages/templates/dashboard.blade.php new file mode 100644 index 00000000..ca3b8dc7 --- /dev/null +++ b/resources/views/pages/templates/dashboard.blade.php @@ -0,0 +1,206 @@ + + + + @include('vendor/head') + + + + + + + \ No newline at end of file diff --git a/resources/views/partials/footer.blade.php b/resources/views/partials/footer.blade.php new file mode 100644 index 00000000..0a705893 --- /dev/null +++ b/resources/views/partials/footer.blade.php @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php new file mode 100644 index 00000000..ba63175b --- /dev/null +++ b/resources/views/partials/header.blade.php @@ -0,0 +1,12 @@ + diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php new file mode 100644 index 00000000..e1b8a017 --- /dev/null +++ b/resources/views/partials/menu.blade.php @@ -0,0 +1,89 @@ + diff --git a/resources/views/vendor/head.blade.php b/resources/views/vendor/head.blade.php index 994929c5..d51cea64 100644 --- a/resources/views/vendor/head.blade.php +++ b/resources/views/vendor/head.blade.php @@ -1,6 +1,6 @@ -Exchange - Overseas Money Transfers +IZYIM Shipping diff --git a/routes/template.php b/routes/template.php new file mode 100644 index 00000000..980da02a --- /dev/null +++ b/routes/template.php @@ -0,0 +1,10 @@ + 'template'], function () { + Route::get('/dashboard', function () { + return view('pages.templates.dashboard'); + })->name('template.dashboard'); +}); diff --git a/routes/web.php b/routes/web.php index a4397592..6fc5897b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,6 +13,8 @@ use Illuminate\Support\Facades\Route; | */ +require __DIR__ . '/template.php'; + Route::get('/', function () { return view('welcome'); });