public ActionResult CONSULTERLISTEFACTURES()
        {
            using (IDAL dal = new Dal())
            {
                if (dal.VerifierAccesParUtilisateurIdParPrivilegePeut(HttpContext.User.Identity.Name, "CONSULTER_LISTE_FACTURES"))
                {
                    List <FactureVM2> tempListeFacturetVM = new List <FactureVM2>();

                    List <FACTURE> tempListeFacture = dal.ObtenirTousLesFactures().OrderByDescending(f => f.DateCreation).ToList();

                    FactureVM2 FacturetVM;
                    foreach (var f in tempListeFacture)
                    {
                        FacturetVM = new FactureVM2();
                        FacturetVM = dal.ConvertirFactureFactureVM2(f);
                        tempListeFacturetVM.Add(FacturetVM);
                    }

                    return(View("ConsulterListeFactures", tempListeFacturetVM));
                }
                else
                {
                    ViewBag.ErrorMessage = dal.getErrorMessageFailedAuthorization();
                    return(View("Error"));
                }
            }
        }
        public ActionResult CONSULTERFACTURE(String Id)
        {
            using (IDAL dal = new Dal())
            {
                if (dal.VerifierAccesParUtilisateurIdParPrivilegePeut(HttpContext.User.Identity.Name, "CONSULTER_FACTURE"))
                {
                    FactureVM2 FacturetVM = new FactureVM2();

                    FACTURE Facture = dal.ObtenirFactureParId(CRYPTAGE.StringHelpers.Encrypt(Id));

                    if (Facture != null)
                    {
                        FacturetVM = dal.ConvertirFactureFactureVM2(Facture);

                        FacturetVM.Reste = FacturetVM.Montant - dal.SommeTotalePayeeParFacture(Facture);

                        return(View("ConsulterFacture", FacturetVM));
                    }
                    return(RedirectToAction("CONSULTERLISTEFACTURES"));
                }
                else
                {
                    ViewBag.ErrorMessage = dal.getErrorMessageFailedAuthorization();
                    return(View("Error"));
                }
            }
        }
        public ActionResult ENREGISTRERREGLEMENT(String Id)
        {
            using (IDAL dal = new Dal())
            {
                if (dal.VerifierAccesParUtilisateurIdParPrivilegePeut(HttpContext.User.Identity.Name, "ENREGISTRER_REGLEMENT"))
                {
                    CAISSE CaisseOuverte = dal.CaisseOuverteParCaissierId(HttpContext.User.Identity.Name);

                    if (CaisseOuverte != null)
                    {
                        ReglementVM RVM = new ReglementVM();

                        FACTURE fact = dal.ObtenirFactureParId(CRYPTAGE.StringHelpers.Encrypt(Id));
                        if (fact != null)
                        {
                            FactureVM2 FVM = dal.ConvertirFactureFactureVM2(fact);

                            RVM.FactureId        = FVM.Id;
                            RVM.Patient          = FVM.Patient;
                            RVM.ReferenceFacture = FVM.Reference;
                            RVM.Montant          = FVM.Montant;
                            RVM.Reste            = FVM.Montant - dal.SommeTotalePayeeParFacture(fact);
                            RVM.CaisseId         = CaisseOuverte.CaisseID;
                            RVM.Caisse           = CRYPTAGE.StringHelpers.Decrypt(CaisseOuverte.Nom);

                            UTILISATEUR GerantCaisse = dal.ObtenirUtilisateurParId(HttpContext.User.Identity.Name);
                            if (GerantCaisse != null)
                            {
                                RVM.CaissierId = GerantCaisse.UtilisateurID;
                                RVM.Caissier   = CRYPTAGE.StringHelpers.Decrypt(GerantCaisse.Personne.Nom) + " " + CRYPTAGE.StringHelpers.Decrypt(GerantCaisse.Personne.Prenom);
                            }

                            ViewBag.ListeModePaiement = dal.ObtenirTousLesModePaiements();

                            return(View("FormulaireAjoutReglement", RVM));
                        }
                        else
                        {
                            ViewBag.ErrorMessage = "Rassurez-vous que cette facture existe.";
                            return(View("Error"));
                        }
                    }
                    else
                    {
                        ViewBag.ErrorMessage = "Rassurez-vous que votre Caisse est OUVERTE et qu'elle vous a été affectée.";
                        return(View("Error"));
                    }
                }
                else
                {
                    ViewBag.ErrorMessage = dal.getErrorMessageFailedAuthorization();
                    return(View("Error"));
                }
            }
        }
        public ActionResult ENREGISTRERFACTURE(FactureVM2 factureVM, String[] IdsProduitsSelectionnes, String[] QtesProduitsSelectionnes)
        {
            using (IDAL dal = new Dal())
            {
                if (dal.VerifierAccesParUtilisateurIdParPrivilegePeut(HttpContext.User.Identity.Name, "ENREGISTRER_FACTURE"))
                {
                    if (ModelState.IsValid)
                    {
                        FACTURE facture = new FACTURE();

                        facture.Dossier     = dal.ObtenirDossierParId(CRYPTAGE.StringHelpers.Encrypt(factureVM.DossierID));
                        facture.Utilisateur = dal.ObtenirUtilisateurParId(CRYPTAGE.StringHelpers.Encrypt(factureVM.CaissierID));

                        facture.FactureID = dal.EnregistrerFacture(facture);


                        if (!String.IsNullOrEmpty(facture.FactureID) && IdsProduitsSelectionnes != null && QtesProduitsSelectionnes != null)
                        {
                            FACTURE        fact = dal.ObtenirFactureParId(facture.FactureID);
                            FACTUREDETAILS factureDetails;

                            int i        = 0;
                            int Quantite = 0;
                            foreach (var idProduit in IdsProduitsSelectionnes)
                            {
                                if (!String.IsNullOrEmpty(idProduit) && !String.IsNullOrEmpty(QtesProduitsSelectionnes[i]))
                                {
                                    if (idProduit != "false" && QtesProduitsSelectionnes[i] != "false")
                                    {
                                        factureDetails = new FACTUREDETAILS();

                                        factureDetails.Facture = fact;

                                        PRODUIT Prod = dal.ObtenirProduitParId(idProduit);
                                        factureDetails.Produit      = Prod;
                                        factureDetails.PrixUnitaire = Prod.PrixVente;

                                        Boolean IsConverted = int.TryParse(QtesProduitsSelectionnes[i], out Quantite);

                                        if (IsConverted)
                                        {
                                            factureDetails.Quantite = Quantite;
                                            dal.EnregistrerFactureDetail(factureDetails);
                                        }
                                    }
                                }
                                i += 1;
                            }
                        }

                        return(RedirectToAction("CONSULTERLISTEFACTURES"));
                    }
                    else
                    {
                        return(View("FormulaireAjoutFacture"));
                    }
                }
                else
                {
                    ViewBag.ErrorMessage = dal.getErrorMessageFailedAuthorization();
                    return(View("Error"));
                }
            }
        }