瀏覽代碼

courts - creato controller + aggiunto a settings

ferrari 3 周之前
父節點
當前提交
b97292e2a4
共有 4 個文件被更改,包括 167 次插入18 次删除
  1. 132 0
      app/Http/Livewire/Court.php
  2. 21 12
      resources/views/livewire/court.blade.php
  3. 13 6
      resources/views/livewire/settings.blade.php
  4. 1 0
      routes/web.php

+ 132 - 0
app/Http/Livewire/Court.php

@@ -0,0 +1,132 @@
+<?php
+
+namespace App\Http\Livewire;
+use Illuminate\Support\Facades\Auth;
+use App\Http\Middleware\TenantMiddleware;
+use Livewire\Component;
+
+class Court extends Component
+{
+    public $records, $name, $enabled, $dataId, $update = false, $add = false;
+
+    protected $rules = [
+        'name' => 'required'
+    ];
+
+    protected $messages = [
+        'name.required' => 'Il nome è obbligatorio'
+    ];
+    public function boot()
+    {
+        app(TenantMiddleware::class)->setupTenantConnection();
+    }
+
+    public function mount(){
+
+        if(Auth::user()->level != env('LEVEL_ADMIN', 0))
+            return redirect()->to('/dashboard');
+
+    }
+
+    public $sortField ='name';
+    public $sortAsc = true;
+
+    public function sortBy($field)
+    {
+        if($this->sortField === $field)
+        {
+            $this->sortAsc = ! $this->sortAsc;
+        } else {
+            $this->sortAsc = true;
+        }
+
+        $this->sortField = $field;
+    }
+
+    public function resetFields(){
+        $this->name = '';
+        $this->enabled = true;
+        $this->emit('load-data-table');
+    }
+
+    public function render()
+    {
+        $this->records = \App\Models\Court::select('id', 'name', 'enabled')->get();
+        return view('livewire.court');
+    }
+
+    public function add()
+    {
+        $this->resetFields();
+        $this->add = true;
+        $this->update = false;
+    }
+
+    public function store()
+    {
+        $this->validate();
+        try {
+            \App\Models\Court::create([
+                'name' => $this->name,
+                'enabled' => $this->enabled
+            ]);
+            session()->flash('success','Dato creato');
+            $this->resetFields();
+            $this->add = false;
+        } catch (\Exception $ex) {
+            session()->flash('error','Errore (' . $ex->getMessage() . ')');
+        }
+    }
+
+    public function edit($id){
+        try {
+            $court = \App\Models\Court::findOrFail($id);
+            if( !$court) {
+                session()->flash('error','Dato non trovato');
+            } else {
+                $this->name = $court->name;
+                $this->enabled = $court->enabled;
+                $this->dataId = $court->id;
+                $this->update = true;
+                $this->add = false;
+            }
+        } catch (\Exception $ex) {
+            session()->flash('error','Errore (' . $ex->getMessage() . ')');
+        }
+    }
+
+    public function update()
+    {
+        $this->validate();
+        try {
+            \App\Models\Court::whereId($this->dataId)->update([
+                'name' => $this->name,
+                'enabled' => $this->enabled
+            ]);
+            session()->flash('success','Dato aggiornato');
+            $this->resetFields();
+            $this->update = false;
+        } catch (\Exception $ex) {
+            session()->flash('error','Errore (' . $ex->getMessage() . ')');
+        }
+    }
+
+    public function cancel()
+    {
+        $this->add = false;
+        $this->update = false;
+        $this->resetFields();
+    }
+
+    public function delete($id)
+    {
+        try{
+            \App\Models\CourseLevel::find($id)->delete();
+            session()->flash('success',"Dato eliminato");
+            return redirect(request()->header('Referer'));
+            //return redirect()->to(\Illuminate\Http\Request::url());
+        }catch(\Exception $e){
+            session()->flash('error','Errore (' . $e->getMessage() . ')');
+        }
+    }
+}

+ 21 - 12
resources/views/livewire/court.blade.php

@@ -93,9 +93,10 @@
 
     @else
 
+        <a class="btn--ui lightGrey" href="/courts"><i class="fa-solid fa-arrow-left"></i></a><br><br>
+
         <div class="container">
 
-            <a class="btn--ui lightGrey" href="/banks"><i class="fa-solid fa-arrow-left"></i></a><br><br>
 
             @if (session()->has('error'))
                 <div class="alert alert-danger" role="alert">
@@ -168,6 +169,9 @@
         });
 
         function loadDataTable(){
+            let date = new Date();
+            let date_export = `${date.getFullYear()}${date.getMonth()}${date.getDate()}_`;
+
             if ( $.fn.DataTable.isDataTable('#tablesaw-350') ) {
                 $('#tablesaw-350').DataTable().destroy();
             }
@@ -179,37 +183,42 @@
                     topStart : null,
                     topEnd : null,
                     top1A: {
-                        buttons: [
-                            {
-                                extend: 'collection',
-                                text: 'ESPORTA',
+                        // buttons: [
+                        //     {
+                        //         extend: 'collection',
+                        //         text: 'ESPORTA',
                                 buttons: [
                                     {
                                     extend: 'excelHtml5',
-                                        title: 'Campi',
+                                        text: '<i class="fa-solid fa-file-excel"></i>',
+                                        action: newexportaction,
+                                        title: date_export + 'Campi',
                                         exportOptions: {
                                             columns: ":not(':last')"
                                         }
                                     },
                                     {
                                         extend: 'pdfHtml5',
-                                        title: 'Campi',
+                                        text: '<i class="fa-solid fa-file-pdf"></i>',
+                                        action: newexportaction,
+                                        title: date_export + 'Campi',
                                         exportOptions: {
                                             columns: ":not(':last')"
                                         }
                                     },
                                     {
                                         extend: 'print',
-                                        text: 'Stampa',
-                                        title: 'Campi',
+                                        text: '<i class="fa-solid fa-print"></i>',
+                                        action: newexportaction,
+                                        title: date_export + 'Campi',
                                         exportOptions: {
                                             columns: ":not(':last')"
                                         }
                                     }
                                 ],
-                                dropup: true
-                            }
-                        ]
+                        //         dropup: true
+                        //     }
+                        // ]
                     },
                     top1B : {
                         pageLength: {

+ 13 - 6
resources/views/livewire/settings.blade.php

@@ -47,23 +47,23 @@
 
         @if($type == 'corsi')
             <div id="corsi">
-                <a href="/course_subscriptions">
+                <a href="/subscriptions">
                     <div class="row">
-                        <div class="col-md-11 p-2"><h5>Frequenza di pagamenti</h5></div>
+                        <div class="col-md-11 p-2"><h5>Abbonamenti</h5></div>
                         <div class="col-md-1 p-2"><i class="fa-solid fa-chevron-right"></i></div>
                     </div>
                 </a>
                 <hr size="1">
-                <a href="/courses">
+                <a href="/courts">
                     <div class="row">
-                        <div class="col-md-11 p-2"><h5>Corsi</h5></div>
+                        <div class="col-md-11 p-2"><h5>Campi/Sale</h5></div>
                         <div class="col-md-1 p-2"><i class="fa-solid fa-chevron-right"></i></div>
                     </div>
                 </a>
                 <hr size="1">
-                <a href="/subscriptions">
+                <a href="/courses">
                     <div class="row">
-                        <div class="col-md-11 p-2"><h5>Abbonamenti</h5></div>
+                        <div class="col-md-11 p-2"><h5>Corsi</h5></div>
                         <div class="col-md-1 p-2"><i class="fa-solid fa-chevron-right"></i></div>
                     </div>
                 </a>
@@ -82,6 +82,13 @@
                     </div>
                 </a>
                 <hr size="1">
+                <a href="/course_subscriptions">
+                    <div class="row">
+                        <div class="col-md-11 p-2"><h5>Frequenza di pagamenti</h5></div>
+                        <div class="col-md-1 p-2"><i class="fa-solid fa-chevron-right"></i></div>
+                    </div>
+                </a>
+                <hr size="1">
                 <a href="/course_levels">
                     <div class="row">
                         <div class="col-md-11 p-2"><h5>Livelli</h5></div>

+ 1 - 0
routes/web.php

@@ -133,6 +133,7 @@ Route::group(['middleware' => 'tenant'], function () {
     Route::get('/financial_movements', \App\Http\Livewire\FinancialMovements::class);
 
     Route::get('/motivations', \App\Http\Livewire\Motivation::class);
+    Route::get('/courts', \App\Http\Livewire\Court::class);
     Route::get('/calendar', \App\Http\Livewire\Calendar::class);
     Route::get('/calendar_settings', \App\Http\Livewire\CalendarSettings::class);
     Route::get('/presences', \App\Http\Livewire\Presence::class);