Browse Source

entrate - controllo non bloccante nome/cognome utente

ferrari 1 month ago
parent
commit
9b575f8182
2 changed files with 45 additions and 3 deletions
  1. 37 0
      app/Http/Livewire/RecordIN.php
  2. 8 3
      resources/views/livewire/records_in.blade.php

+ 37 - 0
app/Http/Livewire/RecordIN.php

@@ -103,6 +103,7 @@ class RecordIN extends Component
     public $newMemberToComplete = false;
     public $newMemberFiscalCode = '';
     public $newMemberFiscalCodeExist = false;
+    public $newMemberExists = false;
 
     public $causals = array();
     public $courses = array();
@@ -293,6 +294,7 @@ class RecordIN extends Component
         $this->newMemberToComplete = false;
         $this->newMemberFiscalCode = '';
         $this->newMemberFiscalCodeExist = false;
+        $this->newMemberExists = false;
         $this->currentReceip = null;
         $this->parent = '';
         $this->courseId = 0;
@@ -589,6 +591,8 @@ class RecordIN extends Component
             }
         }
         $this->first = false;
+
+        $this->newMemberExists = false;
     }
 
     public function search()
@@ -1646,4 +1650,37 @@ class RecordIN extends Component
         $m = $this->rows[$idx]["when"][$xxx]["month"];
         $this->rows[$idx]["when"][$xxx]["year"] = $m < env('FISCAL_YEAR_MONTH_FROM', 1) ? (date("Y") + 1) : date("Y");
     }
+
+    public function updatedNewMemberFirstName()
+    {
+        $this->checkUserExists();
+    }
+
+    public function updatedNewMemberLastName()
+    {
+        $this->checkUserExists();
+    }
+
+    private function checkUserExists(): void
+    {
+        $first = trim((string) $this->newMemberFirstName);
+        $last = trim((string) $this->newMemberLastName);
+
+        if ($first === '' || $last === '') {
+            $this->newMemberExists = false;
+            return;
+        }
+
+        $first = mb_strtolower($first);
+        $last  = mb_strtolower($last);
+
+        $this->newMemberExists = \App\Models\Member::query()
+            ->where(function ($q) {
+                $q->where('is_deleted', false)
+                ->orWhereNull('is_deleted');
+            })
+            ->whereRaw('LOWER(TRIM(first_name)) = ?', [$first])
+            ->whereRaw('LOWER(TRIM(last_name))  = ?', [$last])
+            ->exists();
+    }
 }

+ 8 - 3
resources/views/livewire/records_in.blade.php

@@ -215,7 +215,7 @@
             </div>
         @endif
         
-        @if($currentReceip->status == 99)
+        @if($currentReceip?->status == 99)
             <div class="alert alert-warning" role="alert">
                 Ricevuta annullata
             </div>
@@ -887,14 +887,19 @@
                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                 </div>
                 <div class="modal-body">
+                    @if($newMemberExists)
+                    <div class="alert alert-warning" role="alert">
+                        Un utente con lo stesso nome e cognome è già presente a database
+                    </div>
+                    @endif
                     <div class="row">
                         <div class="col-md-6">
                             <label for="newMemberFirstName" class="form-label">Nome</label>
-                            <input class="form-control @error('newMemberFirstName') is-invalid @enderror" type="text" id="newMemberFirstName" placeholder="Nome" wire:model="newMemberFirstName">
+                            <input class="form-control @error('newMemberFirstName') is-invalid @enderror" type="text" id="newMemberFirstName" placeholder="Nome" wire:model.lazy="newMemberFirstName">
                         </div>
                         <div class="col-md-6">
                             <label for="newMemberLastName" class="form-label">Cognome</label>
-                            <input class="form-control @error('newMemberLastName') is-invalid @enderror" type="text" id="newMemberLastName" placeholder="Cognome" wire:model="newMemberLastName">
+                            <input class="form-control @error('newMemberLastName') is-invalid @enderror" type="text" id="newMemberLastName" placeholder="Cognome" wire:model.lazy="newMemberLastName">
                         </div>
                     </div>
                     <div class="row mt-2">