public ActionResult APPROVISIONNERPRODUITS()
        {
            using (IDAL dal = new Dal())
            {
                if (dal.VerifierAccesParUtilisateurIdParPrivilegePeut(HttpContext.User.Identity.Name, "APPROVISIONNER_PRODUITS"))
                {
                    ApprovisionnementStockVM ApprovisionnementVM = new ApprovisionnementStockVM();
                    STOCK StockPrincipal = dal.ObtenirStockPrincipal();

                    if (StockPrincipal != null)
                    {
                        ApprovisionnementVM.NomStock = CRYPTAGE.StringHelpers.Decrypt(StockPrincipal.Nom);
                        ApprovisionnementVM.StockId  = StockPrincipal.StockID;

                        List <PRODUIT> ListeProduit = dal.ObtenirProduitParStockId(StockPrincipal.StockID);

                        List <ProduitVM> ListeProduitVM = new List <ProduitVM>();
                        if (ListeProduit != null)
                        {
                            foreach (var produit in ListeProduit)
                            {
                                ListeProduitVM.Add(dal.ConvertirProduitProduitVM(produit));
                            }
                        }
                        ApprovisionnementVM.Produits = ListeProduitVM;


                        return(View("FormulaireApprovisionnementStock", ApprovisionnementVM));
                    }
                    else
                    {
                        ViewBag.ErrorMessage = "Verifiez si vous avez defini le Magasin comme stock Principal svp. ";
                        return(View("Error"));
                    }
                }
                else
                {
                    ViewBag.ErrorMessage = dal.getErrorMessageFailedAuthorization();
                    return(View("Error"));
                }
            }
        }
        public ActionResult APPROVISIONNERPRODUITS(ApprovisionnementStockVM ASVM, String[] IdsProduitAApprovionner, String[] QuantiteApprovisionner, String[] DateExpiration)
        {
            using (IDAL dal = new Dal())
            {
                if (dal.VerifierAccesParUtilisateurIdParPrivilegePeut(HttpContext.User.Identity.Name, "APPROVISIONNER_PRODUITS"))
                {
                    List <ApprovisionnementStockVM2> ListeAppro = new List <ApprovisionnementStockVM2>();

                    if (IdsProduitAApprovionner != null)
                    {
                        ApprovisionnementStockVM2 Appro;
                        int i = 0;

                        foreach (var ProduitId in IdsProduitAApprovionner)
                        {
                            Appro = new ApprovisionnementStockVM2();

                            if (ProduitId != "false")
                            {
                                Appro.ProduitId = ProduitId;

                                int Qte;
                                if (Int32.TryParse(QuantiteApprovisionner[i], out Qte))
                                {
                                    Appro.Quantite = Qte;
                                }

                                DateTime DateExp;
                                if (DateTime.TryParse(DateExpiration[i], out DateExp))
                                {
                                    Appro.DateExpiration = DateExp;
                                }

                                ListeAppro.Add(Appro);
                            }
                            i++;
                        }
                    }

                    if (ListeAppro != null)
                    {
                        int i = 0;
                        foreach (var Appro in ListeAppro)
                        {
                            if (Appro != null)
                            {
                                PRODUIT Prod = dal.ObtenirProduitParId(Appro.ProduitId);

                                if (Prod != null)
                                {
                                    STOCKDETAILS StockDetail = new STOCKDETAILS();
                                    StockDetail.Produit = Prod;

                                    STOCK stock = dal.ObtenirStockParId(ASVM.StockId);
                                    if (stock != null)
                                    {
                                        StockDetail.Stock          = stock;
                                        StockDetail.DateExpiration = Appro.DateExpiration;
                                        StockDetail.StockQuantity  = Appro.Quantite;

                                        List <STOCKDETAILS> StockDetailExistant = dal.ObtenirStockDetailsParProduitParStockParDateExpiration(Prod.ProduitID, stock.StockID, StockDetail.DateExpiration);
                                        Boolean             EstUneMAJ           = false;

                                        foreach (var stkd in StockDetailExistant)
                                        {
                                            if (stkd != null && stkd.DateExpiration == StockDetail.DateExpiration)
                                            {
                                                stkd.StockQuantity += StockDetail.StockQuantity;
                                                dal.EnregistrerProduitEnStock(stkd);
                                                EstUneMAJ = true;
                                                break;
                                            }
                                        }

                                        if (!EstUneMAJ)
                                        {
                                            dal.EnregistrerProduitEnStock(StockDetail);
                                        }
                                    }
                                }
                            }

                            i++;
                        }
                    }

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