private FACTUREViewModel SetFactureViewModel()
        {
            Factures         val       = new Factures();
            FACTUREViewModel factureVm = new FACTUREViewModel();

            factureVm.dateDebut     = DateTime.Now.AddMonths(-1).AddDays(1);
            factureVm.dateFin       = DateTime.Now;
            factureVm.ListRedacteur = val.GetListRedacteurItem();
            return(factureVm);
        }
        public ActionResult CreateFacture(FACTUREViewModel model, FormCollection collection)
        {
            if (ModelState.IsValid)
            {
                // Exécute le suivi de session utilisateur
                if (!string.IsNullOrEmpty(Request.QueryString["currentid"]))
                {
                    _userId = Guid.Parse(Request.QueryString["currentid"]);
                    Session["currentid"] = Request.QueryString["currentid"];
                }
                else
                {
                    _userId = Guid.Parse(HttpContext.User.Identity.Name);
                }

                var selectedRedacteurId = model.listRedacteurId;
                var newFacture          = new FACTURE();
                newFacture.dateDebut    = model.dateDebut;
                newFacture.dateFin      = model.dateFin;
                newFacture.dateEmission = DateTime.Now;
                var commandesFacturer = db.COMMANDEs.Where(x => x.date_livraison >= model.dateDebut &&
                                                           x.date_livraison <= model.dateFin &&
                                                           (x.STATUT_COMMANDE != null &&
                                                            (x.STATUT_COMMANDE.statut_cmde.Contains("Validé") || x.STATUT_COMMANDE.statut_cmde.Contains("Refusé"))) &&
                                                           x.factureId == null
                                                           ).ToList();
                if (commandesFacturer.Count() > 0)
                {
                    var redacteur = db.UTILISATEURs.SingleOrDefault(x => x.userId == model.listRedacteurId);

                    double montant   = 0;
                    Guid   factureId = Guid.NewGuid();


                    foreach (var commande in commandesFacturer)
                    {
                        if (commande.STATUT_COMMANDE.statut_cmde.Contains("Validé"))
                        {
                            montant += Convert.ToDouble(commande.nombre_mots) * (Convert.ToDouble(redacteur.redactTarif));
                        }

                        commande.factureId             = factureId;
                        commande.REDACTEUR.redactTarif = String.Format("{0:N0}", commande.REDACTEUR.redactTarif);
                    }

                    newFacture.montant     = String.Format("{0:N0}", montant);
                    newFacture.etat        = false;
                    newFacture.redacteurId = model.listRedacteurId;
                    newFacture.createurId  = _userId;
                    newFacture.factureId   = factureId;
                    int maxRef = (db.FACTUREs.ToList().Count != 0) ? db.FACTUREs.Max(u => u.factureNumero) : 0;
                    newFacture.factureNumero = maxRef + 1;
                    db.FACTUREs.Add(newFacture);

                    int res = db.SaveChanges();
                    if (res > 0)
                    {
                        foreach (var commande in commandesFacturer)
                        {
                            var status = db.STATUT_COMMANDE.SingleOrDefault(s => s.statut_cmde.Contains("Facturé"));
                            commande.STATUT_COMMANDE = status;
                            db.SaveChanges();
                        }
                        return(RedirectToAction("ListFacture"));
                    }
                }
                else
                {
                    ViewBag.ErrorMessage = true;
                    FACTUREViewModel factureVm = SetFactureViewModel();
                    return(View("Create", factureVm));
                }
            }

            return(View("ErrorException"));
        }
        // GET: Facture/Create
        public ActionResult Create()
        {
            FACTUREViewModel factureVm = SetFactureViewModel();

            return(View(factureVm));
        }