Bladeren bron

company form azienda

ferrari 4 maanden geleden
bovenliggende
commit
0964cb2d5a

+ 4 - 0
app/Livewire/CompanyActivity.php

@@ -77,6 +77,8 @@ class CompanyActivity extends Component
             session()->flash('success','Dati salvati con successo');
             $this->resetFields();
             $this->is_edit = false;
+
+            $this->dispatch("update");
         } catch (\Exception $ex) {
             session()->flash('error','Errore (' . $ex->getMessage() . ')');
         }
@@ -87,6 +89,8 @@ class CompanyActivity extends Component
         $this->resetFields();
         $this->is_edit = false;
         $this->current_company_activity = null;
+
+        $this->dispatch("update");
     }
 
 }

+ 4 - 3
app/Livewire/Login.php

@@ -2,8 +2,10 @@
 
 namespace App\Livewire;
 
+use App\Models\User;
 use Livewire\Attributes\Layout;
 use Livewire\Component;
+use Illuminate\Support\Facades\Auth;
 
 class Login extends Component
 {
@@ -31,13 +33,12 @@ class Login extends Component
 
     public function login()
     {
-
         $this->validate();
         
-        if (\Auth::attempt(['email' => $this->email, 'password' => $this->password])) 
+        if (Auth::attempt(['email' => $this->email, 'password' => $this->password])) 
         {
         
-            $user = \Auth::user();
+            $user = Auth::user();
 
             /*if (!$user->first_login_completed) 
             {

+ 3 - 3
app/Livewire/Sidebar.php

@@ -6,15 +6,15 @@ use Livewire\Component;
 
 class Sidebar extends Component
 {
-    public $current_page;
+    public $current_route_name;
 
     public function render()
     {
         return view('livewire.sidebar');
     }
 
-    public function mount($current_page)
+    public function mount($current_route_name)
     {
-        $this->current_page = $current_page;
+        $this->current_route_name = $current_route_name;
     }
 }

+ 35 - 1
app/Models/Company.php

@@ -16,7 +16,7 @@ class Company extends Model
 
     public function __construct()
     {
-        setTenant();
+        $this->setTenant();
     }
 
     protected $fillable = [
@@ -64,4 +64,38 @@ class Company extends Model
         return $this->hasMany(\App\Models\CompanyActivity::class);
     }
 
+    function setTenant()
+    {
+        $user = auth()->user();
+
+        if ($user) {
+            Log::info('Setting database connection', [
+                'database' => $user->tenant_database,
+                'username' => $user->tenant_username,
+                // 'password' => $user->tenant_password
+            ]);
+
+            $connection = [
+                'driver' => 'mysql',
+                'host' => '127.0.0.1',
+                'port' => '3306',
+                'database' => $user->tenant_database,
+                'username' => $user->tenant_username,
+                // 'password' => $user->tenant_password,
+            ];
+
+            config(['database.connections.tenant' => $connection]);
+
+            config(['database.default' => 'tenant']);
+            DB::purge('tenant');
+            DB::reconnect('tenant');
+
+            session(['currentClient' => $user->tenant_database]);
+
+            session(['db_connection' => $connection]);
+
+            Log::info('Current database after setup: ' . DB::connection()->getDatabaseName());
+            Log::info('Current default connection: ' . DB::getDefaultConnection());
+        }
+    }
 }

+ 2 - 1
public/assets/css/colors.css

@@ -148,7 +148,7 @@
     --footer-icon: #f40000;
     --active-bg-color: #d9e8e5;
     --font-color: #aaa3a0;
-    --border-color: #000000;
+    --border-color: #b9b8be;
     --light-gray: #e5e5e5;
     --light-semi-gray: #efefef;
     --bg-light: #f4f4f4;
@@ -217,4 +217,5 @@
 
 :root {
     --color-lilla: #908CFF;
+    --color-grey: #e9e9eb;
 }

+ 467 - 118
public/assets/css/custom.css

@@ -1,25 +1,25 @@
 ul.standard-list {
-	margin-left: 2em;
+    margin-left: 2em;
 }
 
 ul.standard-list li {
-	list-style: disc;
+    list-style: disc;
 }
 
 /* Form */
 .form-control {
-	padding: 6px 14px;
-	font-size: 14px;
-	font-weight: 300;
-	color: var(--black);
-	line-height: 1em;
+    padding: 6px 14px;
+    font-size: 14px;
+    font-weight: 300;
+    color: var(--black);
+    line-height: 1em;
 }
 .form-control:focus {
-	color: var(--black);
+    color: var(--black);
 }
 .form-control::placeholder {
-	color: var(--black);
-	opacity: 0.75;
+    color: var(--black);
+    opacity: 0.75;
 }
 .theme-form input[type="text"].form-control.input-white,
 .theme-form input[type="email"].form-control.input-white,
@@ -37,155 +37,179 @@ ul.standard-list li {
 .theme-form input[type="file"].form-control.input-white,
 .theme-form textarea.form-control.input-white,
 .theme-form select.form-control.input-white {
-	color: var(--white);
-	background-color: transparent;
-	border-color: var(--white);
-	box-shadow: none;
+    color: var(--white);
+    background-color: transparent;
+    border-color: var(--white);
+    box-shadow: none;
 }
 .theme-form .form-control.input-white::placeholder {
-	color: var(--white);
-	opacity: 0.75;
+    color: var(--white);
+    opacity: 0.75;
 }
 .form-control::placeholder {
-	color: currentColor;
-	opacity: 1;
+    color: currentColor;
+    opacity: 1;
 }
 .form-control::file-selector-button {
-	padding-right: 30px;
-	border-radius: var(--bs-border-radius);
-	border: 1px solid;
-	border-radius: var(--bs-border-radius);
-	display: inline-block;
-	margin-left: -0.74rem;
-	scale: 1.06;
-	height: 33px;
+    padding-right: 30px;
+    border-radius: var(--bs-border-radius);
+    border: 1px solid;
+    border-radius: var(--bs-border-radius);
+    display: inline-block;
+    margin-left: -0.74rem;
+    scale: 1.06;
+    height: 33px;
+    background-color: transparent;
+    font-size: 12px;
+    border-color: var(--border-color);
+    color: var(--black);
 }
 .form-check-input:checked {
-	background-color: var(--theme-default);
-	border-color: var(--white);
+    background-color: var(--theme-default);
+    border-color: var(--white);
 }
 .form-wizard .step {
-	height: 8px;
-	width: 8px;
-	background-color: var(--theme-tertiary);
-	border-radius: 8px;
-	will-change: width;
-	transition: width 0.5s ease;
+    height: 8px;
+    width: 8px;
+    background-color: var(--theme-tertiary);
+    border-radius: 8px;
+    will-change: width;
+    transition: width 0.5s ease;
 }
 .form-wizard .step.active {
-	width: 24px;
+    width: 24px;
 }
 .form-wizard .step.finish {
-	background-color: var(--theme-tertiary);
+    background-color: var(--theme-tertiary);
 }
 a#prevBtn {
-	position: absolute;
-	font-size: 25px;
+    position: absolute;
+    font-size: 25px;
+}
+.form-group.has-switch {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    gap: 5px;
+}
+
+.switch input + .switch-state.bg-primary {
+    background-color: var(--color-grey) !important;
+}
+
+.switch input:checked + .switch-state.bg-primary {
+    background-color: var(--theme-default) !important;
+}
+
+.switch-state:before {
+    box-shadow: 0px 3px 1px 0 rgba(0, 0, 0, 0.06),
+        0px 3px 8px 0 rgba(0, 0, 0, 0.15);
 }
 /* END - Form */
 
 /* Buttons */
 .btn {
-	text-transform: uppercase;
-	font-size: 16px;
+    text-transform: uppercase;
+    font-size: 16px;
 }
 .btn:focus {
     color: var(--bs-btn-hover-color);
 }
 
 .btn-secondary {
-	background-color: var(--theme-secondary);
-	border: 1px solid var(--theme-secondary);
-	color: var(--theme-default);
+    background-color: var(--theme-secondary);
+    border: 1px solid var(--theme-secondary);
+    color: var(--theme-default);
 }
 .btn-secondary:hover,
 .btn-secondary:focus,
 .btn-secondary.active,
 .btn-secondary:active:focus,
 .btn-secondary.show {
-	background-color: var(--theme-primary);
+    background-color: var(--theme-primary);
 }
 
 .btn-medium {
-	width: 110px;
-	max-width: 100%;
+    width: 110px;
+    max-width: 100%;
+    font-weight: 500;
 }
 .btn-large {
-	width: 200px;
-	max-width: 100%;
+    width: 200px;
+    max-width: 100%;
 }
 /* END - Buttons */
 
 .badge {
-	pointer-events: none;
+    pointer-events: none;
 }
 
 .text-underline {
-	text-decoration: underline !important;
+    text-decoration: underline !important;
 }
 
 /* Frontend */
 .login-card,
 .registration-card,
 .onboarding-card {
-	min-height: 100vh;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	margin: 0 auto;
-	padding: 30px 12px;
-	background: none;
-	background-color: var(--bs-body-bg);
+    min-height: 100vh;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    margin: 0 auto;
+    padding: 30px 12px;
+    background: none;
+    background-color: var(--bs-body-bg);
 }
 .registration-card,
 .onboarding-card {
-	background-color: var(--primary-color);
+    background-color: var(--primary-color);
 }
 .login-card .login-main,
 .registration-card .registration-main,
 .onboarding-card .onboarding-main {
-	max-width: 650px;
-	width: calc(100dvw - 15px);
-	padding: 80px 40px;
-	border-radius: 40px;
-	box-shadow: 0 0 37px rgba(0, 0, 0, 0.05);
-	margin: 0 auto;
-	background-color: var(--bs-body-bg);
-	min-height: 700px;
+    max-width: 650px;
+    width: calc(100dvw - 15px);
+    padding: 80px 40px;
+    border-radius: 40px;
+    box-shadow: 0 0 37px rgba(0, 0, 0, 0.05);
+    margin: 0 auto;
+    background-color: var(--bs-body-bg);
+    min-height: 700px;
 }
 .registration-card .registration-main,
 .onboarding-card .onboarding-main {
-	max-width: 1075px;
-	background-color: var(--bs-body-bg);
+    max-width: 1075px;
+    background-color: var(--bs-body-bg);
 }
 .login-card .login-main .login-inner {
-	max-width: 422px;
+    max-width: 422px;
 }
 .registration-card .registration-main .registration-inner {
-	max-width: 860px;
+    max-width: 860px;
 }
 .onboarding-card .onboarding-main .onboarding-inner {
-	max-width: 690px;
+    max-width: 690px;
 }
 .login-card .login-main .login-inner .form-logo,
 .registration-card .registration-main .registration-inner .form-logo,
 .onboarding-card .onboarding-main .onboarding-inner .form-logo {
-	max-width: min(330px, 100%);
+    max-width: min(330px, 100%);
 }
 .login-card .login-main .theme-form label,
 .registration-card .registration-main .theme-form label {
-	font-size: 16px;
-	font-weight: 600;
+    font-size: 16px;
+    font-weight: 600;
 }
 .onboarding-card .onboarding-main .theme-form label {
-	font-size: 16px;
-	font-weight: 400;
+    font-size: 16px;
+    font-weight: 400;
 }
 .login-card .login-main .theme-form input::-webkit-input-placeholder {
-	color: inherit;
+    color: inherit;
 }
 .login-card .login-main .theme-form .form-group {
-	margin-bottom: 0;
+    margin-bottom: 0;
 }
 .show-hide span {
     cursor: pointer;
@@ -241,63 +265,75 @@ a#prevBtn {
     height: 35px;
 }
 @media (max-width: 991.98px) {
-	.login-card .login-main {
-		width: 550px;
-	}
+    .login-card .login-main {
+        width: 550px;
+    }
 }
 @media (max-width: 575.98px) {
-	.login-card .login-main .theme-form .form-group {
-		margin-bottom: 0;
-	}
+    .login-card .login-main .theme-form .form-group {
+        margin-bottom: 0;
+    }
 }
 /* END - Frontend */
 
 /* sidebar */
+.page-header .logo-wrapper .sidebar-logo {
+    height: 46px;
+    margin: auto;
+}
+
 .page-sidebar {
-	margin-top: 83px;
-	background: var(--theme-default);
+    margin-top: 83px;
+    background: var(--theme-default);
 }
 .page-sidebar .sidebar-menu::-webkit-scrollbar {
-	width: 5px;
-	height: 7px;
-	border-color: var(--theme-default);
+    width: 5px;
+    height: 7px;
+    border-color: var(--theme-default);
 }
 .page-sidebar .sidebar-menu::-webkit-scrollbar-thumb {
-	background-color: var(--white);
-	border-radius: 10px;
+    background-color: var(--white);
+    border-radius: 10px;
 }
 .page-sidebar .sidebar-menu::-webkit-scrollbar-track {
-	background: var(--theme-default);
-	border-color: var(--theme-default);
+    background: var(--theme-default);
+    border-color: var(--theme-default);
 }
 .simplebar-wrapper {
     width: 100%;
 }
-.page-wrapper.compact-wrapper .page-body-wrapper .page-sidebar .sidebar-menu .simplebar-wrapper .simplebar-content {
-	gap: 10px;
+.page-wrapper.compact-wrapper
+    .page-body-wrapper
+    .page-sidebar
+    .sidebar-menu
+    .simplebar-wrapper
+    .simplebar-content {
+    gap: 10px;
 }
 .sidebar-menu {
-    padding: 15px;
+    padding: 15px 31px 15px 11px;
 }
 .page-sidebar .sidebar-menu .sidebar-list {
     border: none;
 }
 .page-sidebar .sidebar-submenu {
-    margin-left: 55px;
-    margin-bottom: 20px;
+    margin-left: 88px;
+    margin-bottom: 15px;
+    margin-top: 2px;
     border-left: 1px solid var(--white);
 }
 .page-sidebar .sidebar-submenu li {
-	list-style-type: none;
+    list-style-type: none;
+    padding: 0 5px;
 }
 .page-sidebar .sidebar-submenu a {
     padding-left: 4px;
     color: var(--white);
     font-size: 14px;
-    font-weight: 300;
+    font-weight: 400;
 }
 .page-sidebar .sidebar-submenu a::before {
-	display: none;
+    display: none;
 }
 .sidebar-menu .sidebar-list:hover .sidebar-link,
 .sidebar-menu .sidebar-list .sidebar-link.active {
@@ -311,11 +347,11 @@ a#prevBtn {
     color: var(--white);
 }
 .page-sidebar .sidebar-submenu:has(.active) {
-    display: block;
+    display: block !important;
 }
 .sidebar-menu .sidebar-list:hover .sidebar-link i,
 .sidebar-menu .sidebar-list:hover .sidebar-link a,
-.sidebar-menu .sidebar-list:hover .sidebar-link span{
+.sidebar-menu .sidebar-list:hover .sidebar-link span {
     color: var(--white);
 }
 .sidebar-menu .sidebar-list .sidebar-link {
@@ -325,34 +361,347 @@ a#prevBtn {
 }
 .sidebar-menu .sidebar-list .sidebar-link .main-icon {
     margin-left: 0;
-    margin-right: 15px;
+    margin-right: 28px;
+    font-size: 20px;
 }
 .sidebar-menu .sidebar-list .sidebar-link {
     background-color: transparent;
     color: var(--white);
     border-radius: unset;
     font-size: 16px;
-    font-weight: 300;
+    font-weight: 400;
+    padding: 15px 26px;
 }
 /* END - sidebar */
 
 .row.w-100 {
-	width: calc(100% + var(--bs-gutter-x)) !important;
+    width: calc(100% + var(--bs-gutter-x)) !important;
 }
 
 .notification-icon {
-	display: flex;
-	width: 36px;
-	height: 36px;
-	justify-content: center;
-	align-items: center;
-	border: 1px solid;
-	border-radius: 100%;
-	cursor: pointer;
-	color: var(--theme-default);
+    display: flex;
+    width: 40px;
+    height: 40px;
+    justify-content: center;
+    align-items: center;
+    border: 1px solid;
+    border-radius: 100%;
+    cursor: pointer;
+    color: var(--theme-default);
+}
+
+.user-img {
+    display: flex;
+    width: 40px;
+    height: 40px;
+    justify-content: center;
+    align-items: center;
+    border: 1px solid var(--theme-default);
+    border-radius: 100%;
+    cursor: pointer;
+    background-color: var(--theme-default);
+    text-align: center;
+    color: var(--theme-tertiary);
+    font-weight: normal;
+    font-size: 20px;
+    overflow: hidden;
 }
 
 /* Content */
 .page-wrapper .page-body-wrapper .page-body {
-	min-height: calc(100dvh - 83px);
-}
+    min-height: calc(100dvh - 83px);
+    padding-bottom: 10px;
+}
+
+.slot-info {
+    padding: 39px 22px;
+}
+
+.page-body .slot-title {
+    font-size: 24px;
+    text-transform: uppercase;
+}
+
+.slot-breadcrumbs {
+    display: flex;
+    flex-direction: row;
+    flex-wrap: wrap;
+    align-content: flex-start;
+    justify-content: flex-start;
+    align-items: center;
+    gap: 20px;
+}
+
+.slot-breadcrumbs a {
+    font-size: 16px;
+    font-weight: 700;
+    position: relative;
+}
+
+.slot-breadcrumbs a:not(:first-of-type):before {
+    content: "/";
+    position: absolute;
+    left: -13px;
+}
+
+.page-wrapper .page-body-wrapper .page-body .page-content {
+    padding: 24px;
+    border-radius: 16px;
+    background-color: #ffffff;
+    margin-bottom: 10px;
+}
+/* End - Content */
+
+/* Tabs */
+.section-tabs {
+    padding-bottom: 40px;
+    display: flex;
+    column-gap: 64px;
+    row-gap: 10px;
+    flex-direction: row;
+    flex-wrap: wrap;
+    align-content: flex-start;
+    justify-content: flex-start;
+    align-items: baseline;
+}
+.section-tabs .section-tab {
+    position: relative;
+    font-size: 16px;
+    font-weight: 500;
+    cursor: pointer;
+    padding-inline: 1px;
+    user-select: none;
+}
+.section-tabs .section-tab::after {
+    content: "";
+    position: absolute;
+    width: 100%;
+    height: 3px;
+    left: 0;
+    bottom: -2px;
+    opacity: 0;
+    background-color: var(--theme-tertiary);
+}
+.section-tabs .section-tab:hover::after {
+    opacity: 0.25;
+}
+.section-tabs .section-tab.active::after {
+    opacity: 1;
+}
+.section-content {
+    display: none;
+    padding: 0 16px;
+}
+.section-content.active {
+    display: block;
+}
+/* END - Tabs */
+
+/* Table */
+div.dt-container div.dt-layout-row {
+margin: 24px 0 0 0;
+}
+div.dt-container div.dt-layout-row.dt-layout-table {
+    margin-top: 0;
+}
+
+div.dt-container select.dt-input {
+    border-radius: 8px;
+    padding-inline: 16px;
+    padding-block: 3px 5px;
+    margin-left: 16px;
+    font-size: 16px;
+    font-weight: 400;
+    height: 28px;
+    border: 1px solid var(--border-color);
+}
+
+div.dt-container .dt-search input {
+    border-color: #00000080;
+    border-radius: 8px;
+    height: 32px;
+    padding-inline: 36px 12px;
+    margin: 0;
+}
+
+div.dt-container .dt-search label {
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 32px;
+    width: 40px;
+    display: flex;
+    flex-direction: row;
+    flex-wrap: nowrap;
+    align-content: center;
+    justify-content: center;
+    align-items: center;
+    color: var(--theme-default);
+    font-size: 16px;
+    font-weight: 900;
+    font-family: "Font Awesome 6 Free";
+    -webkit-font-smoothing: antialiased;
+    font-style: normal;
+    font-variant: normal;
+    line-height: 1;
+    text-rendering: auto;
+}
+
+div.dt-container .dt-search {
+    position: relative;
+}
+
+div.dt-container .dt-search label:after {
+    content: "\f002";
+}
+
+table.dataTable thead > tr > th.dt-orderable-asc:hover,
+table.dataTable thead > tr > th.dt-orderable-desc:hover,
+table.dataTable thead > tr > td.dt-orderable-asc:hover,
+table.dataTable thead > tr > td.dt-orderable-desc:hover {
+    outline: none;
+}
+
+table.dataTable.order-column > tbody tr:not(:hover) > .sorting_1,
+table.dataTable.order-column > tbody tr:not(:hover) > .sorting_2,
+table.dataTable.order-column > tbody tr:not(:hover) > .sorting_3,
+table.dataTable.display > tbody tr:not(:hover) > .sorting_1,
+table.dataTable.display > tbody tr:not(:hover) > .sorting_2,
+table.dataTable.display > tbody tr:not(:hover) > .sorting_3,
+table.dataTable.display tbody tr:not(:hover) > .sorting_1,
+table.dataTable.order-column.hover tbody tr:not(:hover) > .sorting_1,
+table.dataTable.stripe > tbody > tr:not(:hover):nth-child(odd) > *,
+table.dataTable.display > tbody > tr:not(:hover):nth-child(odd) > * {
+    box-shadow: unset;
+}
+
+table.dataTable > thead > tr > th,
+table.dataTable > thead > tr > td {
+    padding: 24px  24px 16px 24px;
+}
+
+table.dataTable > tbody > tr > th,
+table.dataTable > tbody > tr > td {
+    padding: 22px 24px;
+}
+
+table.dataTable .dt-actions {
+    display: flex;
+    justify-content: center;
+    gap: 12px;
+}
+
+table.dataTable .dt-actions .dt-action {
+    font-size: 16px;
+    cursor: pointer;
+    height: 24px;
+    width: 24px;
+    display: flex;
+    flex-direction: row;
+    flex-wrap: nowrap;
+    align-content: center;
+    justify-content: center;
+    align-items: center;
+}
+
+div.dt-container .dt-info {
+    font-size: 14px;
+}
+
+div.dt-container .dt-paging nav {
+    display: flex;
+    flex-direction: row;
+    flex-wrap: nowrap;
+    align-content: center;
+    justify-content: center;
+    align-items: center;
+    gap: 6px;
+}
+
+div.dt-container .dt-paging .dt-paging-button,
+div.dt-container .dt-paging .dt-paging-button:hover,
+div.dt-container .dt-paging .dt-paging-button.current,
+div.dt-container .dt-paging .dt-paging-button.current:hover {
+    width: 26px;
+    height: 26px;
+    padding: 0px;
+    margin: 0;
+    border: none;
+    border-radius: 4px;
+    background: unset;
+    background-color: rgb(0 0 0 / 8%);
+    font-size: 14px;
+    box-shadow: none;
+}
+
+div.dt-container .dt-paging .dt-paging-button:hover,
+div.dt-container .dt-paging .dt-paging-button.current,
+div.dt-container .dt-paging .dt-paging-button.current:hover {
+    background-color: var(--theme-default);
+    color: var(--white) !important;
+}
+
+div.dt-container .dt-paging .dt-paging-button.first,
+div.dt-container .dt-paging .dt-paging-button.first.disabled,
+div.dt-container .dt-paging .dt-paging-button.first:hover,
+div.dt-container .dt-paging .dt-paging-button.first.disabled:hover,
+div.dt-container .dt-paging .dt-paging-button.previous,
+div.dt-container .dt-paging .dt-paging-button.previous.disabled,
+div.dt-container .dt-paging .dt-paging-button.previous:hover,
+div.dt-container .dt-paging .dt-paging-button.previous.disabled:hover,
+div.dt-container .dt-paging .dt-paging-button.next,
+div.dt-container .dt-paging .dt-paging-button.next.disabled,
+div.dt-container .dt-paging .dt-paging-button.next:hover,
+div.dt-container .dt-paging .dt-paging-button.next.disabled:hover,
+div.dt-container .dt-paging .dt-paging-button.last,
+div.dt-container .dt-paging .dt-paging-button.last.disabled,
+div.dt-container .dt-paging .dt-paging-button.last:hover,
+div.dt-container .dt-paging .dt-paging-button.last.disabled:hover {
+    background: transparent;
+    color: #ababab !important;
+    opacity: 1;
+    border: none;
+    position: relative;
+    font-size: 0;
+}
+
+div.dt-container .dt-paging .dt-paging-button.first:not(.disabled):hover:after,
+div.dt-container .dt-paging .dt-paging-button.previous:not(.disabled):hover:after,
+div.dt-container .dt-paging .dt-paging-button.next:not(.disabled):hover:after,
+div.dt-container .dt-paging .dt-paging-button.last:not(.disabled):hover:after {
+    opacity: 0.66;
+}
+
+div.dt-container .dt-paging .dt-paging-button.first:after,
+div.dt-container .dt-paging .dt-paging-button.previous:after,
+div.dt-container .dt-paging .dt-paging-button.next:after,
+div.dt-container .dt-paging .dt-paging-button.last:after {
+    content: "";
+    width: 100%;
+    height: 100%;
+    display: flex;
+    position: absolute;
+    top: 0;
+    left: 0;
+    flex-direction: row;
+    flex-wrap: nowrap;
+    align-content: center;
+    justify-content: center;
+    align-items: center;
+    opacity: 0.33;
+}
+
+div.dt-container .dt-paging .dt-paging-button.first:after{
+    content: url(/assets/images/pagination/first.svg);
+}
+div.dt-container .dt-paging .dt-paging-button.previous:after{
+    content: url(/assets/images/pagination/previous.svg);
+}
+div.dt-container .dt-paging .dt-paging-button.next:after{
+    content: url(/assets/images/pagination/next.svg);
+}
+div.dt-container .dt-paging .dt-paging-button.last:after {
+    content: url(/assets/images/pagination/last.svg);
+}
+
+/* END - Table */

+ 87 - 78
public/assets/css/style.css

@@ -591,7 +591,7 @@ progress {
 .container-lg,
 .container-md,
 .container-sm {
-	--bs-gutter-x: 1.5rem;
+	--bs-gutter-x: 40px;
 	--bs-gutter-y: 0;
 	width: 100%;
 	padding-right: calc(var(--bs-gutter-x) * 0.5);
@@ -650,7 +650,7 @@ progress {
 }
 
 .row {
-	--bs-gutter-x: 1.5rem;
+	--bs-gutter-x: 40px;
 	--bs-gutter-y: 0;
 	display: flex;
 	flex-wrap: wrap;
@@ -827,52 +827,52 @@ progress {
 
 .g-1,
 .gx-1 {
-	--bs-gutter-x: 0.25rem;
+	--bs-gutter-x: 6.666666px;
 }
 
 .g-1,
 .gy-1 {
-	--bs-gutter-y: 0.25rem;
+	--bs-gutter-y: 6.666666px;
 }
 
 .g-2,
 .gx-2 {
-	--bs-gutter-x: 0.5rem;
+	--bs-gutter-x: 13.333333px;
 }
 
 .g-2,
 .gy-2 {
-	--bs-gutter-y: 0.5rem;
+	--bs-gutter-y: 13.333333px;
 }
 
 .g-3,
 .gx-3 {
-	--bs-gutter-x: 1rem;
+	--bs-gutter-x: 26.666666px;
 }
 
 .g-3,
 .gy-3 {
-	--bs-gutter-y: 1rem;
+	--bs-gutter-y: 26.666666px;
 }
 
 .g-4,
 .gx-4 {
-	--bs-gutter-x: 1.5rem;
+	--bs-gutter-x: 40px;
 }
 
 .g-4,
 .gy-4 {
-	--bs-gutter-y: 1.5rem;
+	--bs-gutter-y: 40px;
 }
 
 .g-5,
 .gx-5 {
-	--bs-gutter-x: 3rem;
+	--bs-gutter-x: 80px;
 }
 
 .g-5,
 .gy-5 {
-	--bs-gutter-y: 3rem;
+	--bs-gutter-y: 80px;
 }
 
 @media (min-width: 576px) {
@@ -1005,43 +1005,43 @@ progress {
 	}
 	.g-sm-1,
 	.gx-sm-1 {
-		--bs-gutter-x: 0.25rem;
+		--bs-gutter-x: 6.666666px;
 	}
 	.g-sm-1,
 	.gy-sm-1 {
-		--bs-gutter-y: 0.25rem;
+		--bs-gutter-y: 6.666666px;
 	}
 	.g-sm-2,
 	.gx-sm-2 {
-		--bs-gutter-x: 0.5rem;
+		--bs-gutter-x: 13.333333px;
 	}
 	.g-sm-2,
 	.gy-sm-2 {
-		--bs-gutter-y: 0.5rem;
+		--bs-gutter-y: 13.333333px;
 	}
 	.g-sm-3,
 	.gx-sm-3 {
-		--bs-gutter-x: 1rem;
+		--bs-gutter-x: 26.666666px;
 	}
 	.g-sm-3,
 	.gy-sm-3 {
-		--bs-gutter-y: 1rem;
+		--bs-gutter-y: 26.666666px;
 	}
 	.g-sm-4,
 	.gx-sm-4 {
-		--bs-gutter-x: 1.5rem;
+		--bs-gutter-x: 40px;
 	}
 	.g-sm-4,
 	.gy-sm-4 {
-		--bs-gutter-y: 1.5rem;
+		--bs-gutter-y: 40px;
 	}
 	.g-sm-5,
 	.gx-sm-5 {
-		--bs-gutter-x: 3rem;
+		--bs-gutter-x: 80px;
 	}
 	.g-sm-5,
 	.gy-sm-5 {
-		--bs-gutter-y: 3rem;
+		--bs-gutter-y: 80px;
 	}
 }
 @media (min-width: 768px) {
@@ -1174,43 +1174,43 @@ progress {
 	}
 	.g-md-1,
 	.gx-md-1 {
-		--bs-gutter-x: 0.25rem;
+		--bs-gutter-x: 6.666666px;
 	}
 	.g-md-1,
 	.gy-md-1 {
-		--bs-gutter-y: 0.25rem;
+		--bs-gutter-y: 6.666666px;
 	}
 	.g-md-2,
 	.gx-md-2 {
-		--bs-gutter-x: 0.5rem;
+		--bs-gutter-x: 13.333333px;
 	}
 	.g-md-2,
 	.gy-md-2 {
-		--bs-gutter-y: 0.5rem;
+		--bs-gutter-y: 13.333333px;
 	}
 	.g-md-3,
 	.gx-md-3 {
-		--bs-gutter-x: 1rem;
+		--bs-gutter-x: 26.666666px;
 	}
 	.g-md-3,
 	.gy-md-3 {
-		--bs-gutter-y: 1rem;
+		--bs-gutter-y: 26.666666px;
 	}
 	.g-md-4,
 	.gx-md-4 {
-		--bs-gutter-x: 1.5rem;
+		--bs-gutter-x: 40px;
 	}
 	.g-md-4,
 	.gy-md-4 {
-		--bs-gutter-y: 1.5rem;
+		--bs-gutter-y: 40px;
 	}
 	.g-md-5,
 	.gx-md-5 {
-		--bs-gutter-x: 3rem;
+		--bs-gutter-x: 80px;
 	}
 	.g-md-5,
 	.gy-md-5 {
-		--bs-gutter-y: 3rem;
+		--bs-gutter-y: 80px;
 	}
 }
 @media (min-width: 992px) {
@@ -1343,43 +1343,43 @@ progress {
 	}
 	.g-lg-1,
 	.gx-lg-1 {
-		--bs-gutter-x: 0.25rem;
+		--bs-gutter-x: 6.666666px;
 	}
 	.g-lg-1,
 	.gy-lg-1 {
-		--bs-gutter-y: 0.25rem;
+		--bs-gutter-y: 6.666666px;
 	}
 	.g-lg-2,
 	.gx-lg-2 {
-		--bs-gutter-x: 0.5rem;
+		--bs-gutter-x: 13.333333px;
 	}
 	.g-lg-2,
 	.gy-lg-2 {
-		--bs-gutter-y: 0.5rem;
+		--bs-gutter-y: 13.333333px;
 	}
 	.g-lg-3,
 	.gx-lg-3 {
-		--bs-gutter-x: 1rem;
+		--bs-gutter-x: 26.666666px;
 	}
 	.g-lg-3,
 	.gy-lg-3 {
-		--bs-gutter-y: 1rem;
+		--bs-gutter-y: 26.666666px;
 	}
 	.g-lg-4,
 	.gx-lg-4 {
-		--bs-gutter-x: 1.5rem;
+		--bs-gutter-x: 40px;
 	}
 	.g-lg-4,
 	.gy-lg-4 {
-		--bs-gutter-y: 1.5rem;
+		--bs-gutter-y: 40px;
 	}
 	.g-lg-5,
 	.gx-lg-5 {
-		--bs-gutter-x: 3rem;
+		--bs-gutter-x: 80px;
 	}
 	.g-lg-5,
 	.gy-lg-5 {
-		--bs-gutter-y: 3rem;
+		--bs-gutter-y: 80px;
 	}
 }
 @media (min-width: 1200px) {
@@ -1512,43 +1512,43 @@ progress {
 	}
 	.g-xl-1,
 	.gx-xl-1 {
-		--bs-gutter-x: 0.25rem;
+		--bs-gutter-x: 6.666666px;
 	}
 	.g-xl-1,
 	.gy-xl-1 {
-		--bs-gutter-y: 0.25rem;
+		--bs-gutter-y: 6.666666px;
 	}
 	.g-xl-2,
 	.gx-xl-2 {
-		--bs-gutter-x: 0.5rem;
+		--bs-gutter-x: 13.333333px;
 	}
 	.g-xl-2,
 	.gy-xl-2 {
-		--bs-gutter-y: 0.5rem;
+		--bs-gutter-y: 13.333333px;
 	}
 	.g-xl-3,
 	.gx-xl-3 {
-		--bs-gutter-x: 1rem;
+		--bs-gutter-x: 26.666666px;
 	}
 	.g-xl-3,
 	.gy-xl-3 {
-		--bs-gutter-y: 1rem;
+		--bs-gutter-y: 26.666666px;
 	}
 	.g-xl-4,
 	.gx-xl-4 {
-		--bs-gutter-x: 1.5rem;
+		--bs-gutter-x: 40px;
 	}
 	.g-xl-4,
 	.gy-xl-4 {
-		--bs-gutter-y: 1.5rem;
+		--bs-gutter-y: 40px;
 	}
 	.g-xl-5,
 	.gx-xl-5 {
-		--bs-gutter-x: 3rem;
+		--bs-gutter-x: 80px;
 	}
 	.g-xl-5,
 	.gy-xl-5 {
-		--bs-gutter-y: 3rem;
+		--bs-gutter-y: 80px;
 	}
 }
 @media (min-width: 1400px) {
@@ -1681,43 +1681,43 @@ progress {
 	}
 	.g-xxl-1,
 	.gx-xxl-1 {
-		--bs-gutter-x: 0.25rem;
+		--bs-gutter-x: 6.666666px;
 	}
 	.g-xxl-1,
 	.gy-xxl-1 {
-		--bs-gutter-y: 0.25rem;
+		--bs-gutter-y: 6.666666px;
 	}
 	.g-xxl-2,
 	.gx-xxl-2 {
-		--bs-gutter-x: 0.5rem;
+		--bs-gutter-x: 13.333333px;
 	}
 	.g-xxl-2,
 	.gy-xxl-2 {
-		--bs-gutter-y: 0.5rem;
+		--bs-gutter-y: 13.333333px;
 	}
 	.g-xxl-3,
 	.gx-xxl-3 {
-		--bs-gutter-x: 1rem;
+		--bs-gutter-x: 26.666666px;
 	}
 	.g-xxl-3,
 	.gy-xxl-3 {
-		--bs-gutter-y: 1rem;
+		--bs-gutter-y: 26.666666px;
 	}
 	.g-xxl-4,
 	.gx-xxl-4 {
-		--bs-gutter-x: 1.5rem;
+		--bs-gutter-x: 40px;
 	}
 	.g-xxl-4,
 	.gy-xxl-4 {
-		--bs-gutter-y: 1.5rem;
+		--bs-gutter-y: 40px;
 	}
 	.g-xxl-5,
 	.gx-xxl-5 {
-		--bs-gutter-x: 3rem;
+		--bs-gutter-x: 80px;
 	}
 	.g-xxl-5,
 	.gy-xxl-5 {
-		--bs-gutter-y: 3rem;
+		--bs-gutter-y: 80px;
 	}
 }
 .table {
@@ -14801,7 +14801,7 @@ input:focus {
 }
 
 .btn.btn-outline-primary:hover {
-    background-color: rgba(48, 142, 135, 0.9);
+    background-color: var(--theme-default);
 }
 .btn.btn-outline-secondary:hover {
     background-color: rgba(243, 145, 89, 0.9);
@@ -27454,7 +27454,7 @@ input::-webkit-inner-spin-button {
     position: fixed;
     top: 0;
     left: 0;
-    width: 253px;
+    width: 282px;
     height: 100vh;
     box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1);
     z-index: 3;
@@ -27892,11 +27892,11 @@ input::-webkit-inner-spin-button {
     box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.05);
     background-color: var(--theme-default);
 }
-@media (max-width: 1199.98px) {
+/* @media (max-width: 1199.98px) {
     .page-sidebar .logo-wrapper {
         padding: 19px 24px;
     }
-}
+} */
 .page-sidebar .logo-wrapper .close-btn.sidebar-close {
     display: none;
 }
@@ -28497,18 +28497,18 @@ input::-webkit-inner-spin-button {
 .page-wrapper .page-body-wrapper {
     background-color: var(--body-color);
 }
-@media (min-width: 1200px) {
+/* @media (min-width: 1200px) { */
     .page-wrapper .page-body-wrapper {
-        margin-left: 253px;
+        margin-left: 282px;
         transition: 0.5s all;
     }
-}
-@media (min-width: 1200px) {
+/* } */
+/* @media (min-width: 1200px) { */
     [dir="rtl"] .page-wrapper .page-body-wrapper {
         margin-left: unset;
-        margin-right: 253px;
+        margin-right: 282px;
     }
-}
+/* } */
 .page-wrapper .page-body-wrapper .page-body {
     min-height: calc(100vh - 136px);
     padding: 0 15px 0 15px;
@@ -28546,20 +28546,25 @@ input::-webkit-inner-spin-button {
 }
 
 .page-header .logo-wrapper {
-    width: 253px;
+    width: 282px;
     justify-content: space-between;
-    padding: 15px 16px;
+    padding: 18.5px 16px;
     background-color: var(--theme-default);
 }
-@media (max-width: 1199px) {
+
+/* @media (max-width: 1199px) {
     .page-header .logo-wrapper {
         background-color: unset;
     }
-}
+} */
 @media (max-width: 991.98px) {
     .page-header .logo-wrapper {
         width: 230px;
     }
+
+	.page-sidebar {
+        width: 230px;
+	}
 }
 @media (max-width: 767.98px) {
     .page-header .logo-wrapper {
@@ -28569,6 +28574,10 @@ input::-webkit-inner-spin-button {
     [dir="rtl"] .page-header .logo-wrapper {
         padding: 14px 14px 14px 0;
     }
+
+	.page-sidebar {
+        width: 170px;
+	}
 }
 @media (max-width: 480px) and (min-width: 420px) {
     .page-header .logo-wrapper {
@@ -28883,7 +28892,7 @@ header a:hover .svg-color {
 header .page-main-header {
     display: flex;
     justify-content: space-between;
-    padding: 15px 30px;
+    padding: 10px 30px;
     align-items: center;
     box-shadow: 0px 4px 34px rgba(10, 75, 85, 0.05);
 }
@@ -30213,7 +30222,7 @@ footer p .footer-icon {
         overflow: scroll;
         max-height: calc(100vh - 220px);
         padding-bottom: 30px;
-        margin-left: 253px;
+        margin-left: 282px;
     }
     .box-layout .page-wrapper.compact-wrapper footer,
     .box-layout.page-wrapper.compact-wrapper footer {

File diff suppressed because it is too large
+ 0 - 0
public/assets/css/vendors/datatables.css


+ 3 - 0
public/assets/images/pagination/first.svg

@@ -0,0 +1,3 @@
+<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+	<path d="M0.5 0.5H2V9.5H0.5V0.5ZM3.125 5L9.5 9.5V0.5L3.125 5Z" fill="black" />
+</svg>

+ 3 - 0
public/assets/images/pagination/last.svg

@@ -0,0 +1,3 @@
+<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+	<path d="M0.5 9.5L6.875 5L0.5 0.5V9.5ZM8 0.5V9.5H9.5V0.5H8Z" fill="black" />
+</svg>

+ 3 - 0
public/assets/images/pagination/next.svg

@@ -0,0 +1,3 @@
+<svg width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+	<path d="M1.27869 0.5L0.221191 1.5575L3.65619 5L0.221191 8.4425L1.27869 9.5L5.77869 5L1.27869 0.5Z" fill="black" />
+</svg>

+ 3 - 0
public/assets/images/pagination/previous.svg

@@ -0,0 +1,3 @@
+<svg width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M5.77869 1.5575L4.72119 0.5L0.221191 5L4.72119 9.5L5.77869 8.4425L2.34369 5L5.77869 1.5575Z" fill="black" />
+</svg>

BIN
public/assets/images/wmc_logo.png


+ 8 - 0
public/assets/js/datatables/datatables.js

@@ -0,0 +1,8 @@
+function loadDatatables(table_id, options) {
+    setTimeout(() => {
+        if ($.fn.DataTable.isDataTable(table_id)) {
+            $(table_id).DataTable().destroy();
+        }
+        new DataTable(table_id, options);
+    }, 200);
+}

File diff suppressed because it is too large
+ 3 - 0
public/assets/js/datatables/jquery.dataTables.min.js


+ 72 - 68
public/assets/js/sidebar.js

@@ -76,82 +76,86 @@ sidebarListItems.forEach((item) => {
 
 // Sidebar toggle js
     const sidebarToggle = document.querySelector(".toggle-sidebar");
-    sidebarToggle.addEventListener("click", function () {
-      wrapper.classList.toggle("sidebar-open");
-      const wrapperClose = wrapper.classList.contains("sidebar-open");
-    });
+    if (sidebarToggle) {
+      sidebarToggle.addEventListener("click", function () {
+        wrapper.classList.toggle("sidebar-open");
+        const wrapperClose = wrapper.classList.contains("sidebar-open");
+      });
+    }
 })();
 // Sidebar pin-drops
 const pinTitle = document.querySelector(".pin-title");
-let pinIcon = document.querySelectorAll(".sidebar-list .fa-thumbtack");
-function togglePinnedName() {
-  if (document.getElementsByClassName("pined").length) {
-    if (!pinTitle.classList.contains("show")) pinTitle.classList.add("show");
-  } else {
-    pinTitle.classList.remove("show");
-  }
-}
-pinIcon.forEach((item, index) => {
-  var linkName = item.parentNode.querySelector("h6").innerHTML;
-  var InitialLocalStorage = JSON.parse(localStorage.getItem("pins") || false);
-  if (InitialLocalStorage && InitialLocalStorage.includes(linkName)) {
-    item.parentNode.classList.add("pined");
-  }
-  item.addEventListener("click", (event) => {
-    var localStoragePins = JSON.parse(localStorage.getItem("pins") || false);
-    item.parentNode.classList.toggle("pined");
-    if (localStoragePins?.length) {
-      if (item.parentNode.classList.contains("pined")) {
-        !localStoragePins?.includes(linkName) &&
-          (localStoragePins = [...localStoragePins, linkName]);
-      } else {
-        localStoragePins?.includes(linkName) &&
-          localStoragePins.splice(localStoragePins.indexOf(linkName), 1);
-      }
-      localStorage.setItem("pins", JSON.stringify(localStoragePins));
+if (pinTitle) {
+  let pinIcon = document.querySelectorAll(".sidebar-list .fa-thumbtack");
+  function togglePinnedName() {
+    if (document.getElementsByClassName("pined").length) {
+      if (!pinTitle.classList.contains("show")) pinTitle.classList.add("show");
     } else {
-      localStorage.setItem("pins", JSON.stringify([linkName]));
+      pinTitle.classList.remove("show");
     }
-    var elem = item;
-    var topPos = elem.offsetTop;
-    togglePinnedName();
-    if (item.parentElement.parentElement.classList.contains("pined")) {
-      scrollTo(
-        document.getElementsByClassName("main-sidebar")[0],
-        topPos - 30,
-        600
-      );
-    } else {
-      scrollTo(
-        document.getElementsByClassName("main-sidebar")[0],
-        elem.parentNode.offsetTop - 30,
-        600
-      );
+  }
+  pinIcon.forEach((item, index) => {
+    var linkName = item.parentNode.querySelector("h6").innerHTML;
+    var InitialLocalStorage = JSON.parse(localStorage.getItem("pins") || false);
+    if (InitialLocalStorage && InitialLocalStorage.includes(linkName)) {
+      item.parentNode.classList.add("pined");
     }
-  });
-  function scrollTo(element, to, duration) {
-    var start = element.scrollTop,
-      change = to - start,
-      currentTime = 0,
-      increment = 20;
-    var animateScroll = function () {
-      currentTime += increment;
-      var val = Math.easeInOutQuad(currentTime, start, change, duration);
-      element.scrollTop = val;
-      if (currentTime < duration) {
-        setTimeout(animateScroll, increment);
+    item.addEventListener("click", (event) => {
+      var localStoragePins = JSON.parse(localStorage.getItem("pins") || false);
+      item.parentNode.classList.toggle("pined");
+      if (localStoragePins?.length) {
+        if (item.parentNode.classList.contains("pined")) {
+          !localStoragePins?.includes(linkName) &&
+            (localStoragePins = [...localStoragePins, linkName]);
+        } else {
+          localStoragePins?.includes(linkName) &&
+            localStoragePins.splice(localStoragePins.indexOf(linkName), 1);
+        }
+        localStorage.setItem("pins", JSON.stringify(localStoragePins));
+      } else {
+        localStorage.setItem("pins", JSON.stringify([linkName]));
+      }
+      var elem = item;
+      var topPos = elem.offsetTop;
+      togglePinnedName();
+      if (item.parentElement.parentElement.classList.contains("pined")) {
+        scrollTo(
+          document.getElementsByClassName("main-sidebar")[0],
+          topPos - 30,
+          600
+        );
+      } else {
+        scrollTo(
+          document.getElementsByClassName("main-sidebar")[0],
+          elem.parentNode.offsetTop - 30,
+          600
+        );
       }
+    });
+    function scrollTo(element, to, duration) {
+      var start = element.scrollTop,
+        change = to - start,
+        currentTime = 0,
+        increment = 20;
+      var animateScroll = function () {
+        currentTime += increment;
+        var val = Math.easeInOutQuad(currentTime, start, change, duration);
+        element.scrollTop = val;
+        if (currentTime < duration) {
+          setTimeout(animateScroll, increment);
+        }
+      };
+      animateScroll();
+    }
+    Math.easeInOutQuad = function (t, b, c, d) {
+      t /= d / 2;
+      if (t < 1) return (c / 2) * t * t + b;
+      t--;
+      return (-c / 2) * (t * (t - 2) - 1) + b;
     };
-    animateScroll();
-  }
-  Math.easeInOutQuad = function (t, b, c, d) {
-    t /= d / 2;
-    if (t < 1) return (c / 2) * t * t + b;
-    t--;
-    return (-c / 2) * (t * (t - 2) - 1) + b;
-  };
-});
-togglePinnedName();
+  });
+  togglePinnedName();
+}
 // scrollTop sidebar in active link in JS
 $(document).ready(function () {
 var activeLink = $(".simplebar-wrapper .simplebar-content-wrapper a.active");

+ 31 - 0
public/assets/js/tabs.js

@@ -0,0 +1,31 @@
+document.addEventListener("DOMContentLoaded", function () {
+    let sections = document.querySelectorAll(".sections");
+
+    sections.forEach((section) => {
+        let tabs = section.querySelectorAll(".section-tab");
+        let contents = section.querySelectorAll(".section-content");
+
+        let active_tab = "";
+
+        tabs.forEach((tab) => {
+            let tab_id = tab.dataset.name;
+
+            if (tab.classList.contains("active")) {
+                active_tab = tab_id;
+            }
+
+            tab.addEventListener("click", () => {
+                if (tab_id != active_tab) {
+                    tabs.forEach((el) => {
+                        el.classList.toggle("active", el === tab);
+                    });
+
+                    contents.forEach((el) => {
+                        el.classList.toggle("active", (el.dataset.name === tab_id));
+                    });
+                }
+                active_tab = tab_id;
+            });
+        });
+    });
+});

+ 303 - 0
public/assets/localization/datatables/it-IT.json

@@ -0,0 +1,303 @@
+{
+    "aria": {
+        "paginate": {
+            "first": "Inizio",
+            "last": "Fine",
+            "next": "Successivo",
+            "previous": "Precedente"
+        }
+    },
+    "autoFill": {
+        "cancel": "Annulla",
+        "fill": "Riempi tutte le celle con <i>%d<\/i>",
+        "fillHorizontal": "Riempi celle orizzontalmente",
+        "fillVertical": "Riempi celle verticalmente",
+        "info": ""
+    },
+    "buttons": {
+        "collection": "Collezione <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
+        "colvis": "Visibilità Colonna",
+        "colvisRestore": "Ripristina visibilità",
+        "copy": "Copia",
+        "copyKeys": "Premi ctrl o u2318 + C per copiare i dati della tabella nella tua clipboard di sistema.<br \/><br \/>Per annullare, clicca questo messaggio o premi ESC.",
+        "copySuccess": {
+            "_": "Copiate %d righe nella clipboard",
+            "1": "Copiata 1 riga nella clipboard"
+        },
+        "copyTitle": "Copia nella Clipboard",
+        "createState": "Crea stato",
+        "csv": "CSV",
+        "excel": "Excel",
+        "pageLength": {
+            "_": "Mostra %d righe",
+            "-1": "Mostra tutte le righe"
+        },
+        "pdf": "PDF",
+        "print": "Stampa",
+        "removeAllStates": "Rimuovi tutti gli stati",
+        "removeState": "Rimuovi",
+        "renameState": "Rinomina",
+        "savedStates": "Salva stato",
+        "stateRestore": "Ripristina stato",
+        "updateState": "Aggiorna"
+    },
+    "columnControl": {
+        "buttons": {
+            "searchClear": "Cancella ricerca"
+        },
+        "colVis": "Visibilità colonne",
+        "colVisDropdown": "Visibilità colonne",
+        "dropdown": "Altro...",
+        "list": {
+            "all": "Seleziona tutto",
+            "empty": "Vuoto",
+            "none": "Deseleziona tutto",
+            "search": "Cerca..."
+        },
+        "orderAddAsc": "Aggiungi ordinamento crescente",
+        "orderAddDesc": "Aggiungi ordinamento decrescente",
+        "orderAsc": "Ordina in modo crescente",
+        "orderClear": "Cancella ordinamento",
+        "orderDesc": "Ordina in modo decrescente",
+        "orderRemove": "Rimuovi dall'ordinamento",
+        "reorder": "Riordina colonne",
+        "reorderLeft": "Sposta la colonna a sinistra",
+        "reorderRight": "Sposta la colonna a destra",
+        "search": {
+            "datetime": {
+                "empty": "Vuoto",
+                "equal": "Uguale a",
+                "greater": "Dopo il",
+                "less": "Prima del",
+                "notEmpty": "Non vuoto",
+                "notEqual": "Diverso da"
+            },
+            "number": {
+                "empty": "Vuoto",
+                "equal": "Uguale a",
+                "greater": "Maggiore di",
+                "greaterOrEqual": "Maggiore o uguale a",
+                "less": "Minore di",
+                "lessOrEqual": "Minore o uguale a",
+                "notEmpty": "Non vuoto",
+                "notEqual": "Diverso da"
+            },
+            "text": {
+                "contains": "Contiene",
+                "empty": "Vuoto",
+                "ends": "Termina con",
+                "equal": "Uguale a",
+                "notContains": "Non contiene",
+                "notEmpty": "Non vuoto",
+                "notEqual": "Diverso da",
+                "starts": "Inizia con"
+            }
+        },
+        "searchClear": "Cancella ricerca",
+        "searchDropdown": "Cerca"
+    },
+    "datetime": {
+        "amPm": {
+            "0": "am",
+            "1": "pm"
+        },
+        "hours": "ore",
+        "minutes": "minuti",
+        "months": {
+            "0": "Gennaio",
+            "1": "Febbraio",
+            "10": "Novembre",
+            "11": "Dicembre",
+            "2": "Marzo",
+            "3": "Aprile",
+            "4": "Maggio",
+            "5": "Giugno",
+            "6": "Luglio",
+            "7": "Agosto",
+            "8": "Settembre",
+            "9": "Ottobre"
+        },
+        "next": "successivo",
+        "previous": "precedente",
+        "seconds": "secondi",
+        "unknown": "sconosciuto",
+        "weekdays": {
+            "0": "Dom",
+            "1": "Lun",
+            "2": "Mar",
+            "3": "Mer",
+            "4": "Gio",
+            "5": "Ven",
+            "6": "Sab"
+        }
+    },
+    "decimal": "",
+    "editor": {
+        "close": "Chiudi",
+        "create": {
+            "button": "Nuovo",
+            "submit": "Aggiungi",
+            "title": "Aggiungi nuovo elemento"
+        },
+        "edit": {
+            "button": "Modifica",
+            "submit": "Modifica",
+            "title": "Modifica elemento"
+        },
+        "error": {
+            "system": "Errore del sistema."
+        },
+        "multi": {
+            "info": "Gli elementi selezionati contengono valori diversi. Per modificare e impostare tutti gli elementi per questa selezione allo stesso valore, premi o clicca qui, altrimenti ogni cella manterrà il suo valore attuale.",
+            "noMulti": "Questa selezione può essere modificata individualmente, ma non se fa parte di un gruppo.",
+            "restore": "Annulla le modifiche",
+            "title": "Valori multipli"
+        },
+        "remove": {
+            "button": "Rimuovi",
+            "confirm": {
+                "_": "Sei sicuro di voler cancellare %d righe?",
+                "1": "Sei sicuro di voler cancellare 1 riga?"
+            },
+            "submit": "Rimuovi",
+            "title": "Rimuovi"
+        }
+    },
+    "emptyTable": "Nessun dato disponibile nella tabella",
+    "info": "Risultati da _START_ a _END_ di _TOTAL_ elementi",
+    "infoEmpty": "Risultati da 0 a 0 di 0 elementi",
+    "infoFiltered": "(filtrati da _MAX_ elementi totali)",
+    "infoPostFix": "",
+    "infoThousands": ".",
+    "lengthMenu": "Mostra _MENU_",
+    "loadingRecords": "Caricamento...",
+    "processing": "Elaborazione...",
+    "search": "",
+    "searchBuilder": {
+        "add": "Aggiungi Condizione",
+        "button": {
+            "_": "Generatori di Ricerca (%d)",
+            "0": "Generatore di Ricerca"
+        },
+        "clearAll": "Pulisci Tutto",
+        "condition": "Condizione",
+        "conditions": {
+            "array": {
+                "contains": "Contiene",
+                "empty": "Vuoto",
+                "equals": "Uguale A",
+                "not": "Non",
+                "notEmpty": "Non Vuoto",
+                "without": "Senza"
+            },
+            "date": {
+                "after": "Dopo",
+                "before": "Prima",
+                "between": "Tra",
+                "empty": "Vuoto",
+                "equals": "Uguale A",
+                "not": "Non",
+                "notBetween": "Non Tra",
+                "notEmpty": "Non Vuoto"
+            },
+            "number": {
+                "between": "Tra",
+                "empty": "Vuoto",
+                "equals": "Uguale A",
+                "gt": "Maggiore Di",
+                "gte": "Maggiore O Uguale A",
+                "lt": "Minore Di",
+                "lte": "Minore O Uguale A",
+                "not": "Non",
+                "notBetween": "Non Tra",
+                "notEmpty": "Non Vuoto"
+            },
+            "string": {
+                "contains": "Contiene",
+                "empty": "Vuoto",
+                "endsWith": "Finisce Con",
+                "equals": "Uguale A",
+                "not": "Non",
+                "notContains": "Non Contiene",
+                "notEmpty": "Non Vuoto",
+                "notEndsWith": "Non Finisce Con",
+                "notStartsWith": "Non Inizia Con",
+                "startsWith": "Inizia Con"
+            }
+        },
+        "data": "Dati",
+        "deleteTitle": "Elimina regola filtro",
+        "leftTitle": "Criterio di Riduzione Rientro",
+        "logicAnd": "E",
+        "logicOr": "O",
+        "rightTitle": "Criterio di Aumento Rientro",
+        "title": {
+            "_": "Generatori di Ricerca (%d)",
+            "0": "Generatore di Ricerca"
+        },
+        "value": "Valore"
+    },
+    "searchPanes": {
+        "clearMessage": "Pulisci Tutto",
+        "collapse": {
+            "_": "Pannelli di Ricerca (%d)",
+            "0": "Pannello di Ricerca"
+        },
+        "collapseMessage": "Espandi tutto",
+        "count": "{total}",
+        "countFiltered": "{shown} ({total})",
+        "emptyPanes": "Nessun Pannello di Ricerca",
+        "loadMessage": "Caricamento Pannello di Ricerca",
+        "showMessage": "Mostra tutto",
+        "title": "Filtri Attivi - %d"
+    },
+    "searchPlaceholder": "Cerca",
+    "select": {
+        "cells": {
+            "_": "%d celle selezionate",
+            "0": "",
+            "1": "1 cella selezionata"
+        },
+        "columns": {
+            "_": "%d colonne selezionate",
+            "0": "",
+            "1": "1 colonna selezionata"
+        },
+        "rows": {
+            "_": "%d righe selezionate",
+            "0": "",
+            "1": "1 riga selezionata"
+        }
+    },
+    "stateRestore": {
+        "creationModal": {
+            "button": "Crea",
+            "columns": {
+                "search": "Colonna Cerca",
+                "visible": "Colonna Visibilità"
+            },
+            "name": "Nome:",
+            "order": "Ordinamento",
+            "paging": "Paginazione",
+            "scroller": "Scorri posizione",
+            "search": "Ricerca",
+            "searchBuilder": "Form di Ricerca",
+            "select": "Seleziona",
+            "title": "Crea nuovo Stato",
+            "toggleLabel": "Includi:"
+        },
+        "duplicateError": "Nome stato già presente",
+        "emptyError": "Il nome è obbligatorio",
+        "emptyStates": "Non ci sono stati salvati",
+        "removeConfirm": "Sei sicuro di eliminare lo Stato %s?",
+        "removeError": "Errore durante l'eliminazione dello Stato",
+        "removeJoiner": "e",
+        "removeSubmit": "Elimina",
+        "removeTitle": "Elimina Stato",
+        "renameButton": "Rinomina",
+        "renameLabel": "Nuovo nome per %s:",
+        "renameTitle": "Rinomina Stato"
+    },
+    "thousands": ".",
+    "zeroRecords": "Nessun elemento corrispondente trovato"
+}

+ 25 - 6
resources/views/layouts/admin.blade.php

@@ -20,6 +20,8 @@
 		<link rel="stylesheet" type="text/css" href="/assets/css/fontawesome-min.css" />
 		<!-- Whether Icon css-->
 		<link rel="stylesheet" type="text/css" href="/assets/css/vendors/weather-icons/weather-icons.min.css" />
+		<!-- Datatable CSS -->
+		<link rel="stylesheet" type="text/css" href="/assets/css/vendors/datatables.css">
 		<!-- App css -->
 		<link id="color" rel="stylesheet" href="/assets/css/colors.css" media="screen" />
 		<link rel="stylesheet" href="/assets/css/style.css" />
@@ -27,23 +29,31 @@
 	</head>
 
 	<body>
-
+		@php
+			$current_route_name = Route::currentRouteName();
+		@endphp
 		<div class="page-wrapper compact-wrapper" id="pageWrapper">
 
 			<livewire:header />
 
 			<div class="page-body-wrapper">
 
-				<livewire:sidebar :current_page="'page_1'" />
+				<livewire:sidebar :current_route_name="$current_route_name" />
 
 				<div class="page-body">
 					<div class="container-fluid">
-						<div class="page-title">
-							{{-- Page title --}}
-							Dashboard
+						<div class="slot-info d-flex justify-content-between gap-4">
+							<h1 class="slot-title">{{$current_route_name}}</h1>
+							<div class="slot-breadcrumbs">
+								<a href="/dashboard"><i class="icli iconly-Home"></i></a>
+								<a href="#">Link 1</a>
+								<a href="#">Link 2</a>
+							</div>
 						</div>
 
-						{{ $slot }}
+						<div class="page-content">
+							{{ $slot }}
+						</div>
 					</div>
 				</div>
 			</div>
@@ -65,10 +75,19 @@
 		<script src="/assets/js/vendors/bootstrap/dist/js/popper.min.js" defer=""></script>
 		<!--fontawesome-->
 		<script src="/assets/js/vendors/font-awesome/fontawesome-min.js"></script>
+		<!-- datatables -->
+		<script src="/assets/js/datatables/jquery.dataTables.min.js" ></script>
+		<script src="/assets/js/datatables/datatables.js" ></script>
 		<!-- sidebar -->
 		<script src="/assets/js/sidebar.js"></script>
 		<!-- theme script -->
 		<script src="/assets/js/script.js"></script>
+		<!-- theme script -->
+		<script src="/assets/js/tabs.js"></script>
+
+		<script>
+			const DT_languageIT = '/assets/localization/datatables/it-IT.json';
+		</script>
 
 		@stack('scripts')
 	</body>

+ 198 - 11
resources/views/livewire/company.blade.php

@@ -1,12 +1,199 @@
-<div>
-    COMPANY
-    <br>
-    {{$name}}
-    <br><br>
-    <livewire:company-service :company="$current_company"/>
-    <br><br>
-    <livewire:company-rate :company="$current_company"/>
-    <br><br>
-    <livewire:company-activity :company="$current_company"/>
-    <br><br>
+<div class="sections theme-form">
+    <div class="section-tabs">
+        <span class="section-tab active" data-name="azienda">Azienda</span>
+        <span class="section-tab" data-name="servizi">Servizi</span>
+        <span class="section-tab" data-name="attività">Attività</span>
+        <span class="section-tab" data-name="tariffario">Tariffario</span>
+    </div>
+
+    <div class="section-content active" data-name="azienda">
+        <div class="row">
+            <div class="col-md-6 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="logo">Logo</label>
+                    <input class="form-control @error('logo') is-invalid @enderror" id="logo" name="logo" type="file" placeholder="Nessun file selezionato" accept="image/*" required>
+                    @error('logo')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+
+            <div class="col-md-6"></div>
+
+            <div class="col-md-6 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="name">Ragione sociale</label>
+                    <input class="form-control @error('name') is-invalid @enderror" id="name" name="name" type="text" placeholder="Inserisci" required value="{{$name}}">
+                    @error('name')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-6 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="business_name">Nome business</label>
+                    <input class="form-control @error('business_name') is-invalid @enderror" id="business_name" name="business_name" type="text" placeholder="Inserisci" required value="{{$business_name}}">
+                    @error('business_name')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="phone">Telefono</label>
+                    <input class="form-control @error('phone') is-invalid @enderror" id="phone" name="phone" type="tel" placeholder="Inserisci" required value="{{$phone}}">
+                    @error('phone')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="email">Email</label>
+                    <input class="form-control @error('email') is-invalid @enderror" id="email" name="email" type="email" placeholder="Inserisci" required value="{{$email}}">
+                    @error('email')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="pec">Pec</label>
+                    <input class="form-control @error('pec') is-invalid @enderror" id="pec" name="pec" type="text" placeholder="Inserisci" required value="{{$pec}}">
+                    @error('pec')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="costitution_date">Data costituzione</label>
+                    <input class="form-control @error('costitution_date') is-invalid @enderror" id="costitution_date" name="costitution_date" type="date" placeholder="Inserisci" required value="{{$costitution_date}}">
+                    @error('costitution_date')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="address">Indirizzo</label>
+                    <input class="form-control @error('address') is-invalid @enderror" id="address" name="address" type="text" placeholder="Inserisci" required value="{{$address}}">
+                    @error('address')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="zip">Cap</label>
+                    <input class="form-control @error('zip') is-invalid @enderror" id="zip" name="zip" type="text" placeholder="Inserisci" required value="{{$zip}}">
+                    @error('zip')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="city_id">Città</label>
+                    <select class="form-select @error('city_id') is-invalid @enderror" id="city_id" name="city_id" required>
+                        <option value="" @if (!$city_id) selected @endif disabled>Seleziona</option>
+                        {{-- @foreach ($cities as $city)
+                        <option value="{{$city->id}}" @if ($city_id==$city->id) selected @endif>{{$city->name}}</option>
+                        @endforeach --}}
+                        <option value="city_1">city_1</option>
+                    </select>
+                    @error('city_id')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="country_id">Stato</label>
+                    <select class="form-select @error('country_id') is-invalid @enderror" id="country_id" name="country_id" required>
+                        <option value="" @if (!$country_id) selected @endif disabled>Seleziona</option>
+                        {{-- @foreach ($countries as $country)
+                        <option value="{{$country->id}}" @if ($country_id==$country->id) selected @endif>{{$country->name}}</option>
+                        @endforeach --}}
+                        <option value="country_1">country_1</option>
+                    </select>
+                    @error('country_id')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+
+            <div class="col-md-12 col-xs-12 mb-4">
+                <div class="form-group has-switch">
+                    <label for="operational_headquarters">Sede operativa uguale alla sede legale</label>
+                    <label class="switch">
+                        <input class="form-control @error('operational_headquarters') is-invalid @enderror" id="operational_headquarters" name="operational_headquarters" type="checkbox" @if ($operational_headquarters) checked @endif>
+                        @error('operational_headquarters')
+                        <div class="invalid-feedback">{{ $message }}</div>
+                        @enderror
+                        <span class="switch-state bg-primary"></span>
+                    </label>
+                </div>
+            </div>
+
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="fiscal_code">Codice fiscale</label>
+                    <input class="form-control @error('fiscal_code') is-invalid @enderror" id="fiscal_code" name="fiscal_code" type="text" placeholder="Inserisci" required value="{{$fiscal_code}}">
+                    @error('fiscal_code')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="vat">Partita Iva</label>
+                    <input class="form-control @error('vat') is-invalid @enderror" id="vat" name="vat" type="text" placeholder="Inserisci" required value="{{$vat}}">
+                    @error('vat')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="sdi_code">Codice SDI</label>
+                    <input class="form-control @error('sdi_code') is-invalid @enderror" id="sdi_code" name="sdi_code" type="text" placeholder="Inserisci" required value="{{$sdi_code}}">
+                    @error('sdi_code')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+            <div class="col-md-3 col-xs-12 mb-4">
+                <div class="form-group">
+                    <label for="ateco_code">Codice ateco</label>
+                    <input class="form-control @error('ateco_code') is-invalid @enderror" id="ateco_code" name="ateco_code" type="text" placeholder="Inserisci" required value="{{$ateco_code}}">
+                    @error('ateco_code')
+                    <div class="invalid-feedback">{{ $message }}</div>
+                    @enderror
+                </div>
+            </div>
+
+            <div class="col-md-12 mb-4"></div>
+
+            <div class="col-md-12 col-xs-12 mb-4 mt-4">
+                <div class="form-group">
+                    <button class="btn btn-primary text-uppercase btn-medium" type="button" wire:click="save()">Salva</button>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="section-content" data-name="servizi">
+        <livewire:company-service :company="$current_company" />
+    </div>
+
+    <div class="section-content" data-name="attività">
+        <livewire:company-rate :company="$current_company" />
+    </div>
+
+    <div class="section-content" data-name="tariffario">
+        <livewire:company-activity :company="$current_company" />
+    </div>
 </div>

+ 102 - 27
resources/views/livewire/company_activity.blade.php

@@ -1,34 +1,109 @@
-<div>
-    COMPANY activity
-    <br>    
+<div class="row">
     @if($is_edit)
-        Nome<br>
-        <input type="text" wire:model="name"><br>
-        @error('name')
-            {{ $message }}
-        @enderror
-        <br>
-        Descrizione<br>
-        <input type="text" wire:model="description"><br><br>
-        Enable<br>
-        <input type="checkbox" wire:model="enabled"><br><br>
-        <a wire:click="save()">Salva</a>
-        <a wire:click="cancel()">Annulla</a>
+    <div class="col-md-6 col-xs-12 mb-4">
+        <div class="form-group">
+            <label for="name">Nome</label>
+            <input class="form-control @error('name') is-invalid @enderror" id="name" name="name" type="text" placeholder="Inserisci" wire:model="name" required>
+            @error('name')
+            <div class="invalid-feedback">{{ $message }}</div>
+            @enderror
+        </div>
+    </div>
+
+    <div class="col-md-6 col-xs-12 mb-4">
+        <div class="form-group">
+            <label for="description">Descrizione</label>
+            <input class="form-control @error('description') is-invalid @enderror" id="description" name="description" type="text" placeholder="Inserisci" wire:model="description">
+            @error('description')
+            <div class="invalid-feedback">{{ $message }}</div>
+            @enderror
+        </div>
+    </div>
+
+    <div class="col-md-12 col-xs-12 mb-4">
+        <div class="form-group has-switch">
+            <label for="enabled">Abilitato</label>
+            <label class="switch">
+                <input class="form-control @error('enabled') is-invalid @enderror" id="enabled" name="enabled" type="checkbox"  wire:model="enabled" @if ($enabled) checked @endif>
+                @error('enabled')
+                <div class="invalid-feedback">{{ $message }}</div>
+                @enderror
+                <span class="switch-state bg-primary"></span>
+            </label>
+        </div>
+    </div>
+
+    <div class="col-md-12 mb-4"></div>
+
+    <div class="col-auto mb-4">
+        <div class="form-group">
+            <button class="btn btn-outline-primary text-uppercase btn-medium" type="button" wire:click="cancel()">Annulla</button>
+        </div>
+    </div>
+    <div class="col-auto mb-4">
+        <div class="form-group">
+            <button class="btn btn-primary text-uppercase btn-medium" type="button" wire:click="save()">Salva</button>
+        </div>
+    </div>
+
+
     @else
-        <table border="1">
-            <tr>
-                <td>Nome</td>
-                <td>
-
-                </td>
-            </tr>
-            @foreach($company_activities as $c)
+
+    <div class="col-md-12 col-xs-12">
+        <div class="form-group text-end">
+            <button class="btn btn-primary text-uppercase btn-medium" type="button" wire:click="add()">Aggiungi</button>
+        </div>
+    </div>
+    <div class="col-md-12 col-xs-12">
+        <table class="dataTable display" id="company-activities">
+            <thead>
+                <tr>
+                    <th>Nome</th>
+                    <th>Descrizione</th>
+                    <th class="no-sort text-center dt-actions-th">Azioni</th>
+                </tr>
+            </thead>
+            <tbody>
+                @foreach($company_activities as $c)
                 <tr>
                     <td>{{$c->name}}</td>
-                    <td><a wire:click="edit({{$c->id}})">Modifica</a></td>
+                    <td>{{$c->description}}</td>
+                    <td class="text-center dt-actions">
+                        <a class="dt-action" wire:click="edit({{$c->id}})"><i class="icli iconly-Edit-Square"></i></a>
+                        <a class="dt-action" {{--wire:click="delete({{$c->id}})" --}}><i class="icli iconly-Delete"></i></a>
+                    </td>
                 </tr>
-            @endforeach
+                @endforeach
+            </tbody>
         </table>
-        <a wire:click="add()">Aggiungi</a>
+    </div>
+
     @endif
-</div>
+</div>
+
+@push('scripts')
+<script>
+    document.addEventListener("DOMContentLoaded", () => {
+        let table_id = "#company-activities";
+        let options = {
+                paging: true,
+                ordering: true,
+                columnDefs: [
+                    {
+                        targets: 'no-sort',
+                        orderable: false,
+                    }
+                ],
+                language: {
+                    url: DT_languageIT,
+                },
+            };
+        Livewire.on('update', () => {
+            setTimeout(() => {
+                loadDatatables("#company-activities", options);
+            }, 10);
+        });
+        loadDatatables("#company-activities", options);
+    });
+</script>
+@endpush

+ 77 - 4
resources/views/livewire/company_rate.blade.php

@@ -1,4 +1,77 @@
-<div>
-    COMPANY rate
-    <br>    
-</div>
+<div class="row">
+    {{-- @if($is_edit)
+    <div class="col-md-12 mb-4"></div>
+
+    <div class="col-auto mb-4">
+        <div class="form-group">
+            <button class="btn btn-outline-primary text-uppercase btn-medium" type="button" wire:click="cancel()">Annulla</button>
+        </div>
+    </div>
+    <div class="col-auto mb-4">
+        <div class="form-group">
+            <button class="btn btn-primary text-uppercase btn-medium" type="button" wire:click="save()">Salva</button>
+        </div>
+    </div>
+
+    @else --}}
+
+    <div class="col-md-12 col-xs-12">
+        <div class="form-group text-end">
+            <button class="btn btn-primary text-uppercase btn-medium" type="button" wire:click="add()">Aggiungi</button>
+        </div>
+    </div>
+    <div class="col-md-12 col-xs-12">
+        <table class="dataTable display" id="company-rates">
+            <thead>
+                <tr>
+                    <th>Gruppo</th>
+                    <th>Tariffa</th>
+                    <th>Tipo</th>
+                    <th>Descrizione</th>
+                    <th class="no-sort text-center dt-actions-th">Azioni</th>
+                </tr>
+            </thead>
+            <tbody>
+                {{-- @foreach($company_rates as $c)
+                <tr>
+                    <td>{{$c->name}}</td>
+                    <td>{{$c->description}}</td>
+                    <td class="text-center dt-actions">
+                        <a class="dt-action" wire:click="edit({{$c->id}})"><i class="icli iconly-Edit-Square"></i></a>
+                        <a class="dt-action" {{--wire:click="delete({{$c->id}})" --/}}><i class="icli iconly-Delete"></i></a>
+                    </td>
+                </tr>
+                @endforeach --}}
+            </tbody>
+        </table>
+    </div>
+
+    {{-- @endif --}}
+</div>
+
+@push('scripts')
+<script>
+    document.addEventListener("DOMContentLoaded", () => {
+        let table_id = "#company-rates";
+        let options = {
+                paging: true,
+                ordering: true,
+                columnDefs: [
+                    {
+                        targets: 'no-sort',
+                        orderable: false,
+                    }
+                ],
+                language: {
+                    url: DT_languageIT,
+                },
+            };
+        Livewire.on('update', () => {
+            setTimeout(() => {
+                loadDatatables("#company-rates", options);
+            }, 10);
+        });
+        loadDatatables("#company-rates", options);
+    });
+</script>
+@endpush

+ 76 - 4
resources/views/livewire/company_service.blade.php

@@ -1,4 +1,76 @@
-<div>
-    COMPANY service
-    <br>    
-</div>
+<div class="row">
+    {{-- @if($is_edit)
+    <div class="col-md-12 mb-4"></div>
+
+    <div class="col-auto mb-4">
+        <div class="form-group">
+            <button class="btn btn-outline-primary text-uppercase btn-medium" type="button" wire:click="cancel()">Annulla</button>
+        </div>
+    </div>
+    <div class="col-auto mb-4">
+        <div class="form-group">
+            <button class="btn btn-primary text-uppercase btn-medium" type="button" wire:click="save()">Salva</button>
+        </div>
+    </div>
+
+    @else --}}
+
+    <div class="col-md-12 col-xs-12">
+        <div class="form-group text-end">
+            <button class="btn btn-primary text-uppercase btn-medium" type="button" wire:click="add()">Aggiungi</button>
+        </div>
+    </div>
+    <div class="col-md-12 col-xs-12">
+        <table class="dataTable display" id="company-services">
+            <thead>
+                <tr>
+                    <th>Servizio</th>
+                    <th>Descrizione</th>
+                    <th>Referente</th>
+                    <th class="no-sort text-center dt-actions-th">Azioni</th>
+                </tr>
+            </thead>
+            <tbody>
+                {{-- @foreach($company_services as $c)
+                <tr>
+                    <td>{{$c->name}}</td>
+                    <td>{{$c->description}}</td>
+                    <td class="text-center dt-actions">
+                        <a class="dt-action" wire:click="edit({{$c->id}})"><i class="icli iconly-Edit-Square"></i></a>
+                        <a class="dt-action" {{--wire:click="delete({{$c->id}})" --/}}><i class="icli iconly-Delete"></i></a>
+                    </td>
+                </tr>
+                @endforeach --}}
+            </tbody>
+        </table>
+    </div>
+
+    {{-- @endif --}}
+</div>
+
+@push('scripts')
+<script>
+    document.addEventListener("DOMContentLoaded", () => {
+        let table_id = "#company-services";
+        let options = {
+                paging: true,
+                ordering: true,
+                columnDefs: [
+                    {
+                        targets: 'no-sort',
+                        orderable: false,
+                    }
+                ],
+                language: {
+                    url: DT_languageIT,
+                },
+            };
+        Livewire.on('update', () => {
+            setTimeout(() => {
+                loadDatatables("#company-services", options);
+            }, 10);
+        });
+        loadDatatables("#company-services", options);
+    });
+</script>
+@endpush

+ 1 - 2
resources/views/livewire/dashboard.blade.php

@@ -1,6 +1,5 @@
 <div>
-    DASHBOARD
     <ul>
-        <li><a href="{{ route('company') }}">Company</li>
+        <li><a href="{{ route('company') }}">Company</a></li>
     </ul>
 </div>

+ 7 - 5
resources/views/livewire/header.blade.php

@@ -1,16 +1,16 @@
 <header class="page-header row">
     <div class="logo-wrapper d-flex align-items-center col-auto">
-        <a href="/dashboard">
-            <img class="d-block img-fluid" src="/assets/images/logo_white.png" alt="logo" />
+        {{-- <a href="/dashboard"> --}}
+            <img class="sidebar-logo d-block img-fluid" src="/assets/images/logo_white.png" alt="logo" />
             {{-- <img class="d-block img-fluid" src="/assets/images/logo.png" alt="logo" /> --}}
-        </a>
+        {{-- </a> --}}
         {{-- <a class="close-btn toggle-sidebar" href="javascript:void(0)">
             <i class="iconly-Arrow-Right-2 icli"></i>
         </a> --}}
     </div>
     <div class="page-main-header col">
         <div class="header-left">
-            <img src="" />
+            <img class="d-block img-fluid" src="/assets/images/wmc_logo.png" alt="WMC" style="height: 31px"/>
         </div>
         <div class="nav-right">
             <ul class="header-right">
@@ -74,7 +74,9 @@
 
                 <li class="profile-nav custom-dropdown">
                     <div class="user-wrap">
-                        <div class="user-img"><img src="../assets/images/profile.png" alt="user"></div>
+                        <div class="user-img">
+                            MF
+                        </div>
                         <div class="user-content">
                             <h6>Ava Davis</h6>
                             <p class="mb-0">Admin<i class="fa-solid fa-chevron-down"></i></p>

+ 2 - 2
resources/views/livewire/login.blade.php

@@ -8,7 +8,7 @@
                             <img class="d-block img-fluid m-auto mb-5 form-logo" src="/assets/images/logo_white.png" alt="logo" />
                             <div class="theme-form w-100" name="login">
                                 <div class="row">
-                                    <div class="col-md-12 mb-3">
+                                    <div class="col-md-12 mb-4">
                                         <div class="form-group">
                                             <label for="email">Email</label>
                                             <input class="form-control input-white @error('email') is-invalid @enderror" id="email" name="email" type="email" required="" placeholder="Inserisci" wire:model="email" />
@@ -17,7 +17,7 @@
                                             @enderror
                                         </div>
                                     </div>
-                                    <div class="col-md-12 mb-3">
+                                    <div class="col-md-12 mb-4">
                                         <div class="form-group">
                                             <label for="password">Password</label>
                                             <div class="form-input position-relative">

+ 24 - 24
resources/views/livewire/onboarding.blade.php

@@ -11,46 +11,46 @@
                                 {{-- Step 1 --}}
                                 <div class="tab">
                                     <div class="row">
-                                        <div class="col-xs-12 mb-3">
+                                        <div class="col-xs-12 mb-4">
                                             <p class="text-center">Benvenuto! Iniziamo configurando le informazioni base della tua azienda.</p>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="company">Ragione sociale</label>
                                                 <input class="form-control" id="company" name="company" type="text" placeholder="Inserisci" required>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="business">Nome business</label>
                                                 <input class="form-control" id="business" name="business" type="text" placeholder="Inserisci" required>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="sector">Settore</label>
-                                                <select class="form-select" id="sector" name="sector" type="text" required>
+                                                <select class="form-select" id="sector" name="sector" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="sector_1">sector_1</option>
                                                 </select>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="activity">Attività</label>
-                                                <select class="form-select" id="activity" name="activity" type="text" required>
+                                                <select class="form-select" id="activity" name="activity" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="activity_1">activity_1</option>
                                                 </select>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="website">Sito web</label>
                                                 <input class="form-control" id="website" name="text" type="text" placeholder="Inserisci" required>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="logo">Logo</label>
                                                 <input class="form-control" id="logo" name="logo" type="file" placeholder="Nessun file selezionato" accept="image/*" required>
@@ -63,31 +63,31 @@
                                 {{-- Step 2 --}}
                                 <div class="tab">
                                     <div class="row">
-                                        <div class="col-xs-12 mb-3">
+                                        <div class="col-xs-12 mb-4">
                                             <p class="text-center">Personalizza il calendario del timesheet in base alle tue esigenze.</p>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="calendar_type">Tipologia di calendario</label>
-                                                <select class="form-select" id="calendar_type" name="calendar_type" type="text" required>
+                                                <select class="form-select" id="calendar_type" name="calendar_type" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="sector_1">calendar_type_1</option>
                                                 </select>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="slot_interval">Intervallo slot</label>
-                                                <select class="form-select" id="slot_interval" name="slot_interval" type="text" required>
+                                                <select class="form-select" id="slot_interval" name="slot_interval" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="sector_1">slot_interval_1</option>
                                                 </select>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="start_hour">Ora inizio visualizzazione</label>
-                                                <select class="form-select" id="start_hour" name="start_hour" type="text" required>
+                                                <select class="form-select" id="start_hour" name="start_hour" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="0">0</option>
                                                     <option value="1">1</option>
@@ -116,10 +116,10 @@
                                                 </select>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="end_hour">Ora fine visualizzazione</label>
-                                                <select class="form-select" id="end_hour" name="end_hour" type="text" required>
+                                                <select class="form-select" id="end_hour" name="end_hour" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="0">0</option>
                                                     <option value="1">1</option>
@@ -163,28 +163,28 @@
                                                 <li><b>Approvazione del Project Manager</b>: devono essere approvati dal responsabile del progetto.</li>
                                             </ul>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="workflow_approval_slot">Workflow approvazione slot</label>
-                                                <select class="form-select" id="workflow_approval_slot" name="workflow_approval_slot" type="text" required>
+                                                <select class="form-select" id="workflow_approval_slot" name="workflow_approval_slot" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="sector_1">workflow_approval_slot_1</option>
                                                 </select>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="workflow_approval_expenses">Workflow approvazione spese</label>
-                                                <select class="form-select" id="workflow_approval_expenses" name="workflow_approval_expenses" type="text" required>
+                                                <select class="form-select" id="workflow_approval_expenses" name="workflow_approval_expenses" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="sector_1">workflow_approval_expenses_1</option>
                                                 </select>
                                             </div>
                                         </div>
-                                        <div class="col-md-6 col-xs-12 mb-3">
+                                        <div class="col-md-6 col-xs-12 mb-4">
                                             <div class="form-group">
                                                 <label for="workflow_approval_absence">Workflow approvazione assenze</label>
-                                                <select class="form-select" id="workflow_approval_absence" name="workflow_approval_absence" type="text" required>
+                                                <select class="form-select" id="workflow_approval_absence" name="workflow_approval_absence" required>
                                                     <option value="" selected disabled>Seleziona</option>
                                                     <option value="sector_1">workflow_approval_absence_1</option>
                                                 </select>

+ 6 - 6
resources/views/livewire/registration.blade.php

@@ -8,31 +8,31 @@
                             <img class="d-block img-fluid m-auto mb-5 form-logo" src="/assets/images/logo.png" alt="logo" />
                             <form class="theme-form w-100 flex-fill" id="registration" method="POST" action="#">
                                 <div class="row">
-                                    <div class="col-md-6 col-xs-12 mb-3">
+                                    <div class="col-md-6 col-xs-12 mb-4">
                                         <div class="form-group">
                                             <label for="firstname">Nome</label>
                                             <input class="form-control" id="firstname" name="firstname" type="text" placeholder="Inserisci" required>
                                         </div>
                                     </div>
-                                    <div class="col-md-6 col-xs-12 mb-3">
+                                    <div class="col-md-6 col-xs-12 mb-4">
                                         <div class="form-group">
                                             <label for="lastname">Cognome</label>
                                             <input class="form-control" id="lastname" name="lastname" type="text" placeholder="Inserisci" required>
                                         </div>
                                     </div>
-                                    <div class="col-md-6 col-xs-12 mb-3">
+                                    <div class="col-md-6 col-xs-12 mb-4">
                                         <div class="form-group">
                                             <label for="company">Nome azienda</label>
                                             <input class="form-control" id="company" name="company" type="text" placeholder="Inserisci" required>
                                         </div>
                                     </div>
-                                    <div class="col-md-6 col-xs-12 mb-3">
+                                    <div class="col-md-6 col-xs-12 mb-4">
                                         <div class="form-group">
                                             <label for="email">Email</label>
                                             <input class="form-control" id="email" name="email" type="email" placeholder="Inserisci" required>
                                         </div>
                                     </div>
-                                    <div class="col-md-6 col-xs-12 mb-3">
+                                    <div class="col-md-6 col-xs-12 mb-4">
                                         <div class="form-group">
                                             <label for="password">Password</label>
                                             <div class="form-input position-relative">
@@ -41,7 +41,7 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="col-md-6 col-xs-12 mb-3">
+                                    <div class="col-md-6 col-xs-12 mb-4">
                                         <div class="form-group">
                                             <label for="confirm_password">Conferma password</label>
                                             <div class="form-input position-relative">

+ 50 - 15
resources/views/livewire/sidebar.blade.php

@@ -4,39 +4,74 @@
             <div class="simplebar-wrapper">
                 <div class="simplebar-content">
                     <li class="sidebar-list">
-                        <a class="sidebar-link" href="javascript:void(0)">
+                        <a class="sidebar-link @if ($current_route_name == "dashboard") active @endif" href="{{ URL::route('dashboard') }}">
                             <i class="main-icon icli iconly-Home"></i>
-                            <span>Dashboards</span>
+                            <span>Dashboard</span>
+                        </a>
+                    </li>
+                    <li class="sidebar-list">
+                        <a class="sidebar-link" href="javascript:void(0)">
+                            <i class="main-icon icli iconly-User2"></i>
+                            <span>People</span>
                             <i class="arrow icli iconly-Arrow-Down-2"></i>
                         </a>
                         <ul class="sidebar-submenu">
-                            <li><a href="index.html" class="active">Default</a></li>
-                            <li><a href="dashboard-02.html">Ecommerce </a></li>
-                            <li><a href="dashboard-03.html">Education</a></li>
+                            <li><a href="#">Default</a></li>
+                            <li><a href="#">Ecommerce</a></li>
+                            <li><a href="#">Education</a></li>
                         </ul>
                     </li>
                     <li class="sidebar-list">
                         <a class="sidebar-link" href="javascript:void(0)">
-                            <i class="main-icon icli iconly-Home"></i>
-                            <span>Dashboards</span>
+                            <i class="main-icon icli iconly-Folder"></i>
+                            <span>Projects</span>
                             <i class="arrow icli iconly-Arrow-Down-2"></i>
                         </a>
                         <ul class="sidebar-submenu">
-                            <li><a href="index.html">Default</a></li>
-                            <li><a href="dashboard-02.html">Ecommerce </a></li>
-                            <li><a href="dashboard-03.html">Education</a></li>
+                            <li><a href="#">Default</a></li>
+                            <li><a href="#">Ecommerce</a></li>
+                            <li><a href="#">Education</a></li>
                         </ul>
                     </li>
+                    <li class="sidebar-list">
+                        <a class="sidebar-link" href="#">
+                            <i class="main-icon icli iconly-Document"></i>
+                            <span>Task</span>
+                        </a>
+                    </li>
                     <li class="sidebar-list">
                         <a class="sidebar-link" href="javascript:void(0)">
-                            <i class="main-icon icli iconly-Home"></i>
-                            <span>Dashboards</span>
+                            <i class="main-icon icli iconly-Calendar"></i>
+                            <span>Tracking</span>
+                            <i class="arrow icli iconly-Arrow-Down-2"></i>
+                        </a>
+                        <ul class="sidebar-submenu">
+                            <li><a href="#">Default</a></li>
+                            <li><a href="#">Ecommerce</a></li>
+                            <li><a href="#">Education</a></li>
+                        </ul>
+                    </li>
+                    <li class="sidebar-list">
+                        <a class="sidebar-link" href="javascript:void(0)">
+                            <i class="main-icon icli iconly-User2"></i>
+                            <span>Finance</span>
+                            <i class="arrow icli iconly-Arrow-Down-2"></i>
+                        </a>
+                        <ul class="sidebar-submenu">
+                            <li><a href="#">Default</a></li>
+                            <li><a href="#">Ecommerce</a></li>
+                            <li><a href="#">Education</a></li>
+                        </ul>
+                    </li>
+                    <li class="sidebar-list">
+                        <a class="sidebar-link" href="javascript:void(0)">
+                            <i class="main-icon icli iconly-Setting"></i>
+                            <span>Settings</span>
                             <i class="arrow icli iconly-Arrow-Down-2"></i>
                         </a>
                         <ul class="sidebar-submenu">
-                            <li><a href="index.html">Default</a></li>
-                            <li><a href="dashboard-02.html">Ecommerce </a></li>
-                            <li><a href="dashboard-03.html">Education</a></li>
+                            <li><a href="{{ URL::route('company') }}" @if ($current_route_name == "company") class="active" @endif>Azienda</a></li>
+                            <li><a href="#">Configurazioni</a></li>
                         </ul>
                     </li>
                 </div>

Some files were not shown because too many files changed in this diff