From 1994884df475c25162d97dd6dd2292f9f839f042 Mon Sep 17 00:00:00 2001
From: Dan
Date: Mon, 17 Aug 2020 19:18:29 +0200
Subject: [PATCH 1/4] initial from template
---
.editorconfig | 0
.env.example | 0
.gitattributes | 0
.gitignore | 0
README.md | 0
app/Appointment.php | 0
app/Client.php | 0
app/Console/Kernel.php | 0
app/Employee.php | 0
app/Exceptions/Handler.php | 0
app/Http/Controllers/Admin/AppointmentsController.php | 0
app/Http/Controllers/Admin/ClientsController.php | 0
app/Http/Controllers/Admin/EmployeesController.php | 0
app/Http/Controllers/Admin/HomeController.php | 0
app/Http/Controllers/Admin/PermissionsController.php | 0
app/Http/Controllers/Admin/RolesController.php | 0
app/Http/Controllers/Admin/ServicesController.php | 0
app/Http/Controllers/Admin/SystemCalendarController.php | 0
app/Http/Controllers/Admin/UsersController.php | 0
app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php | 0
app/Http/Controllers/Api/V1/Admin/ClientsApiController.php | 0
app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php | 0
app/Http/Controllers/Api/V1/Admin/PermissionsApiController.php | 0
app/Http/Controllers/Api/V1/Admin/RolesApiController.php | 0
app/Http/Controllers/Api/V1/Admin/ServicesApiController.php | 0
app/Http/Controllers/Api/V1/Admin/UsersApiController.php | 0
app/Http/Controllers/Auth/ForgotPasswordController.php | 0
app/Http/Controllers/Auth/LoginController.php | 0
app/Http/Controllers/Auth/RegisterController.php | 0
app/Http/Controllers/Auth/ResetPasswordController.php | 0
app/Http/Controllers/Auth/VerificationController.php | 0
app/Http/Controllers/Controller.php | 0
app/Http/Controllers/Traits/MediaUploadingTrait.php | 0
app/Http/Kernel.php | 0
app/Http/Middleware/AuthGates.php | 0
app/Http/Middleware/Authenticate.php | 0
app/Http/Middleware/CheckForMaintenanceMode.php | 0
app/Http/Middleware/EncryptCookies.php | 0
app/Http/Middleware/RedirectIfAuthenticated.php | 0
app/Http/Middleware/SetLocale.php | 0
app/Http/Middleware/TrimStrings.php | 0
app/Http/Middleware/TrustProxies.php | 0
app/Http/Middleware/VerifyCsrfToken.php | 0
app/Http/Requests/MassDestroyAppointmentRequest.php | 0
app/Http/Requests/MassDestroyClientRequest.php | 0
app/Http/Requests/MassDestroyEmployeeRequest.php | 0
app/Http/Requests/MassDestroyPermissionRequest.php | 0
app/Http/Requests/MassDestroyRoleRequest.php | 0
app/Http/Requests/MassDestroyServiceRequest.php | 0
app/Http/Requests/MassDestroyUserRequest.php | 0
app/Http/Requests/StoreAppointmentRequest.php | 0
app/Http/Requests/StoreClientRequest.php | 0
app/Http/Requests/StoreEmployeeRequest.php | 0
app/Http/Requests/StorePermissionRequest.php | 0
app/Http/Requests/StoreRoleRequest.php | 0
app/Http/Requests/StoreServiceRequest.php | 0
app/Http/Requests/StoreUserRequest.php | 0
app/Http/Requests/UpdateAppointmentRequest.php | 0
app/Http/Requests/UpdateClientRequest.php | 0
app/Http/Requests/UpdateEmployeeRequest.php | 0
app/Http/Requests/UpdatePermissionRequest.php | 0
app/Http/Requests/UpdateRoleRequest.php | 0
app/Http/Requests/UpdateServiceRequest.php | 0
app/Http/Requests/UpdateUserRequest.php | 0
app/Http/Resources/Admin/AppointmentResource.php | 0
app/Http/Resources/Admin/ClientResource.php | 0
app/Http/Resources/Admin/EmployeeResource.php | 0
app/Http/Resources/Admin/PermissionResource.php | 0
app/Http/Resources/Admin/RoleResource.php | 0
app/Http/Resources/Admin/ServiceResource.php | 0
app/Http/Resources/Admin/UserResource.php | 0
app/Permission.php | 0
app/Providers/AppServiceProvider.php | 0
app/Providers/AuthServiceProvider.php | 0
app/Providers/BroadcastServiceProvider.php | 0
app/Providers/EventServiceProvider.php | 0
app/Providers/RouteServiceProvider.php | 0
app/Role.php | 0
app/Service.php | 0
app/User.php | 0
artisan | 0
bootstrap/app.php | 0
composer.json | 0
composer.lock | 0
config/app.php | 0
config/auth.php | 0
config/broadcasting.php | 0
config/cache.php | 0
config/database.php | 0
config/filesystems.php | 0
config/hashing.php | 0
config/logging.php | 0
config/mail.php | 0
config/panel.php | 0
config/queue.php | 0
config/services.php | 0
config/session.php | 0
config/view.php | 0
database/.gitignore | 0
database/factories/AppointmentFactory.php | 0
database/factories/ClientFactory.php | 0
database/factories/EmployeeFactory.php | 0
database/factories/ServiceFactory.php | 0
database/factories/UserFactory.php | 0
.../migrations/2014_10_12_100000_create_password_resets_table.php | 0
database/migrations/2019_09_19_000000_create_media_table.php | 0
.../migrations/2019_09_19_000001_create_permissions_table.php | 0
database/migrations/2019_09_19_000002_create_roles_table.php | 0
database/migrations/2019_09_19_000003_create_users_table.php | 0
database/migrations/2019_09_19_000004_create_services_table.php | 0
database/migrations/2019_09_19_000005_create_employees_table.php | 0
database/migrations/2019_09_19_000006_create_clients_table.php | 0
.../migrations/2019_09_19_000007_create_appointments_table.php | 0
.../2019_09_19_000008_create_permission_role_pivot_table.php | 0
.../migrations/2019_09_19_000009_create_role_user_pivot_table.php | 0
.../2019_09_19_000010_create_employee_service_pivot_table.php | 0
.../2019_09_19_000011_create_appointment_service_pivot_table.php | 0
...09_19_000012_add_relationship_fields_to_appointments_table.php | 0
database/seeds/AppointmentsTableSeeder.php | 0
database/seeds/ClientsTableSeeder.php | 0
database/seeds/DatabaseSeeder.php | 0
database/seeds/EmployeesTableSeeder.php | 0
database/seeds/PermissionRoleTableSeeder.php | 0
database/seeds/PermissionsTableSeeder.php | 0
database/seeds/RoleUserTableSeeder.php | 0
database/seeds/RolesTableSeeder.php | 0
database/seeds/ServicesTableSeeder.php | 0
database/seeds/UsersTableSeeder.php | 0
package.json | 0
phpunit.xml | 0
public/.htaccess | 0
public/css/custom.css | 0
public/favicon.ico | 0
public/index.php | 0
public/js/main.js | 0
public/robots.txt | 0
resources/js/app.js | 0
resources/js/bootstrap.js | 0
resources/lang/en/auth.php | 0
resources/lang/en/cruds.php | 0
resources/lang/en/global.php | 0
resources/lang/en/pagination.php | 0
resources/lang/en/panel.php | 0
resources/lang/en/passwords.php | 0
resources/lang/en/validation.php | 0
resources/sass/app.scss | 0
resources/views/admin/appointments/create.blade.php | 0
resources/views/admin/appointments/edit.blade.php | 0
resources/views/admin/appointments/index.blade.php | 0
resources/views/admin/appointments/show.blade.php | 0
resources/views/admin/calendar/calendar.blade.php | 0
resources/views/admin/clients/create.blade.php | 0
resources/views/admin/clients/edit.blade.php | 0
resources/views/admin/clients/index.blade.php | 0
resources/views/admin/clients/show.blade.php | 0
resources/views/admin/employees/create.blade.php | 0
resources/views/admin/employees/edit.blade.php | 0
resources/views/admin/employees/index.blade.php | 0
resources/views/admin/employees/show.blade.php | 0
resources/views/admin/permissions/create.blade.php | 0
resources/views/admin/permissions/edit.blade.php | 0
resources/views/admin/permissions/index.blade.php | 0
resources/views/admin/permissions/show.blade.php | 0
resources/views/admin/roles/create.blade.php | 0
resources/views/admin/roles/edit.blade.php | 0
resources/views/admin/roles/index.blade.php | 0
resources/views/admin/roles/show.blade.php | 0
resources/views/admin/services/create.blade.php | 0
resources/views/admin/services/edit.blade.php | 0
resources/views/admin/services/index.blade.php | 0
resources/views/admin/services/show.blade.php | 0
resources/views/admin/users/create.blade.php | 0
resources/views/admin/users/edit.blade.php | 0
resources/views/admin/users/index.blade.php | 0
resources/views/admin/users/show.blade.php | 0
resources/views/auth/login.blade.php | 0
resources/views/auth/passwords/email.blade.php | 0
resources/views/auth/passwords/reset.blade.php | 0
resources/views/home.blade.php | 0
resources/views/layouts/admin.blade.php | 0
resources/views/layouts/app.blade.php | 0
resources/views/partials/datatablesActions.blade.php | 0
resources/views/partials/menu.blade.php | 0
resources/views/welcome.blade.php | 0
routes/api.php | 0
routes/channels.php | 0
routes/console.php | 0
routes/web.php | 0
server.php | 0
tests/Browser/AppointmentsTest.php | 0
tests/Browser/ClientsTest.php | 0
tests/Browser/EmployeesTest.php | 0
tests/Browser/PermissionsTest.php | 0
tests/Browser/RolesTest.php | 0
tests/Browser/ServicesTest.php | 0
tests/Browser/UsersTest.php | 0
tests/CreatesApplication.php | 0
tests/Feature/ExampleTest.php | 0
tests/TestCase.php | 0
tests/Unit/ExampleTest.php | 0
tests/bootstrap.php | 0
webpack.mix.js | 0
yarn.lock | 0
203 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 .editorconfig
mode change 100644 => 100755 .env.example
mode change 100644 => 100755 .gitattributes
mode change 100644 => 100755 .gitignore
mode change 100644 => 100755 README.md
mode change 100644 => 100755 app/Appointment.php
mode change 100644 => 100755 app/Client.php
mode change 100644 => 100755 app/Console/Kernel.php
mode change 100644 => 100755 app/Employee.php
mode change 100644 => 100755 app/Exceptions/Handler.php
mode change 100644 => 100755 app/Http/Controllers/Admin/AppointmentsController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/ClientsController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/EmployeesController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/HomeController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/PermissionsController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/RolesController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/ServicesController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/SystemCalendarController.php
mode change 100644 => 100755 app/Http/Controllers/Admin/UsersController.php
mode change 100644 => 100755 app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php
mode change 100644 => 100755 app/Http/Controllers/Api/V1/Admin/ClientsApiController.php
mode change 100644 => 100755 app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php
mode change 100644 => 100755 app/Http/Controllers/Api/V1/Admin/PermissionsApiController.php
mode change 100644 => 100755 app/Http/Controllers/Api/V1/Admin/RolesApiController.php
mode change 100644 => 100755 app/Http/Controllers/Api/V1/Admin/ServicesApiController.php
mode change 100644 => 100755 app/Http/Controllers/Api/V1/Admin/UsersApiController.php
mode change 100644 => 100755 app/Http/Controllers/Auth/ForgotPasswordController.php
mode change 100644 => 100755 app/Http/Controllers/Auth/LoginController.php
mode change 100644 => 100755 app/Http/Controllers/Auth/RegisterController.php
mode change 100644 => 100755 app/Http/Controllers/Auth/ResetPasswordController.php
mode change 100644 => 100755 app/Http/Controllers/Auth/VerificationController.php
mode change 100644 => 100755 app/Http/Controllers/Controller.php
mode change 100644 => 100755 app/Http/Controllers/Traits/MediaUploadingTrait.php
mode change 100644 => 100755 app/Http/Kernel.php
mode change 100644 => 100755 app/Http/Middleware/AuthGates.php
mode change 100644 => 100755 app/Http/Middleware/Authenticate.php
mode change 100644 => 100755 app/Http/Middleware/CheckForMaintenanceMode.php
mode change 100644 => 100755 app/Http/Middleware/EncryptCookies.php
mode change 100644 => 100755 app/Http/Middleware/RedirectIfAuthenticated.php
mode change 100644 => 100755 app/Http/Middleware/SetLocale.php
mode change 100644 => 100755 app/Http/Middleware/TrimStrings.php
mode change 100644 => 100755 app/Http/Middleware/TrustProxies.php
mode change 100644 => 100755 app/Http/Middleware/VerifyCsrfToken.php
mode change 100644 => 100755 app/Http/Requests/MassDestroyAppointmentRequest.php
mode change 100644 => 100755 app/Http/Requests/MassDestroyClientRequest.php
mode change 100644 => 100755 app/Http/Requests/MassDestroyEmployeeRequest.php
mode change 100644 => 100755 app/Http/Requests/MassDestroyPermissionRequest.php
mode change 100644 => 100755 app/Http/Requests/MassDestroyRoleRequest.php
mode change 100644 => 100755 app/Http/Requests/MassDestroyServiceRequest.php
mode change 100644 => 100755 app/Http/Requests/MassDestroyUserRequest.php
mode change 100644 => 100755 app/Http/Requests/StoreAppointmentRequest.php
mode change 100644 => 100755 app/Http/Requests/StoreClientRequest.php
mode change 100644 => 100755 app/Http/Requests/StoreEmployeeRequest.php
mode change 100644 => 100755 app/Http/Requests/StorePermissionRequest.php
mode change 100644 => 100755 app/Http/Requests/StoreRoleRequest.php
mode change 100644 => 100755 app/Http/Requests/StoreServiceRequest.php
mode change 100644 => 100755 app/Http/Requests/StoreUserRequest.php
mode change 100644 => 100755 app/Http/Requests/UpdateAppointmentRequest.php
mode change 100644 => 100755 app/Http/Requests/UpdateClientRequest.php
mode change 100644 => 100755 app/Http/Requests/UpdateEmployeeRequest.php
mode change 100644 => 100755 app/Http/Requests/UpdatePermissionRequest.php
mode change 100644 => 100755 app/Http/Requests/UpdateRoleRequest.php
mode change 100644 => 100755 app/Http/Requests/UpdateServiceRequest.php
mode change 100644 => 100755 app/Http/Requests/UpdateUserRequest.php
mode change 100644 => 100755 app/Http/Resources/Admin/AppointmentResource.php
mode change 100644 => 100755 app/Http/Resources/Admin/ClientResource.php
mode change 100644 => 100755 app/Http/Resources/Admin/EmployeeResource.php
mode change 100644 => 100755 app/Http/Resources/Admin/PermissionResource.php
mode change 100644 => 100755 app/Http/Resources/Admin/RoleResource.php
mode change 100644 => 100755 app/Http/Resources/Admin/ServiceResource.php
mode change 100644 => 100755 app/Http/Resources/Admin/UserResource.php
mode change 100644 => 100755 app/Permission.php
mode change 100644 => 100755 app/Providers/AppServiceProvider.php
mode change 100644 => 100755 app/Providers/AuthServiceProvider.php
mode change 100644 => 100755 app/Providers/BroadcastServiceProvider.php
mode change 100644 => 100755 app/Providers/EventServiceProvider.php
mode change 100644 => 100755 app/Providers/RouteServiceProvider.php
mode change 100644 => 100755 app/Role.php
mode change 100644 => 100755 app/Service.php
mode change 100644 => 100755 app/User.php
mode change 100644 => 100755 artisan
mode change 100644 => 100755 bootstrap/app.php
mode change 100644 => 100755 composer.json
mode change 100644 => 100755 composer.lock
mode change 100644 => 100755 config/app.php
mode change 100644 => 100755 config/auth.php
mode change 100644 => 100755 config/broadcasting.php
mode change 100644 => 100755 config/cache.php
mode change 100644 => 100755 config/database.php
mode change 100644 => 100755 config/filesystems.php
mode change 100644 => 100755 config/hashing.php
mode change 100644 => 100755 config/logging.php
mode change 100644 => 100755 config/mail.php
mode change 100644 => 100755 config/panel.php
mode change 100644 => 100755 config/queue.php
mode change 100644 => 100755 config/services.php
mode change 100644 => 100755 config/session.php
mode change 100644 => 100755 config/view.php
mode change 100644 => 100755 database/.gitignore
mode change 100644 => 100755 database/factories/AppointmentFactory.php
mode change 100644 => 100755 database/factories/ClientFactory.php
mode change 100644 => 100755 database/factories/EmployeeFactory.php
mode change 100644 => 100755 database/factories/ServiceFactory.php
mode change 100644 => 100755 database/factories/UserFactory.php
mode change 100644 => 100755 database/migrations/2014_10_12_100000_create_password_resets_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000000_create_media_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000001_create_permissions_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000002_create_roles_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000003_create_users_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000004_create_services_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000005_create_employees_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000006_create_clients_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000007_create_appointments_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000008_create_permission_role_pivot_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000009_create_role_user_pivot_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000010_create_employee_service_pivot_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000011_create_appointment_service_pivot_table.php
mode change 100644 => 100755 database/migrations/2019_09_19_000012_add_relationship_fields_to_appointments_table.php
mode change 100644 => 100755 database/seeds/AppointmentsTableSeeder.php
mode change 100644 => 100755 database/seeds/ClientsTableSeeder.php
mode change 100644 => 100755 database/seeds/DatabaseSeeder.php
mode change 100644 => 100755 database/seeds/EmployeesTableSeeder.php
mode change 100644 => 100755 database/seeds/PermissionRoleTableSeeder.php
mode change 100644 => 100755 database/seeds/PermissionsTableSeeder.php
mode change 100644 => 100755 database/seeds/RoleUserTableSeeder.php
mode change 100644 => 100755 database/seeds/RolesTableSeeder.php
mode change 100644 => 100755 database/seeds/ServicesTableSeeder.php
mode change 100644 => 100755 database/seeds/UsersTableSeeder.php
mode change 100644 => 100755 package.json
mode change 100644 => 100755 phpunit.xml
mode change 100644 => 100755 public/.htaccess
mode change 100644 => 100755 public/css/custom.css
mode change 100644 => 100755 public/favicon.ico
mode change 100644 => 100755 public/index.php
mode change 100644 => 100755 public/js/main.js
mode change 100644 => 100755 public/robots.txt
mode change 100644 => 100755 resources/js/app.js
mode change 100644 => 100755 resources/js/bootstrap.js
mode change 100644 => 100755 resources/lang/en/auth.php
mode change 100644 => 100755 resources/lang/en/cruds.php
mode change 100644 => 100755 resources/lang/en/global.php
mode change 100644 => 100755 resources/lang/en/pagination.php
mode change 100644 => 100755 resources/lang/en/panel.php
mode change 100644 => 100755 resources/lang/en/passwords.php
mode change 100644 => 100755 resources/lang/en/validation.php
mode change 100644 => 100755 resources/sass/app.scss
mode change 100644 => 100755 resources/views/admin/appointments/create.blade.php
mode change 100644 => 100755 resources/views/admin/appointments/edit.blade.php
mode change 100644 => 100755 resources/views/admin/appointments/index.blade.php
mode change 100644 => 100755 resources/views/admin/appointments/show.blade.php
mode change 100644 => 100755 resources/views/admin/calendar/calendar.blade.php
mode change 100644 => 100755 resources/views/admin/clients/create.blade.php
mode change 100644 => 100755 resources/views/admin/clients/edit.blade.php
mode change 100644 => 100755 resources/views/admin/clients/index.blade.php
mode change 100644 => 100755 resources/views/admin/clients/show.blade.php
mode change 100644 => 100755 resources/views/admin/employees/create.blade.php
mode change 100644 => 100755 resources/views/admin/employees/edit.blade.php
mode change 100644 => 100755 resources/views/admin/employees/index.blade.php
mode change 100644 => 100755 resources/views/admin/employees/show.blade.php
mode change 100644 => 100755 resources/views/admin/permissions/create.blade.php
mode change 100644 => 100755 resources/views/admin/permissions/edit.blade.php
mode change 100644 => 100755 resources/views/admin/permissions/index.blade.php
mode change 100644 => 100755 resources/views/admin/permissions/show.blade.php
mode change 100644 => 100755 resources/views/admin/roles/create.blade.php
mode change 100644 => 100755 resources/views/admin/roles/edit.blade.php
mode change 100644 => 100755 resources/views/admin/roles/index.blade.php
mode change 100644 => 100755 resources/views/admin/roles/show.blade.php
mode change 100644 => 100755 resources/views/admin/services/create.blade.php
mode change 100644 => 100755 resources/views/admin/services/edit.blade.php
mode change 100644 => 100755 resources/views/admin/services/index.blade.php
mode change 100644 => 100755 resources/views/admin/services/show.blade.php
mode change 100644 => 100755 resources/views/admin/users/create.blade.php
mode change 100644 => 100755 resources/views/admin/users/edit.blade.php
mode change 100644 => 100755 resources/views/admin/users/index.blade.php
mode change 100644 => 100755 resources/views/admin/users/show.blade.php
mode change 100644 => 100755 resources/views/auth/login.blade.php
mode change 100644 => 100755 resources/views/auth/passwords/email.blade.php
mode change 100644 => 100755 resources/views/auth/passwords/reset.blade.php
mode change 100644 => 100755 resources/views/home.blade.php
mode change 100644 => 100755 resources/views/layouts/admin.blade.php
mode change 100644 => 100755 resources/views/layouts/app.blade.php
mode change 100644 => 100755 resources/views/partials/datatablesActions.blade.php
mode change 100644 => 100755 resources/views/partials/menu.blade.php
mode change 100644 => 100755 resources/views/welcome.blade.php
mode change 100644 => 100755 routes/api.php
mode change 100644 => 100755 routes/channels.php
mode change 100644 => 100755 routes/console.php
mode change 100644 => 100755 routes/web.php
mode change 100644 => 100755 server.php
mode change 100644 => 100755 tests/Browser/AppointmentsTest.php
mode change 100644 => 100755 tests/Browser/ClientsTest.php
mode change 100644 => 100755 tests/Browser/EmployeesTest.php
mode change 100644 => 100755 tests/Browser/PermissionsTest.php
mode change 100644 => 100755 tests/Browser/RolesTest.php
mode change 100644 => 100755 tests/Browser/ServicesTest.php
mode change 100644 => 100755 tests/Browser/UsersTest.php
mode change 100644 => 100755 tests/CreatesApplication.php
mode change 100644 => 100755 tests/Feature/ExampleTest.php
mode change 100644 => 100755 tests/TestCase.php
mode change 100644 => 100755 tests/Unit/ExampleTest.php
mode change 100644 => 100755 tests/bootstrap.php
mode change 100644 => 100755 webpack.mix.js
mode change 100644 => 100755 yarn.lock
diff --git a/.editorconfig b/.editorconfig
old mode 100644
new mode 100755
diff --git a/.env.example b/.env.example
old mode 100644
new mode 100755
diff --git a/.gitattributes b/.gitattributes
old mode 100644
new mode 100755
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
diff --git a/app/Appointment.php b/app/Appointment.php
old mode 100644
new mode 100755
diff --git a/app/Client.php b/app/Client.php
old mode 100644
new mode 100755
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
old mode 100644
new mode 100755
diff --git a/app/Employee.php b/app/Employee.php
old mode 100644
new mode 100755
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/AppointmentsController.php b/app/Http/Controllers/Admin/AppointmentsController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/ClientsController.php b/app/Http/Controllers/Admin/ClientsController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/EmployeesController.php b/app/Http/Controllers/Admin/EmployeesController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/HomeController.php b/app/Http/Controllers/Admin/HomeController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/PermissionsController.php b/app/Http/Controllers/Admin/PermissionsController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/RolesController.php b/app/Http/Controllers/Admin/RolesController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/ServicesController.php b/app/Http/Controllers/Admin/ServicesController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/SystemCalendarController.php b/app/Http/Controllers/Admin/SystemCalendarController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Admin/UsersController.php b/app/Http/Controllers/Admin/UsersController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php b/app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Api/V1/Admin/ClientsApiController.php b/app/Http/Controllers/Api/V1/Admin/ClientsApiController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php b/app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Api/V1/Admin/PermissionsApiController.php b/app/Http/Controllers/Api/V1/Admin/PermissionsApiController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Api/V1/Admin/RolesApiController.php b/app/Http/Controllers/Api/V1/Admin/RolesApiController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Api/V1/Admin/ServicesApiController.php b/app/Http/Controllers/Api/V1/Admin/ServicesApiController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Api/V1/Admin/UsersApiController.php b/app/Http/Controllers/Api/V1/Admin/UsersApiController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Auth/VerificationController.php b/app/Http/Controllers/Auth/VerificationController.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
old mode 100644
new mode 100755
diff --git a/app/Http/Controllers/Traits/MediaUploadingTrait.php b/app/Http/Controllers/Traits/MediaUploadingTrait.php
old mode 100644
new mode 100755
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/AuthGates.php b/app/Http/Middleware/AuthGates.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/CheckForMaintenanceMode.php b/app/Http/Middleware/CheckForMaintenanceMode.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/SetLocale.php b/app/Http/Middleware/SetLocale.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php
old mode 100644
new mode 100755
diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/MassDestroyAppointmentRequest.php b/app/Http/Requests/MassDestroyAppointmentRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/MassDestroyClientRequest.php b/app/Http/Requests/MassDestroyClientRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/MassDestroyEmployeeRequest.php b/app/Http/Requests/MassDestroyEmployeeRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/MassDestroyPermissionRequest.php b/app/Http/Requests/MassDestroyPermissionRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/MassDestroyRoleRequest.php b/app/Http/Requests/MassDestroyRoleRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/MassDestroyServiceRequest.php b/app/Http/Requests/MassDestroyServiceRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/MassDestroyUserRequest.php b/app/Http/Requests/MassDestroyUserRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/StoreAppointmentRequest.php b/app/Http/Requests/StoreAppointmentRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/StoreClientRequest.php b/app/Http/Requests/StoreClientRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/StoreEmployeeRequest.php b/app/Http/Requests/StoreEmployeeRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/StorePermissionRequest.php b/app/Http/Requests/StorePermissionRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/StoreRoleRequest.php b/app/Http/Requests/StoreRoleRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/StoreServiceRequest.php b/app/Http/Requests/StoreServiceRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/StoreUserRequest.php b/app/Http/Requests/StoreUserRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/UpdateAppointmentRequest.php b/app/Http/Requests/UpdateAppointmentRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/UpdateClientRequest.php b/app/Http/Requests/UpdateClientRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/UpdateEmployeeRequest.php b/app/Http/Requests/UpdateEmployeeRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/UpdatePermissionRequest.php b/app/Http/Requests/UpdatePermissionRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/UpdateRoleRequest.php b/app/Http/Requests/UpdateRoleRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/UpdateServiceRequest.php b/app/Http/Requests/UpdateServiceRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Requests/UpdateUserRequest.php b/app/Http/Requests/UpdateUserRequest.php
old mode 100644
new mode 100755
diff --git a/app/Http/Resources/Admin/AppointmentResource.php b/app/Http/Resources/Admin/AppointmentResource.php
old mode 100644
new mode 100755
diff --git a/app/Http/Resources/Admin/ClientResource.php b/app/Http/Resources/Admin/ClientResource.php
old mode 100644
new mode 100755
diff --git a/app/Http/Resources/Admin/EmployeeResource.php b/app/Http/Resources/Admin/EmployeeResource.php
old mode 100644
new mode 100755
diff --git a/app/Http/Resources/Admin/PermissionResource.php b/app/Http/Resources/Admin/PermissionResource.php
old mode 100644
new mode 100755
diff --git a/app/Http/Resources/Admin/RoleResource.php b/app/Http/Resources/Admin/RoleResource.php
old mode 100644
new mode 100755
diff --git a/app/Http/Resources/Admin/ServiceResource.php b/app/Http/Resources/Admin/ServiceResource.php
old mode 100644
new mode 100755
diff --git a/app/Http/Resources/Admin/UserResource.php b/app/Http/Resources/Admin/UserResource.php
old mode 100644
new mode 100755
diff --git a/app/Permission.php b/app/Permission.php
old mode 100644
new mode 100755
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
old mode 100644
new mode 100755
diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php
old mode 100644
new mode 100755
diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php
old mode 100644
new mode 100755
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
old mode 100644
new mode 100755
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
old mode 100644
new mode 100755
diff --git a/app/Role.php b/app/Role.php
old mode 100644
new mode 100755
diff --git a/app/Service.php b/app/Service.php
old mode 100644
new mode 100755
diff --git a/app/User.php b/app/User.php
old mode 100644
new mode 100755
diff --git a/artisan b/artisan
old mode 100644
new mode 100755
diff --git a/bootstrap/app.php b/bootstrap/app.php
old mode 100644
new mode 100755
diff --git a/composer.json b/composer.json
old mode 100644
new mode 100755
diff --git a/composer.lock b/composer.lock
old mode 100644
new mode 100755
diff --git a/config/app.php b/config/app.php
old mode 100644
new mode 100755
diff --git a/config/auth.php b/config/auth.php
old mode 100644
new mode 100755
diff --git a/config/broadcasting.php b/config/broadcasting.php
old mode 100644
new mode 100755
diff --git a/config/cache.php b/config/cache.php
old mode 100644
new mode 100755
diff --git a/config/database.php b/config/database.php
old mode 100644
new mode 100755
diff --git a/config/filesystems.php b/config/filesystems.php
old mode 100644
new mode 100755
diff --git a/config/hashing.php b/config/hashing.php
old mode 100644
new mode 100755
diff --git a/config/logging.php b/config/logging.php
old mode 100644
new mode 100755
diff --git a/config/mail.php b/config/mail.php
old mode 100644
new mode 100755
diff --git a/config/panel.php b/config/panel.php
old mode 100644
new mode 100755
diff --git a/config/queue.php b/config/queue.php
old mode 100644
new mode 100755
diff --git a/config/services.php b/config/services.php
old mode 100644
new mode 100755
diff --git a/config/session.php b/config/session.php
old mode 100644
new mode 100755
diff --git a/config/view.php b/config/view.php
old mode 100644
new mode 100755
diff --git a/database/.gitignore b/database/.gitignore
old mode 100644
new mode 100755
diff --git a/database/factories/AppointmentFactory.php b/database/factories/AppointmentFactory.php
old mode 100644
new mode 100755
diff --git a/database/factories/ClientFactory.php b/database/factories/ClientFactory.php
old mode 100644
new mode 100755
diff --git a/database/factories/EmployeeFactory.php b/database/factories/EmployeeFactory.php
old mode 100644
new mode 100755
diff --git a/database/factories/ServiceFactory.php b/database/factories/ServiceFactory.php
old mode 100644
new mode 100755
diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000000_create_media_table.php b/database/migrations/2019_09_19_000000_create_media_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000001_create_permissions_table.php b/database/migrations/2019_09_19_000001_create_permissions_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000002_create_roles_table.php b/database/migrations/2019_09_19_000002_create_roles_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000003_create_users_table.php b/database/migrations/2019_09_19_000003_create_users_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000004_create_services_table.php b/database/migrations/2019_09_19_000004_create_services_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000005_create_employees_table.php b/database/migrations/2019_09_19_000005_create_employees_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000006_create_clients_table.php b/database/migrations/2019_09_19_000006_create_clients_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000007_create_appointments_table.php b/database/migrations/2019_09_19_000007_create_appointments_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000008_create_permission_role_pivot_table.php b/database/migrations/2019_09_19_000008_create_permission_role_pivot_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000009_create_role_user_pivot_table.php b/database/migrations/2019_09_19_000009_create_role_user_pivot_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000010_create_employee_service_pivot_table.php b/database/migrations/2019_09_19_000010_create_employee_service_pivot_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000011_create_appointment_service_pivot_table.php b/database/migrations/2019_09_19_000011_create_appointment_service_pivot_table.php
old mode 100644
new mode 100755
diff --git a/database/migrations/2019_09_19_000012_add_relationship_fields_to_appointments_table.php b/database/migrations/2019_09_19_000012_add_relationship_fields_to_appointments_table.php
old mode 100644
new mode 100755
diff --git a/database/seeds/AppointmentsTableSeeder.php b/database/seeds/AppointmentsTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/ClientsTableSeeder.php b/database/seeds/ClientsTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/EmployeesTableSeeder.php b/database/seeds/EmployeesTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/PermissionRoleTableSeeder.php b/database/seeds/PermissionRoleTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/PermissionsTableSeeder.php b/database/seeds/PermissionsTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/RoleUserTableSeeder.php b/database/seeds/RoleUserTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/RolesTableSeeder.php b/database/seeds/RolesTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/ServicesTableSeeder.php b/database/seeds/ServicesTableSeeder.php
old mode 100644
new mode 100755
diff --git a/database/seeds/UsersTableSeeder.php b/database/seeds/UsersTableSeeder.php
old mode 100644
new mode 100755
diff --git a/package.json b/package.json
old mode 100644
new mode 100755
diff --git a/phpunit.xml b/phpunit.xml
old mode 100644
new mode 100755
diff --git a/public/.htaccess b/public/.htaccess
old mode 100644
new mode 100755
diff --git a/public/css/custom.css b/public/css/custom.css
old mode 100644
new mode 100755
diff --git a/public/favicon.ico b/public/favicon.ico
old mode 100644
new mode 100755
diff --git a/public/index.php b/public/index.php
old mode 100644
new mode 100755
diff --git a/public/js/main.js b/public/js/main.js
old mode 100644
new mode 100755
diff --git a/public/robots.txt b/public/robots.txt
old mode 100644
new mode 100755
diff --git a/resources/js/app.js b/resources/js/app.js
old mode 100644
new mode 100755
diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js
old mode 100644
new mode 100755
diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php
old mode 100644
new mode 100755
diff --git a/resources/lang/en/cruds.php b/resources/lang/en/cruds.php
old mode 100644
new mode 100755
diff --git a/resources/lang/en/global.php b/resources/lang/en/global.php
old mode 100644
new mode 100755
diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php
old mode 100644
new mode 100755
diff --git a/resources/lang/en/panel.php b/resources/lang/en/panel.php
old mode 100644
new mode 100755
diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php
old mode 100644
new mode 100755
diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php
old mode 100644
new mode 100755
diff --git a/resources/sass/app.scss b/resources/sass/app.scss
old mode 100644
new mode 100755
diff --git a/resources/views/admin/appointments/create.blade.php b/resources/views/admin/appointments/create.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/appointments/edit.blade.php b/resources/views/admin/appointments/edit.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/appointments/index.blade.php b/resources/views/admin/appointments/index.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/appointments/show.blade.php b/resources/views/admin/appointments/show.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/calendar/calendar.blade.php b/resources/views/admin/calendar/calendar.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/clients/create.blade.php b/resources/views/admin/clients/create.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/clients/edit.blade.php b/resources/views/admin/clients/edit.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/clients/index.blade.php b/resources/views/admin/clients/index.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/clients/show.blade.php b/resources/views/admin/clients/show.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/employees/create.blade.php b/resources/views/admin/employees/create.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/employees/edit.blade.php b/resources/views/admin/employees/edit.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/employees/index.blade.php b/resources/views/admin/employees/index.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/employees/show.blade.php b/resources/views/admin/employees/show.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/permissions/create.blade.php b/resources/views/admin/permissions/create.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/permissions/edit.blade.php b/resources/views/admin/permissions/edit.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/permissions/index.blade.php b/resources/views/admin/permissions/index.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/permissions/show.blade.php b/resources/views/admin/permissions/show.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/roles/create.blade.php b/resources/views/admin/roles/create.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/roles/edit.blade.php b/resources/views/admin/roles/edit.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/roles/index.blade.php b/resources/views/admin/roles/index.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/roles/show.blade.php b/resources/views/admin/roles/show.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/services/create.blade.php b/resources/views/admin/services/create.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/services/edit.blade.php b/resources/views/admin/services/edit.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/services/index.blade.php b/resources/views/admin/services/index.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/services/show.blade.php b/resources/views/admin/services/show.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/users/create.blade.php b/resources/views/admin/users/create.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/users/edit.blade.php b/resources/views/admin/users/edit.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/users/index.blade.php b/resources/views/admin/users/index.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/admin/users/show.blade.php b/resources/views/admin/users/show.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/partials/datatablesActions.blade.php b/resources/views/partials/datatablesActions.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php
old mode 100644
new mode 100755
diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php
old mode 100644
new mode 100755
diff --git a/routes/api.php b/routes/api.php
old mode 100644
new mode 100755
diff --git a/routes/channels.php b/routes/channels.php
old mode 100644
new mode 100755
diff --git a/routes/console.php b/routes/console.php
old mode 100644
new mode 100755
diff --git a/routes/web.php b/routes/web.php
old mode 100644
new mode 100755
diff --git a/server.php b/server.php
old mode 100644
new mode 100755
diff --git a/tests/Browser/AppointmentsTest.php b/tests/Browser/AppointmentsTest.php
old mode 100644
new mode 100755
diff --git a/tests/Browser/ClientsTest.php b/tests/Browser/ClientsTest.php
old mode 100644
new mode 100755
diff --git a/tests/Browser/EmployeesTest.php b/tests/Browser/EmployeesTest.php
old mode 100644
new mode 100755
diff --git a/tests/Browser/PermissionsTest.php b/tests/Browser/PermissionsTest.php
old mode 100644
new mode 100755
diff --git a/tests/Browser/RolesTest.php b/tests/Browser/RolesTest.php
old mode 100644
new mode 100755
diff --git a/tests/Browser/ServicesTest.php b/tests/Browser/ServicesTest.php
old mode 100644
new mode 100755
diff --git a/tests/Browser/UsersTest.php b/tests/Browser/UsersTest.php
old mode 100644
new mode 100755
diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php
old mode 100644
new mode 100755
diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php
old mode 100644
new mode 100755
diff --git a/tests/TestCase.php b/tests/TestCase.php
old mode 100644
new mode 100755
diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php
old mode 100644
new mode 100755
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
old mode 100644
new mode 100755
diff --git a/webpack.mix.js b/webpack.mix.js
old mode 100644
new mode 100755
diff --git a/yarn.lock b/yarn.lock
old mode 100644
new mode 100755
From ce9fa8cced11f7cb17d1bf15f62ff1367db2a775 Mon Sep 17 00:00:00 2001
From: Dan
Date: Mon, 17 Aug 2020 19:24:13 +0200
Subject: [PATCH 2/4] update env
---
.env.example | 44 --------------------------------------------
1 file changed, 44 deletions(-)
delete mode 100755 .env.example
diff --git a/.env.example b/.env.example
deleted file mode 100755
index 604b401f..00000000
--- a/.env.example
+++ /dev/null
@@ -1,44 +0,0 @@
-APP_NAME=Laravel
-APP_ENV=local
-APP_KEY=
-APP_DEBUG=true
-APP_URL=http://localhost
-
-LOG_CHANNEL=stack
-
-DB_CONNECTION=mysql
-DB_HOST=127.0.0.1
-DB_PORT=3306
-DB_DATABASE=laravel
-DB_USERNAME=root
-DB_PASSWORD=
-
-BROADCAST_DRIVER=log
-CACHE_DRIVER=file
-QUEUE_CONNECTION=sync
-SESSION_DRIVER=file
-SESSION_LIFETIME=120
-
-REDIS_HOST=127.0.0.1
-REDIS_PASSWORD=null
-REDIS_PORT=6379
-
-MAIL_DRIVER=smtp
-MAIL_HOST=smtp.mailtrap.io
-MAIL_PORT=2525
-MAIL_USERNAME=null
-MAIL_PASSWORD=null
-MAIL_ENCRYPTION=null
-
-AWS_ACCESS_KEY_ID=
-AWS_SECRET_ACCESS_KEY=
-AWS_DEFAULT_REGION=us-east-1
-AWS_BUCKET=
-
-PUSHER_APP_ID=
-PUSHER_APP_KEY=
-PUSHER_APP_SECRET=
-PUSHER_APP_CLUSTER=mt1
-
-MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
-MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
From d8332a2848a271ab397949a5161075ca238cfbc2 Mon Sep 17 00:00:00 2001
From: Dan
Date: Tue, 18 Aug 2020 22:31:09 +0200
Subject: [PATCH 3/4] Appointments validation and Calendar view on dashbboard
load
---
.../Admin/AppointmentsController.php | 52 +++++++++++++++++++
app/Http/Controllers/Admin/HomeController.php | 20 ++++++-
app/Http/Requests/StoreAppointmentRequest.php | 7 ++-
resources/views/partials/menu.blade.php | 4 +-
4 files changed, 79 insertions(+), 4 deletions(-)
diff --git a/app/Http/Controllers/Admin/AppointmentsController.php b/app/Http/Controllers/Admin/AppointmentsController.php
index 2d93e4b9..03ff592c 100755
--- a/app/Http/Controllers/Admin/AppointmentsController.php
+++ b/app/Http/Controllers/Admin/AppointmentsController.php
@@ -14,6 +14,9 @@
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Yajra\DataTables\Facades\DataTables;
+use Illuminate\Support\Facades\Validator;
+use DateTime;
+use DateTimeZone;
class AppointmentsController extends Controller
{
@@ -91,6 +94,37 @@ public function create()
public function store(StoreAppointmentRequest $request)
{
+ if (!empty($request)) {
+
+ $now = new DateTime('NOW', new DateTimeZone('Africa/Johannesburg'));
+ $date1 = new DateTime($request->start_time, new DateTimeZone('Africa/Johannesburg'));
+ $date2 = new DateTime($request->finish_time, new DateTimeZone('Africa/Johannesburg'));
+
+ $date1 = $date1->getTimestamp();
+ $date2 = $date2->getTimestamp();
+ $now = $now->getTimestamp();
+
+ $validator = Validator::make($request->all(), $request->rules());
+
+ if($date1 < $now) {
+ $validator->errors()->add('start_date', 'Start date Cannot be in the past!');
+ }
+
+ if($date1 > $date2) {
+ $validator->errors()->add('start_date', 'Start date must be before the end date!');
+ }
+ $errors = $validator->errors();
+
+ if($errors->any()) {
+ return redirect()->back()->withInput()->withErrors($errors);
+ }
+
+ $appointment = Appointment::create($request->all());
+ $appointment->services()->sync($request->input('services', []));
+
+ return redirect()->route('admin.appointments.index');
+ }
+
$appointment = Appointment::create($request->all());
$appointment->services()->sync($request->input('services', []));
@@ -144,4 +178,22 @@ public function massDestroy(MassDestroyAppointmentRequest $request)
return response(null, Response::HTTP_NO_CONTENT);
}
+
+ public function somethingElseIsInvalid($startDate, $endDate)
+ {
+ return true;
+ // $date1 = new DateTime($startDate);
+ // $date2 = new DateTime($endDate);
+
+ // $diff = $date2->diff($date1);
+ // $hours = $diff->h;
+ // $hours = $hours + ($diff->days*24);
+ // var_dump($hours);
+ // die;
+
+ if ($startDate >= $endDate){
+ return false;
+ }
+
+ }
}
diff --git a/app/Http/Controllers/Admin/HomeController.php b/app/Http/Controllers/Admin/HomeController.php
index 26e25deb..0d404812 100755
--- a/app/Http/Controllers/Admin/HomeController.php
+++ b/app/Http/Controllers/Admin/HomeController.php
@@ -1,11 +1,29 @@
get();
+
+ foreach ($appointments as $appointment) {
+ if (!$appointment->start_time) {
+ continue;
+ }
+
+ $events[] = [
+ 'title' => $appointment->client->name . ' ('.$appointment->employee->name.')',
+ 'start' => $appointment->start_time,
+ 'url' => route('admin.appointments.edit', $appointment->id),
+ ];
+ }
+
+ return view('admin.calendar.calendar', compact('events'));
}
}
diff --git a/app/Http/Requests/StoreAppointmentRequest.php b/app/Http/Requests/StoreAppointmentRequest.php
index f764f0f9..ed0c2c5a 100755
--- a/app/Http/Requests/StoreAppointmentRequest.php
+++ b/app/Http/Requests/StoreAppointmentRequest.php
@@ -25,12 +25,17 @@ public function rules()
],
'start_time' => [
'required',
+ 'unique:appointments,start_time',
'date_format:' . config('panel.date_format') . ' ' . config('panel.time_format'),
],
'finish_time' => [
'required',
+ 'unique:appointments,finish_time',
'date_format:' . config('panel.date_format') . ' ' . config('panel.time_format'),
],
+ 'price' => [
+ 'required'
+ ],
'services.*' => [
'integer',
],
@@ -39,4 +44,4 @@ public function rules()
],
];
}
-}
+}
\ No newline at end of file
diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php
index 3abf9f57..8093b2d9 100755
--- a/resources/views/partials/menu.blade.php
+++ b/resources/views/partials/menu.blade.php
@@ -92,14 +92,14 @@
@endcan
-
+ {{--
{{ trans('global.systemCalendar') }}
-
+ --}}
From 2d61fa78316202cb1e6d7d55b279618b79ab7e07 Mon Sep 17 00:00:00 2001
From: Dan
Date: Thu, 20 Aug 2020 21:40:35 +0200
Subject: [PATCH 4/4] add products and appointment validation
---
app/Appointment.php | 5 +
app/Employee.php | 5 +
.../Admin/AppointmentsController.php | 124 +++++++++++++-----
.../Controllers/Admin/EmployeesController.php | 25 +++-
.../Controllers/Admin/ProductsController.php | 109 +++++++++++++++
.../V1/Admin/AppointmentsApiController.php | 6 +-
.../Api/V1/Admin/EmployeesApiController.php | 6 +-
.../Api/V1/Admin/ProductsApiController.php | 56 ++++++++
.../Requests/MassDestroyProductRequest.php | 26 ++++
app/Http/Requests/StoreAppointmentRequest.php | 8 +-
app/Http/Requests/StoreEmployeeRequest.php | 6 +
app/Http/Requests/StoreProductRequest.php | 27 ++++
.../Requests/UpdateAppointmentRequest.php | 6 +
app/Http/Requests/UpdateEmployeeRequest.php | 6 +
app/Http/Requests/UpdateProductRequest.php | 27 ++++
app/Http/Resources/Admin/ProductResource.php | 13 ++
app/Product.php | 37 ++++++
database/factories/ProductFactory.php | 11 ++
...019_09_19_000004_create_products_table.php | 23 ++++
...10_create_employee_product_pivot_table.php | 21 +++
...10_create_employee_service_pivot_table.php | 4 +-
...create_appointment_product_pivot_table.php | 21 +++
database/seeds/DatabaseSeeder.php | 1 +
database/seeds/PermissionsTableSeeder.php | 30 +++++
database/seeds/ProductsTableSeeder.php | 16 +++
resources/lang/en/cruds.php | 22 ++++
.../views/admin/appointments/create.blade.php | 18 +++
.../views/admin/appointments/edit.blade.php | 18 +++
.../views/admin/appointments/index.blade.php | 4 +
.../views/admin/appointments/show.blade.php | 10 ++
.../views/admin/employees/create.blade.php | 18 +++
.../views/admin/employees/edit.blade.php | 18 +++
.../views/admin/employees/index.blade.php | 4 +
.../views/admin/employees/show.blade.php | 10 ++
.../views/admin/products/create.blade.php | 44 +++++++
resources/views/admin/products/edit.blade.php | 45 +++++++
.../views/admin/products/index.blade.php | 104 +++++++++++++++
resources/views/admin/products/show.blade.php | 54 ++++++++
resources/views/partials/menu.blade.php | 10 ++
routes/api.php | 3 +
routes/web.php | 4 +
tests/Browser/ProductsTest.php | 20 +++
42 files changed, 979 insertions(+), 46 deletions(-)
create mode 100755 app/Http/Controllers/Admin/ProductsController.php
create mode 100755 app/Http/Controllers/Api/V1/Admin/ProductsApiController.php
create mode 100644 app/Http/Requests/MassDestroyProductRequest.php
create mode 100644 app/Http/Requests/StoreProductRequest.php
create mode 100644 app/Http/Requests/UpdateProductRequest.php
create mode 100755 app/Http/Resources/Admin/ProductResource.php
create mode 100644 app/Product.php
create mode 100755 database/factories/ProductFactory.php
create mode 100755 database/migrations/2019_09_19_000004_create_products_table.php
create mode 100755 database/migrations/2019_09_19_000010_create_employee_product_pivot_table.php
create mode 100755 database/migrations/2019_09_19_000011_create_appointment_product_pivot_table.php
create mode 100755 database/seeds/ProductsTableSeeder.php
create mode 100755 resources/views/admin/products/create.blade.php
create mode 100755 resources/views/admin/products/edit.blade.php
create mode 100755 resources/views/admin/products/index.blade.php
create mode 100755 resources/views/admin/products/show.blade.php
create mode 100644 tests/Browser/ProductsTest.php
diff --git a/app/Appointment.php b/app/Appointment.php
index 6159f673..b63e506e 100755
--- a/app/Appointment.php
+++ b/app/Appointment.php
@@ -66,4 +66,9 @@ public function services()
{
return $this->belongsToMany(Service::class);
}
+
+ public function products()
+ {
+ return $this->belongsToMany(Product::class);
+ }
}
diff --git a/app/Employee.php b/app/Employee.php
index 9211447e..0e4f7a06 100755
--- a/app/Employee.php
+++ b/app/Employee.php
@@ -59,4 +59,9 @@ public function services()
{
return $this->belongsToMany(Service::class);
}
+
+ public function products()
+ {
+ return $this->belongsToMany(Product::class);
+ }
}
diff --git a/app/Http/Controllers/Admin/AppointmentsController.php b/app/Http/Controllers/Admin/AppointmentsController.php
index 03ff592c..71131eed 100755
--- a/app/Http/Controllers/Admin/AppointmentsController.php
+++ b/app/Http/Controllers/Admin/AppointmentsController.php
@@ -10,6 +10,7 @@
use App\Http\Requests\StoreAppointmentRequest;
use App\Http\Requests\UpdateAppointmentRequest;
use App\Service;
+use App\Product;
use Gate;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -23,7 +24,7 @@ class AppointmentsController extends Controller
public function index(Request $request)
{
if ($request->ajax()) {
- $query = Appointment::with(['client', 'employee', 'services'])->select(sprintf('%s.*', (new Appointment)->table));
+ $query = Appointment::with(['client', 'employee', 'services', 'products'])->select(sprintf('%s.*', (new Appointment)->table));
$table = Datatables::of($query);
$table->addColumn('placeholder', ' ');
@@ -71,7 +72,17 @@ public function index(Request $request)
return implode(' ', $labels);
});
- $table->rawColumns(['actions', 'placeholder', 'client', 'employee', 'services']);
+ $table->editColumn('products', function ($row) {
+ $labels = [];
+
+ foreach ($row->products as $product) {
+ $labels[] = sprintf('%s', $product->name);
+ }
+
+ return implode(' ', $labels);
+ });
+
+ $table->rawColumns(['actions', 'placeholder', 'client', 'employee', 'services', 'products']);
return $table->make(true);
}
@@ -89,46 +100,65 @@ public function create()
$services = Service::all()->pluck('name', 'id');
- return view('admin.appointments.create', compact('clients', 'employees', 'services'));
+ $products = Product::all()->pluck('name', 'id');
+
+ return view('admin.appointments.create', compact('clients', 'employees', 'services', 'products'));
}
public function store(StoreAppointmentRequest $request)
{
- if (!empty($request)) {
+ if(!empty($request)){
$now = new DateTime('NOW', new DateTimeZone('Africa/Johannesburg'));
$date1 = new DateTime($request->start_time, new DateTimeZone('Africa/Johannesburg'));
$date2 = new DateTime($request->finish_time, new DateTimeZone('Africa/Johannesburg'));
-
- $date1 = $date1->getTimestamp();
- $date2 = $date2->getTimestamp();
- $now = $now->getTimestamp();
+
+ $date1 = $date1->format('Y-m-d H:i:s');
+ $date2 = $date2->format('Y-m-d H:i:s');
+ $now = $now->format('Y-m-d H:i:s');
$validator = Validator::make($request->all(), $request->rules());
-
- if($date1 < $now) {
- $validator->errors()->add('start_date', 'Start date Cannot be in the past!');
- }
- if($date1 > $date2) {
- $validator->errors()->add('start_date', 'Start date must be before the end date!');
- }
- $errors = $validator->errors();
-
- if($errors->any()) {
- return redirect()->back()->withInput()->withErrors($errors);
+ if(!$this->isDoctorBooked($request->employee_id, $now, $date1, $date2)) {
+
+ if($date1 < $now) {
+ $validator->errors()->add('start_time', 'Start Time Cannot be in the past!');
+ }
+
+ if($date1 >= $date2) {
+ $validator->errors()->add('start_time', 'Start time must be before the end date!');
+ }
+
+ $errors = $validator->errors();
+
+ if($errors->any()) {
+ return redirect()->back()->withInput()->withErrors($errors);
+ }
+
+
+ $appointment = Appointment::create($request->all());
+ $appointment->services()->sync($request->input('services', []));
+ $appointment->products()->sync($request->input('products', []));
+
+ return redirect()->route('admin.appointments.index');
+ }else {
+
+ $validator->errors()->add('start_time', 'Doctor is busy during this slot');
+ $errors = $validator->errors();
+
+ if($errors->any()) {
+ return redirect()->back()->withInput()->withErrors($errors);
+ }
}
-
+
+ } else {
+
$appointment = Appointment::create($request->all());
$appointment->services()->sync($request->input('services', []));
+ $appointment->products()->sync($request->input('products', []));
return redirect()->route('admin.appointments.index');
}
-
- $appointment = Appointment::create($request->all());
- $appointment->services()->sync($request->input('services', []));
-
- return redirect()->route('admin.appointments.index');
}
public function edit(Appointment $appointment)
@@ -141,15 +171,18 @@ public function edit(Appointment $appointment)
$services = Service::all()->pluck('name', 'id');
- $appointment->load('client', 'employee', 'services');
+ $products = Product::all()->pluck('name', 'id');
+
+ $appointment->load('client', 'employee', 'services', 'products');
- return view('admin.appointments.edit', compact('clients', 'employees', 'services', 'appointment'));
+ return view('admin.appointments.edit', compact('clients', 'employees', 'services', 'products', 'appointment'));
}
public function update(UpdateAppointmentRequest $request, Appointment $appointment)
{
$appointment->update($request->all());
$appointment->services()->sync($request->input('services', []));
+ $appointment->products()->sync($request->input('products', []));
return redirect()->route('admin.appointments.index');
}
@@ -158,7 +191,7 @@ public function show(Appointment $appointment)
{
abort_if(Gate::denies('appointment_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
- $appointment->load('client', 'employee', 'services');
+ $appointment->load('client', 'employee', 'services', 'products');
return view('admin.appointments.show', compact('appointment'));
}
@@ -179,9 +212,36 @@ public function massDestroy(MassDestroyAppointmentRequest $request)
return response(null, Response::HTTP_NO_CONTENT);
}
- public function somethingElseIsInvalid($startDate, $endDate)
+ public function isDoctorBooked($employeeId, $now, $startTime, $finishTime)
{
- return true;
+ $appointments = Appointment::where('employee_id',$employeeId)->get();
+
+ foreach ($appointments as $appointment) {
+
+ if($startTime >= $appointment->start_time && $startTime <= $appointment->finish_time ) {
+ return true;
+ } elseif ($finishTime >= $appointment->start_time && $finishTime <= $appointment->finish_time) {
+ return true;
+ }
+ }
+
+ return false;
+ // ->where(function ($query) use($startTime, $finishTime){
+ // $query->whereBetween('start_time',[$startTime, $finishTime])
+ // ->orWhereBetween('finish_time',[$startTime, $finishTime]);
+ // })
+ // ->Where(function($query) use($startTime, $finishTime){
+ // $query->where('start_time','<=',$startTime)
+ // ->where('finish_time','>=',$finishTime);
+ // })->exists();
+
+ // if($appointmentExists) {
+ // return true;
+ // } else {
+ // return false;
+ // }
+
+
// $date1 = new DateTime($startDate);
// $date2 = new DateTime($endDate);
@@ -191,9 +251,7 @@ public function somethingElseIsInvalid($startDate, $endDate)
// var_dump($hours);
// die;
- if ($startDate >= $endDate){
- return false;
- }
+
}
}
diff --git a/app/Http/Controllers/Admin/EmployeesController.php b/app/Http/Controllers/Admin/EmployeesController.php
index 3a97356b..952891fd 100755
--- a/app/Http/Controllers/Admin/EmployeesController.php
+++ b/app/Http/Controllers/Admin/EmployeesController.php
@@ -21,7 +21,7 @@ class EmployeesController extends Controller
public function index(Request $request)
{
if ($request->ajax()) {
- $query = Employee::with(['services'])->select(sprintf('%s.*', (new Employee)->table));
+ $query = Employee::with(['services','products'])->select(sprintf('%s.*', (new Employee)->table));
$table = Datatables::of($query);
$table->addColumn('placeholder', ' ');
@@ -75,7 +75,18 @@ public function index(Request $request)
return implode(' ', $labels);
});
- $table->rawColumns(['actions', 'placeholder', 'photo', 'services']);
+ $table->editColumn('products', function ($row) {
+ $labels = [];
+
+ foreach ($row->products as $product) {
+ $labels[] = sprintf('%s', $product->name);
+ }
+
+ return implode(' ', $labels);
+ });
+
+
+ $table->rawColumns(['actions', 'placeholder', 'photo', 'services', 'products']);
return $table->make(true);
}
@@ -88,14 +99,16 @@ public function create()
abort_if(Gate::denies('employee_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$services = Service::all()->pluck('name', 'id');
+ $products = Product::all()->pluck('name', 'id');
- return view('admin.employees.create', compact('services'));
+ return view('admin.employees.create', compact('services', 'products'));
}
public function store(StoreEmployeeRequest $request)
{
$employee = Employee::create($request->all());
$employee->services()->sync($request->input('services', []));
+ $employee->products()->sync($request->input('products', []));
if ($request->input('photo', false)) {
$employee->addMedia(storage_path('tmp/uploads/' . $request->input('photo')))->toMediaCollection('photo');
@@ -109,16 +122,18 @@ public function edit(Employee $employee)
abort_if(Gate::denies('employee_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$services = Service::all()->pluck('name', 'id');
+ $products = Product::all()->pluck('name', 'id');
- $employee->load('services');
+ $employee->load('services','products');
- return view('admin.employees.edit', compact('services', 'employee'));
+ return view('admin.employees.edit', compact('services','products','employee'));
}
public function update(UpdateEmployeeRequest $request, Employee $employee)
{
$employee->update($request->all());
$employee->services()->sync($request->input('services', []));
+ $employee->products()->sync($request->input('products', []));
if ($request->input('photo', false)) {
if (!$employee->photo || $request->input('photo') !== $employee->photo->file_name) {
diff --git a/app/Http/Controllers/Admin/ProductsController.php b/app/Http/Controllers/Admin/ProductsController.php
new file mode 100755
index 00000000..092a28d4
--- /dev/null
+++ b/app/Http/Controllers/Admin/ProductsController.php
@@ -0,0 +1,109 @@
+ajax()) {
+ $query = Product::query()->select(sprintf('%s.*', (new Product)->table));
+ $table = Datatables::of($query);
+
+ $table->addColumn('placeholder', ' ');
+ $table->addColumn('actions', ' ');
+
+ $table->editColumn('actions', function ($row) {
+ $viewGate = 'product_show';
+ $editGate = 'product_edit';
+ $deleteGate = 'product_delete';
+ $crudRoutePart = 'products';
+
+ return view('partials.datatablesActions', compact(
+ 'viewGate',
+ 'editGate',
+ 'deleteGate',
+ 'crudRoutePart',
+ 'row'
+ ));
+ });
+
+ $table->editColumn('id', function ($row) {
+ return $row->id ? $row->id : "";
+ });
+ $table->editColumn('name', function ($row) {
+ return $row->name ? $row->name : "";
+ });
+ $table->editColumn('price', function ($row) {
+ return $row->price ? $row->price : "";
+ });
+
+ $table->rawColumns(['actions', 'placeholder']);
+
+ return $table->make(true);
+ }
+
+ return view('admin.products.index');
+ }
+
+ public function create()
+ {
+ abort_if(Gate::denies('product_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
+
+ return view('admin.products.create');
+ }
+
+ public function store(StoreProductRequest $request)
+ {
+ $product = Product::create($request->all());
+
+ return redirect()->route('admin.products.index');
+ }
+
+ public function edit(Product $product)
+ {
+ abort_if(Gate::denies('product_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
+
+ return view('admin.products.edit', compact('product'));
+ }
+
+ public function update(UpdateProductRequest $request, Product $product)
+ {
+ $product->update($request->all());
+
+ return redirect()->route('admin.products.index');
+ }
+
+ public function show(Product $product)
+ {
+ abort_if(Gate::denies('product_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
+
+ return view('admin.products.show', compact('product'));
+ }
+
+ public function destroy(Product $product)
+ {
+ abort_if(Gate::denies('product_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');
+
+ $product->delete();
+
+ return back();
+ }
+
+ public function massDestroy(MassDestroyProductRequest $request)
+ {
+ Product::whereIn('id', request('ids'))->delete();
+
+ return response(null, Response::HTTP_NO_CONTENT);
+ }
+}
diff --git a/app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php b/app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php
index 932c9d6c..663cc8bf 100755
--- a/app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php
+++ b/app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php
@@ -17,13 +17,14 @@ public function index()
{
abort_if(Gate::denies('appointment_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
- return new AppointmentResource(Appointment::with(['client', 'employee', 'services'])->get());
+ return new AppointmentResource(Appointment::with(['client', 'employee', 'services', 'products'])->get());
}
public function store(StoreAppointmentRequest $request)
{
$appointment = Appointment::create($request->all());
$appointment->services()->sync($request->input('services', []));
+ $appointment->products()->sync($request->input('products', []));
return (new AppointmentResource($appointment))
->response()
@@ -34,13 +35,14 @@ public function show(Appointment $appointment)
{
abort_if(Gate::denies('appointment_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
- return new AppointmentResource($appointment->load(['client', 'employee', 'services']));
+ return new AppointmentResource($appointment->load(['client', 'employee', 'services', 'products']));
}
public function update(UpdateAppointmentRequest $request, Appointment $appointment)
{
$appointment->update($request->all());
$appointment->services()->sync($request->input('services', []));
+ $appointment->products()->sync($request->input('products', []));
return (new AppointmentResource($appointment))
->response()
diff --git a/app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php b/app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php
index 2acb3aa5..110a0cb4 100755
--- a/app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php
+++ b/app/Http/Controllers/Api/V1/Admin/EmployeesApiController.php
@@ -20,13 +20,14 @@ public function index()
{
abort_if(Gate::denies('employee_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
- return new EmployeeResource(Employee::with(['services'])->get());
+ return new EmployeeResource(Employee::with(['services','products'])->get());
}
public function store(StoreEmployeeRequest $request)
{
$employee = Employee::create($request->all());
$employee->services()->sync($request->input('services', []));
+ $employee->products()->sync($request->input('products', []));
if ($request->input('photo', false)) {
$employee->addMedia(storage_path('tmp/uploads/' . $request->input('photo')))->toMediaCollection('photo');
@@ -41,13 +42,14 @@ public function show(Employee $employee)
{
abort_if(Gate::denies('employee_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
- return new EmployeeResource($employee->load(['services']));
+ return new EmployeeResource($employee->load(['services','products']));
}
public function update(UpdateEmployeeRequest $request, Employee $employee)
{
$employee->update($request->all());
$employee->services()->sync($request->input('services', []));
+ $employee->products()->sync($request->input('products', []));
if ($request->input('photo', false)) {
if (!$employee->photo || $request->input('photo') !== $employee->photo->file_name) {
diff --git a/app/Http/Controllers/Api/V1/Admin/ProductsApiController.php b/app/Http/Controllers/Api/V1/Admin/ProductsApiController.php
new file mode 100755
index 00000000..e51b09fd
--- /dev/null
+++ b/app/Http/Controllers/Api/V1/Admin/ProductsApiController.php
@@ -0,0 +1,56 @@
+all());
+
+ return (new ProductResource($product))
+ ->response()
+ ->setStatusCode(Response::HTTP_CREATED);
+ }
+
+ public function show(Product $product)
+ {
+ abort_if(Gate::denies('product_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
+
+ return new ProductResource($product);
+ }
+
+ public function update(UpdateProductRequest $request, Product $product)
+ {
+ $product->update($request->all());
+
+ return (new ProductResource($product))
+ ->response()
+ ->setStatusCode(Response::HTTP_ACCEPTED);
+ }
+
+ public function destroy(Product $product)
+ {
+ abort_if(Gate::denies('product_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');
+
+ $product->delete();
+
+ return response(null, Response::HTTP_NO_CONTENT);
+ }
+}
diff --git a/app/Http/Requests/MassDestroyProductRequest.php b/app/Http/Requests/MassDestroyProductRequest.php
new file mode 100644
index 00000000..7e2987ee
--- /dev/null
+++ b/app/Http/Requests/MassDestroyProductRequest.php
@@ -0,0 +1,26 @@
+ 'required|array',
+ 'ids.*' => 'exists:products,id',
+ ];
+ }
+}
diff --git a/app/Http/Requests/StoreAppointmentRequest.php b/app/Http/Requests/StoreAppointmentRequest.php
index ed0c2c5a..be6a9e83 100755
--- a/app/Http/Requests/StoreAppointmentRequest.php
+++ b/app/Http/Requests/StoreAppointmentRequest.php
@@ -25,12 +25,10 @@ public function rules()
],
'start_time' => [
'required',
- 'unique:appointments,start_time',
'date_format:' . config('panel.date_format') . ' ' . config('panel.time_format'),
],
'finish_time' => [
'required',
- 'unique:appointments,finish_time',
'date_format:' . config('panel.date_format') . ' ' . config('panel.time_format'),
],
'price' => [
@@ -42,6 +40,12 @@ public function rules()
'services' => [
'array',
],
+ 'products.*' => [
+ 'integer',
+ ],
+ 'products' => [
+ 'array',
+ ],
];
}
}
\ No newline at end of file
diff --git a/app/Http/Requests/StoreEmployeeRequest.php b/app/Http/Requests/StoreEmployeeRequest.php
index 07a9a1cd..d665ee5a 100755
--- a/app/Http/Requests/StoreEmployeeRequest.php
+++ b/app/Http/Requests/StoreEmployeeRequest.php
@@ -28,6 +28,12 @@ public function rules()
'services' => [
'array',
],
+ 'products.*' => [
+ 'integer',
+ ],
+ 'products' => [
+ 'array',
+ ],
];
}
}
diff --git a/app/Http/Requests/StoreProductRequest.php b/app/Http/Requests/StoreProductRequest.php
new file mode 100644
index 00000000..c15ab619
--- /dev/null
+++ b/app/Http/Requests/StoreProductRequest.php
@@ -0,0 +1,27 @@
+ [
+ 'required',
+ ],
+ ];
+ }
+}
diff --git a/app/Http/Requests/UpdateAppointmentRequest.php b/app/Http/Requests/UpdateAppointmentRequest.php
index 9fa2a9d4..25347129 100755
--- a/app/Http/Requests/UpdateAppointmentRequest.php
+++ b/app/Http/Requests/UpdateAppointmentRequest.php
@@ -37,6 +37,12 @@ public function rules()
'services' => [
'array',
],
+ 'products.*' => [
+ 'integer',
+ ],
+ 'products' => [
+ 'array',
+ ],
];
}
}
diff --git a/app/Http/Requests/UpdateEmployeeRequest.php b/app/Http/Requests/UpdateEmployeeRequest.php
index 220de8e6..aed5b197 100755
--- a/app/Http/Requests/UpdateEmployeeRequest.php
+++ b/app/Http/Requests/UpdateEmployeeRequest.php
@@ -28,6 +28,12 @@ public function rules()
'services' => [
'array',
],
+ 'products.*' => [
+ 'integer',
+ ],
+ 'products' => [
+ 'array',
+ ],
];
}
}
diff --git a/app/Http/Requests/UpdateProductRequest.php b/app/Http/Requests/UpdateProductRequest.php
new file mode 100644
index 00000000..662d3146
--- /dev/null
+++ b/app/Http/Requests/UpdateProductRequest.php
@@ -0,0 +1,27 @@
+ [
+ 'required',
+ ],
+ ];
+ }
+}
diff --git a/app/Http/Resources/Admin/ProductResource.php b/app/Http/Resources/Admin/ProductResource.php
new file mode 100755
index 00000000..2d58114f
--- /dev/null
+++ b/app/Http/Resources/Admin/ProductResource.php
@@ -0,0 +1,13 @@
+belongsToMany(Employee::class);
+ }
+
+ public function appointments()
+ {
+ return $this->belongsToMany(Appointment::class);
+ }
+}
diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php
new file mode 100755
index 00000000..1707444e
--- /dev/null
+++ b/database/factories/ProductFactory.php
@@ -0,0 +1,11 @@
+define(Product::class, function (Faker $faker) {
+ return [
+ 'name' => $faker->word,
+ 'price' => rand(10, 99),
+ ];
+});
diff --git a/database/migrations/2019_09_19_000004_create_products_table.php b/database/migrations/2019_09_19_000004_create_products_table.php
new file mode 100755
index 00000000..d4769f63
--- /dev/null
+++ b/database/migrations/2019_09_19_000004_create_products_table.php
@@ -0,0 +1,23 @@
+increments('id');
+
+ $table->string('name');
+
+ $table->decimal('price', 15, 2)->nullable();
+
+ $table->timestamps();
+
+ $table->softDeletes();
+ });
+ }
+}
diff --git a/database/migrations/2019_09_19_000010_create_employee_product_pivot_table.php b/database/migrations/2019_09_19_000010_create_employee_product_pivot_table.php
new file mode 100755
index 00000000..9780305a
--- /dev/null
+++ b/database/migrations/2019_09_19_000010_create_employee_product_pivot_table.php
@@ -0,0 +1,21 @@
+unsignedInteger('employee_id');
+
+ $table->foreign('employee_id', 'employee_id_fk_360623')->references('id')->on('employees')->onDelete('cascade');
+
+ $table->unsignedInteger('product_id');
+
+ $table->foreign('product_id', 'product_id_fk_360623')->references('id')->on('products')->onDelete('cascade');
+ });
+ }
+}
diff --git a/database/migrations/2019_09_19_000010_create_employee_service_pivot_table.php b/database/migrations/2019_09_19_000010_create_employee_service_pivot_table.php
index bf699182..4b5db50f 100755
--- a/database/migrations/2019_09_19_000010_create_employee_service_pivot_table.php
+++ b/database/migrations/2019_09_19_000010_create_employee_service_pivot_table.php
@@ -11,11 +11,11 @@ public function up()
Schema::create('employee_service', function (Blueprint $table) {
$table->unsignedInteger('employee_id');
- $table->foreign('employee_id', 'employee_id_fk_360622')->references('id')->on('employees')->onDelete('cascade');
+ $table->foreign('employee_id', 'employee_id_fk_360623')->references('id')->on('employees')->onDelete('cascade');
$table->unsignedInteger('service_id');
- $table->foreign('service_id', 'service_id_fk_360622')->references('id')->on('services')->onDelete('cascade');
+ $table->foreign('service_id', 'service_id_fk_360623')->references('id')->on('services')->onDelete('cascade');
});
}
}
diff --git a/database/migrations/2019_09_19_000011_create_appointment_product_pivot_table.php b/database/migrations/2019_09_19_000011_create_appointment_product_pivot_table.php
new file mode 100755
index 00000000..75571f94
--- /dev/null
+++ b/database/migrations/2019_09_19_000011_create_appointment_product_pivot_table.php
@@ -0,0 +1,21 @@
+unsignedInteger('appointment_id');
+
+ $table->foreign('appointment_id', 'appointment_id_fk_360721')->references('id')->on('appointments')->onDelete('cascade');
+
+ $table->unsignedInteger('product_id');
+
+ $table->foreign('product_id', 'product_id_fk_360721')->references('id')->on('products')->onDelete('cascade');
+ });
+ }
+}
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index 360c0718..cfda9813 100755
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -13,6 +13,7 @@ public function run()
UsersTableSeeder::class,
RoleUserTableSeeder::class,
ServicesTableSeeder::class,
+ ProductsTableSeeder::class,
EmployeesTableSeeder::class,
ClientsTableSeeder::class,
AppointmentsTableSeeder::class,
diff --git a/database/seeds/PermissionsTableSeeder.php b/database/seeds/PermissionsTableSeeder.php
index 679bbc3e..839b36d7 100755
--- a/database/seeds/PermissionsTableSeeder.php
+++ b/database/seeds/PermissionsTableSeeder.php
@@ -224,6 +224,36 @@ public function run()
'created_at' => '2019-09-19 12:14:15',
'updated_at' => '2019-09-19 12:14:15',
],
+ [
+ 'id' => '37',
+ 'title' => 'product_create',
+ 'created_at' => '2019-09-19 12:14:15',
+ 'updated_at' => '2019-09-19 12:14:15',
+ ],
+ [
+ 'id' => '38',
+ 'title' => 'product_edit',
+ 'created_at' => '2019-09-19 12:14:15',
+ 'updated_at' => '2019-09-19 12:14:15',
+ ],
+ [
+ 'id' => '39',
+ 'title' => 'product_show',
+ 'created_at' => '2019-09-19 12:14:15',
+ 'updated_at' => '2019-09-19 12:14:15',
+ ],
+ [
+ 'id' => '40',
+ 'title' => 'product_delete',
+ 'created_at' => '2019-09-19 12:14:15',
+ 'updated_at' => '2019-09-19 12:14:15',
+ ],
+ [
+ 'id' => '41',
+ 'title' => 'product_access',
+ 'created_at' => '2019-09-19 12:14:15',
+ 'updated_at' => '2019-09-19 12:14:15',
+ ],
];
Permission::insert($permissions);
diff --git a/database/seeds/ProductsTableSeeder.php b/database/seeds/ProductsTableSeeder.php
new file mode 100755
index 00000000..a03d377d
--- /dev/null
+++ b/database/seeds/ProductsTableSeeder.php
@@ -0,0 +1,16 @@
+create();
+ }
+}
diff --git a/resources/lang/en/cruds.php b/resources/lang/en/cruds.php
index 3c2917a4..ebb97a70 100755
--- a/resources/lang/en/cruds.php
+++ b/resources/lang/en/cruds.php
@@ -83,6 +83,24 @@
'deleted_at_helper' => '',
],
],
+ 'product' => [
+ 'title' => 'Products',
+ 'title_singular' => 'Product',
+ 'fields' => [
+ 'id' => 'ID',
+ 'id_helper' => '',
+ 'name' => 'Name',
+ 'name_helper' => '',
+ 'price' => 'Price',
+ 'price_helper' => '',
+ 'created_at' => 'Created at',
+ 'created_at_helper' => '',
+ 'updated_at' => 'Updated at',
+ 'updated_at_helper' => '',
+ 'deleted_at' => 'Deleted at',
+ 'deleted_at_helper' => '',
+ ],
+ ],
'employee' => [
'title' => 'Employees',
'title_singular' => 'Employee',
@@ -99,6 +117,8 @@
'photo_helper' => '',
'services' => 'Services',
'services_helper' => '',
+ 'products' => 'Products',
+ 'products_helper' => '',
'created_at' => 'Created at',
'created_at_helper' => '',
'updated_at' => 'Updated at',
@@ -147,6 +167,8 @@
'comments_helper' => '',
'services' => 'Services',
'services_helper' => '',
+ 'products' => 'Products',
+ 'products_helper' => '',
'created_at' => 'Created at',
'created_at_helper' => '',
'updated_at' => 'Updated at',
diff --git a/resources/views/admin/appointments/create.blade.php b/resources/views/admin/appointments/create.blade.php
index 2f86d4c1..1517a7e8 100755
--- a/resources/views/admin/appointments/create.blade.php
+++ b/resources/views/admin/appointments/create.blade.php
@@ -101,6 +101,24 @@
{{ trans('cruds.appointment.fields.services_helper') }}
+
diff --git a/resources/views/admin/appointments/edit.blade.php b/resources/views/admin/appointments/edit.blade.php
index d7d02025..9943824d 100755
--- a/resources/views/admin/appointments/edit.blade.php
+++ b/resources/views/admin/appointments/edit.blade.php
@@ -102,6 +102,24 @@
{{ trans('cruds.appointment.fields.services_helper') }}
+
diff --git a/resources/views/admin/appointments/index.blade.php b/resources/views/admin/appointments/index.blade.php
index e21c3817..df4225eb 100755
--- a/resources/views/admin/appointments/index.blade.php
+++ b/resources/views/admin/appointments/index.blade.php
@@ -45,6 +45,9 @@
{{ trans('cruds.appointment.fields.services') }}
|
+
+ {{ trans('cruds.appointment.fields.products') }}
+ |
|
@@ -108,6 +111,7 @@ className: 'btn-danger',
{ data: 'price', name: 'price' },
{ data: 'comments', name: 'comments' },
{ data: 'services', name: 'services.name' },
+{ data: 'products', name: 'products.name' },
{ data: 'actions', name: '{{ trans('global.actions') }}' }
],
order: [[ 1, 'desc' ]],
diff --git a/resources/views/admin/appointments/show.blade.php b/resources/views/admin/appointments/show.blade.php
index 9c926eb9..a19f869a 100755
--- a/resources/views/admin/appointments/show.blade.php
+++ b/resources/views/admin/appointments/show.blade.php
@@ -76,6 +76,16 @@
@endforeach
+
+
+ Products
+ |
+
+ @foreach($appointment->products as $id => $products)
+ {{ $products->name }}
+ @endforeach
+ |
+
diff --git a/resources/views/admin/employees/create.blade.php b/resources/views/admin/employees/create.blade.php
index 672ae45a..c48c82d5 100755
--- a/resources/views/admin/employees/create.blade.php
+++ b/resources/views/admin/employees/create.blade.php
@@ -77,6 +77,24 @@
{{ trans('cruds.employee.fields.services_helper') }}
+
diff --git a/resources/views/admin/employees/edit.blade.php b/resources/views/admin/employees/edit.blade.php
index 7660e4e9..4f9d16f4 100755
--- a/resources/views/admin/employees/edit.blade.php
+++ b/resources/views/admin/employees/edit.blade.php
@@ -78,6 +78,24 @@
{{ trans('cruds.employee.fields.services_helper') }}
+
diff --git a/resources/views/admin/employees/index.blade.php b/resources/views/admin/employees/index.blade.php
index e88c557c..cd9e48f5 100755
--- a/resources/views/admin/employees/index.blade.php
+++ b/resources/views/admin/employees/index.blade.php
@@ -39,6 +39,9 @@
{{ trans('cruds.employee.fields.services') }}
|
+
+ {{ trans('cruds.employee.fields.products') }}
+ |
|
@@ -100,6 +103,7 @@ className: 'btn-danger',
{ data: 'phone', name: 'phone' },
{ data: 'photo', name: 'photo', sortable: false, searchable: false },
{ data: 'services', name: 'services.name' },
+{ data: 'products', name: 'products.name' },
{ data: 'actions', name: '{{ trans('global.actions') }}' }
],
order: [[ 1, 'desc' ]],
diff --git a/resources/views/admin/employees/show.blade.php b/resources/views/admin/employees/show.blade.php
index 1703f482..f6b2cffe 100755
--- a/resources/views/admin/employees/show.blade.php
+++ b/resources/views/admin/employees/show.blade.php
@@ -64,6 +64,16 @@
@endforeach
+
+
+ Products
+ |
+
+ @foreach($employee->products as $id => $products)
+ {{ $products->name }}
+ @endforeach
+ |
+
diff --git a/resources/views/admin/products/create.blade.php b/resources/views/admin/products/create.blade.php
new file mode 100755
index 00000000..58e419ec
--- /dev/null
+++ b/resources/views/admin/products/create.blade.php
@@ -0,0 +1,44 @@
+@extends('layouts.admin')
+@section('content')
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/products/edit.blade.php b/resources/views/admin/products/edit.blade.php
new file mode 100755
index 00000000..3cb74279
--- /dev/null
+++ b/resources/views/admin/products/edit.blade.php
@@ -0,0 +1,45 @@
+@extends('layouts.admin')
+@section('content')
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/products/index.blade.php b/resources/views/admin/products/index.blade.php
new file mode 100755
index 00000000..8490b461
--- /dev/null
+++ b/resources/views/admin/products/index.blade.php
@@ -0,0 +1,104 @@
+@extends('layouts.admin')
+@section('content')
+@can('product_create')
+
+@endcan
+
+
+
+
+
+
+
+
+
+ |
+
+ {{ trans('cruds.product.fields.id') }}
+ |
+
+ {{ trans('cruds.product.fields.name') }}
+ |
+
+ {{ trans('cruds.product.fields.price') }}
+ |
+
+
+ |
+
+
+
+
+
+
+
+@endsection
+@section('scripts')
+@parent
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/products/show.blade.php b/resources/views/admin/products/show.blade.php
new file mode 100755
index 00000000..7c6f4bae
--- /dev/null
+++ b/resources/views/admin/products/show.blade.php
@@ -0,0 +1,54 @@
+@extends('layouts.admin')
+@section('content')
+
+
+
+
+
+
+
+
+
+
+ {{ trans('cruds.product.fields.id') }}
+ |
+
+ {{ $product->id }}
+ |
+
+
+
+ {{ trans('cruds.product.fields.name') }}
+ |
+
+ {{ $product->name }}
+ |
+
+
+
+ {{ trans('cruds.product.fields.price') }}
+ |
+
+ ${{ $product->price }}
+ |
+
+
+
+
+ {{ trans('global.back_to_list') }}
+
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php
index 8093b2d9..64b598eb 100755
--- a/resources/views/partials/menu.blade.php
+++ b/resources/views/partials/menu.blade.php
@@ -62,6 +62,16 @@
@endcan
+ @can('product_access')
+
+
+
+
+
+ {{ trans('cruds.product.title') }}
+
+
+ @endcan
@can('employee_access')
diff --git a/routes/api.php b/routes/api.php
index 74515924..f9f54846 100755
--- a/routes/api.php
+++ b/routes/api.php
@@ -13,6 +13,9 @@
// Services
Route::apiResource('services', 'ServicesApiController');
+ // Products
+ Route::apiResource('products', 'ProductsApiController');
+
// Employees
Route::post('employees/media', 'EmployeesApiController@storeMedia')->name('employees.storeMedia');
Route::apiResource('employees', 'EmployeesApiController');
diff --git a/routes/web.php b/routes/web.php
index 0e506c54..a553b165 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -22,6 +22,10 @@
Route::delete('services/destroy', 'ServicesController@massDestroy')->name('services.massDestroy');
Route::resource('services', 'ServicesController');
+ // Products
+ Route::delete('products/destroy', 'ProductsController@massDestroy')->name('products.massDestroy');
+ Route::resource('products', 'ProductsController');
+
// Employees
Route::delete('employees/destroy', 'EmployeesController@massDestroy')->name('employees.massDestroy');
Route::post('employees/media', 'EmployeesController@storeMedia')->name('employees.storeMedia');
diff --git a/tests/Browser/ProductsTest.php b/tests/Browser/ProductsTest.php
new file mode 100644
index 00000000..42c074c0
--- /dev/null
+++ b/tests/Browser/ProductsTest.php
@@ -0,0 +1,20 @@
+browse(function (Browser $browser) use ($admin) {
+ $browser->loginAs($admin);
+ $browser->visit(route('admin.products.index'));
+ $browser->assertRouteIs('admin.products.index');
+ });
+ }
+}