/**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     //
     // dd($request->all());->input('name');
     $date_de_fin_du_contrat_request = $request->input('date_de_fin_du_contrat');
     $date_de_fin_du_contrat_request = $date_de_fin_du_contrat_request == '' ? '00/00/0000' : $request->input('date_de_fin_du_contrat');
     // remplace le valuer date_fin_du_contrat par la valuer date_de_fin_du_contrat_request
     $request->merge(array('date_de_fin_du_contrat' => $date_de_fin_du_contrat_request));
     // dd($request->all());
     $personnel = Personnels::create($request->all());
     $journalPaie = new JournalPaieCoutTotal();
     $journalIrpp = new JournalPaieIrpp();
     $conge = new Conges();
     $cnss = new Cnss();
     /******************************************************CALCUL IRPP  **************************************/
     // CALCUL Salaier Brut
     $SB = $journalPaie->salaire_brut = $this->getSalaireBrut($request->nb_jour, $request->salaire_du_jour);
     // CALCUL Retenue CNSS
     $RCNSS = $journalPaie->retenu_cnss = $this->getRetenueCNSS($SB);
     $cnss->retenue_cnss = $RCNSS;
     $chargePatronal = $this->getChargePatronal($SB);
     $journalPaie->charage_patronal = $chargePatronal;
     $cnss->charge_patronale = $chargePatronal;
     // Cacule Accident de travail
     $accidentTravail = $this->getAccidentTravail($SB);
     $cnss->accident_de_travail = $accidentTravail;
     // Calcul Total cnss
     $totaCnss = $this->getTotalCNSS($RCNSS, $chargePatronal, $accidentTravail);
     $cnss->cout_total_mensuel = $totaCnss;
     $cnss->cout_total_trimestriel = $totaCnss / 4;
     // Cacule Salaire imposable 1
     $SIMP1 = $this->getSIMP1($SB, $RCNSS);
     // CALCUL Abattement
     $Abattement = $this->getAbattement($SIMP1);
     $journalIrpp->abttement = $Abattement;
     // ******************Cacule Déduction************************
     $DEDUCTION = 0;
     $cf = $personnel->cf;
     $nbenfant = $personnel->nb_enfant;
     $DEDUCTION = $this->getSituation($cf, $nbenfant);
     $journalIrpp->deduction = $DEDUCTION;
     //*************************************************************
     // CALCUL Salaire imposable 2
     $SIMP2 = $this->getSIMP2($SIMP1, $Abattement, $DEDUCTION);
     $SIMP2 = ceil($SIMP2);
     $journalIrpp->salaire_impossable_2 = $SIMP2;
     // CALCUL Totaux
     $toteaux = $this->getTotaux($SIMP2);
     //CALCUL IRPP
     $irpp = $toteaux;
     $journalPaie->retenue_irpp = $irpp;
     $journalIrpp->irrp_annuel = $irpp;
     $journalIrpp->irrp_mensuel = $irpp / NOMBERDUMOIS;
     //Salaire Imposable
     $SIMPFinal = $SB - $RCNSS;
     $journalPaie->salaier_imposable = $SIMPFinal;
     $journalIrpp->salaire_impossable = $SIMPFinal / NOMBERDUMOIS;
     $journalIrpp->salaire_impossable_annuel = $SIMPFinal;
     //Salaire Net
     $salaierNet = $journalPaie->salaier_net = $SB - ($RCNSS + $irpp);
     //CALCUL TFP
     $tfp = $journalPaie->tfp = $this->getTfp($SB);
     //CALCUL foprolos
     $foprolos = $journalPaie->foprolos = $this->getFoprolos($SB);
     // Sauvegarde les donnes dans la table journal_paie_cout_totals
     $journalCoutTotals = $journalPaie->Personnels()->associate($personnel);
     $journalCoutTotals->save();
     // Sauvegarde les donnes dans la table journal_paie_irpps
     $journalIrpp = $journalIrpp->Personnels()->associate($personnel);
     $journalIrpp->save();
     // Sauvegarde les donnes dans la table cnss
     $cnssSave = $cnss->Personnels()->associate($personnel);
     $cnssSave->save();
     // Sauvegarde  les conges
     $congeSave = $conge->Personnels()->associate($personnel);
     $date_entree = $personnel->getOriginal('date_entree');
     $mDate = Carbon::parse($date_entree);
     $diff = $mDate->diffInMonths();
     $congeSave->nb_jour_conges = $diff * COEFFICIENT_NB_CONGEE;
     $congeSave->date_demande_conge = $mDate;
     $congeSave->save();
     return redirect(route('personnel.index'));
 }