name : Createprime.php
<?php

namespace App\Livewire\Prime;

use Livewire\Component;

use Livewire\Attributes\Title;
use App\Models\contrat\autocontrat;
use App\Models\{Garanties,Produit,
    Compagnie, Energie,DureeContrat,
    Avenant, Paiement,Devise, Souscripteur,
    Assure, Vehicule,Pay, PlaceVehicule, Ville,TypeVehicule,
    PrimeAuto,Puissance,
};
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Livewire\Attributes\Rule;
use Livewire\Attributes\Validate; 
use Illuminate\Support\Facades\Auth;

class Createprime extends Component
{

    #[Validate('required|numeric')]
    public $primeNette= '';

    // #[Validate('nullable|exists:villes,id')]
    // public $IDville= '';

    #[Validate('required|exists:compagnies,id')]
    public $IDcompagnie= '';

    #[Validate('required|exists:produits,id')]
    public $IDproduit= '';

    #[Validate('nullable|exists:energies,id')]
    public $IDenergie= '';

    #[Validate('nullable|exists:puissances,id')]
    public $puissances= '';

    public $puissanceVehicule =[];

    #[Validate('required|exists:garanties,id')]
    public $IDgarantie= '';

    #[Validate('nullable|exists:place_vehicules,id')]
    public $NombrePlaces= '';


    #[Validate('required|exists:duree_contrats,id')]
    public $IDdureecontrat= '';

    #[Validate('required|exists:type_vehicules,id')]
    public $IDtypevehicule= '';

    public function mount()
    {
        if (!Auth::check()) {
            return redirect()->route('post.login');
        }
    }

    public function GetPuissance(){
        switch ($this->IDproduit) {
            case '9'://produit tourisme
                $this->puissanceVehicule = Puissance::Where('IDproduit',$this->IDproduit)
                 ->where('IDenergie', $this->IDenergie)->get();
                break;
            case '2'://produit TPPC
                $this->puissanceVehicule = Puissance::Where('IDproduit',$this->IDproduit)->get();
                break;
            case '3'://produit TPM
                $this->puissanceVehicule = Puissance::Where('IDproduit',$this->IDproduit)->get();
                break;
            case '4'://produit deux roues ou trois roues
                $this->puissanceVehicule = Puissance::Where('IDproduit',$this->IDproduit)->get();
                break;
            default:
                # code...
                break;
        }
    }

    

    public function save(){
        $this->validate();
        
       
        $listesPrimes = DB::table('prime_autos')  
                ->join('garanties', 'prime_autos.IDgarantie', '=', 'garanties.id')
                ->join('produits', 'prime_autos.IDproduit', '=', 'produits.id')  
                // ->join('villes', 'prime_autos.IDville', '=', 'villes.id')  
                ->join('duree_contrats', 'prime_autos.IDdureecontrat', '=', 'duree_contrats.id')
                ->join('energies', 'prime_autos.IDenergie', '=', 'energies.id')
                ->join('type_vehicules', 'prime_autos.IDtypevehicule', '=', 'type_vehicules.id')
                ->join('compagnies', 'prime_autos.IDcompagnie', '=', 'compagnies.id')
                ->where('prime_autos.IDgarantie', $this->IDgarantie)
                ->where('prime_autos.IDproduit', $this->IDproduit)
                ->where('prime_autos.IDdureecontrat', $this->IDdureecontrat)
                ->where('prime_autos.IDtypevehicule', $this->IDtypevehicule)
                ->where('prime_autos.IDcompagnie', $this->IDcompagnie)
                ->Where('prime_autos.IDpuissance', $this->puissances)
                ->where('prime_autos.primeNette', $this->primeNette)
                ->Where('prime_autos.IDenergie', $this->IDenergie)
                // ->orWhere('prime_autos.IDville', $this->IDville)
                ->orWhere('prime_autos.IDplaceAuto', $this->NombrePlaces)
                // ->select('primes.id_duree', 'primes.id_ville', 'primes.id_categorie', 'primes.id_puissance', 'primes.id_garantie')  
                ->count(); 
                 
                 if ($listesPrimes > 0) {
                    session()->flash('erreur', 'Erreur. La prime a déjà été ajoutée');
                    
                 } else {
                    
                   if ($this->puissances && $this->NombrePlaces) {
                        PrimeAuto::create([
                            'IDgarantie'=>$this->IDgarantie,
                            'IDproduit'=>$this->IDproduit,
                            'IDdureecontrat'=>$this->IDdureecontrat,
                            'IDtypevehicule'=>$this->IDtypevehicule,
                            'IDcompagnie'=>$this->IDcompagnie,
                            'IDenergie'=>$this->IDenergie,
                            'IDplaceAuto'=>$this->NombrePlaces,
                            'IDpuissance'=>$this->puissances,
                            'primeNette'=> (int)$this->primeNette,
                        ]);
                        session()->flash('success', 'La prime a été ajoutée avec succès');
                   }elseif($this->puissances && $this->NombrePlaces ==''){
                        PrimeAuto::create([
                            'IDgarantie'=>$this->IDgarantie,
                            'IDproduit'=>$this->IDproduit,
                            'IDdureecontrat'=>$this->IDdureecontrat,
                            'IDtypevehicule'=>$this->IDtypevehicule,
                            'IDcompagnie'=>$this->IDcompagnie,
                            'IDpuissance'=>$this->puissances,
                            'IDenergie'=>$this->IDenergie,
                            'primeNette'=> (int)$this->primeNette,
                        ]);
                        session()->flash('success', 'La prime a été ajoutée avec succès');
                   }elseif($this->puissances =='' && $this->NombrePlaces) {
                        PrimeAuto::create([
                            'IDgarantie'=>$this->IDgarantie,
                            'IDproduit'=>$this->IDproduit,
                            'IDdureecontrat'=>$this->IDdureecontrat,
                            'IDtypevehicule'=>$this->IDtypevehicule,
                            'IDcompagnie'=>$this->IDcompagnie,
                            'IDenergie'=>$this->IDenergie,
                            'IDplaceAuto'=>$this->NombrePlaces,
                            'primeNette'=> (int)$this->primeNette,
                        ]);
                        session()->flash('success', 'La prime a été ajoutée avec succès');
                   }
                }
    }
    
    #[Title('Ajouter une prime')]
    public function render()
    {
        return view('livewire.prime.createprime',[
            'pays'=>Pay::orderBy('pays','asc')->get(),
            'compagnies'=>Compagnie::orderBy('Nom_compagnie','asc')->get(),
            'villes'=>Ville::orderBy('ville','asc')->get(),
            'garanties'=>Garanties::orderBy('id','desc')->get(),
            'energies'=>Energie::orderBy('id','desc')->get(),
            'produits'=>Produit::orderBy('id','desc')->get(),
            'durees'=>DureeContrat::orderBy('id','desc')->get(),
            'typeVehicules'=>TypeVehicule::orderBy('id','desc')->get(),
            'placesVehicules'=>PlaceVehicule::orderBy('id','asc')->get(),
        ]);
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password