Exemplo n.º 1
0
        public static List <CommandeAdministration> GenerateRandomCommandes(int nombreCommandes)
        {
            //Administration
            List <CommandeAdministration> listeCommande = new List <CommandeAdministration>();
            List <ProduitAdministration>  listeProduits = new List <ProduitAdministration>();

            listeProduits = ProduitAdministration.GetProduitsFromDataBase();
            for (int i = 0; i < nombreCommandes; i++)
            {
                listeCommande.Add(new CommandeAdministration(listeProduits));
            }

            foreach (CommandeAdministration com in listeCommande)
            {
                foreach (ProduitAdministration pro in com.ListProduit)
                {
                    pro.DateDebutAssemblage = RandomDate(com.Date, com.DatePrevisionnelle);
                    pro.DateFinAssemblage   = RandomDate(pro.DateDebutAssemblage, com.DatePrevisionnelle);
                }
            }
            Administration.DBConnect connect = new Administration.DBConnect();
            var listFinaleCommande           = listeCommande.Select(item => new { item.IdCommande, item.Reference, item.Date, item.DatePrevisionnelle, item.DateEffective, item.Prix, item.State, item.RetourClientCommande, item.IdClient });

            connect.InsertDT(CreateDataTable(listFinaleCommande), "commande");

            List <CommandeAdministration> listeCommandesFromDB = CommandeAdministration.GetCommandesFromDataBase(nombreCommandes);

            for (int i = 0; i < listeCommandesFromDB.Count(); i++)
            {
                listeCommandesFromDB[i].ListProduit          = listeCommande[i].ListProduit;
                listeCommandesFromDB[i].RetourClientCommande = listeCommande[i].RetourClientCommande;
            }

            foreach (var commande in listeCommandesFromDB)
            {
                List <KeyValuePair <int, int> > contient = new List <KeyValuePair <int, int> >();
                foreach (var produit in commande.ListProduit)
                {
                    contient.Add(new KeyValuePair <int, int>((int)produit.Id, commande.IdCommande));
                }

                connect.InsertDT(Commande.CreateDataTable(contient), "contient");
            }

            //Fabrication
            List <Produit> listePro = new List <Produit>();

            foreach (CommandeAdministration commande in listeCommande)
            {
                foreach (ProduitAdministration proA in commande.ListProduit)
                {
                    Produit tempPro = new Produit(true);
                    tempPro.Nom                 = proA.Nom;
                    tempPro.Prix                = proA.Prix;
                    tempPro.ListPiece           = proA.ListPiece;
                    tempPro.LigneProduit        = proA.LigneProduit;
                    tempPro.Reference           = proA.Reference;
                    tempPro.RetourClient        = proA.RetourClient;
                    tempPro.Stock               = proA.Stock + commande.State == Etat.Annule ? 1 : 0;
                    tempPro.DateDebutAssemblage = proA.DateDebutAssemblage;
                    tempPro.DateFinAssemblage   = proA.DateFinAssemblage;
                    listePro.Add(tempPro); //on cast les ProduitAdministration en Produits, pour les passer en Fabrication
                }
            }

            Produit.MakeProduit(listePro);

            //Expédition
            var listFinaleCommandeExpedition = listeCommande.Select(item => new { item.IdCommande, item.Reference, item.Date, item.DateExpedition, item.IdClient });

            Expédition.DBConnect connectExpe = new Expédition.DBConnect();
            connectExpe.InsertDT(CreateDataTable(listFinaleCommandeExpedition), "commande");

            //Préparation
            var listFinaleCommandePreparation = listeCommande.Select(item => new { item.IdCommande, item.Reference, item.Temps, item.DateDebut, item.DateFin });

            Préparation.DBConnect connectPrep = new Préparation.DBConnect();
            connectPrep.InsertDT(CreateDataTable(listFinaleCommandePreparation), "commande");

            List <Commande> listeCommandesFromDBPrep             = Commande.GetCommandesFromDataBase(nombreCommandes);
            List <CommandeAdministration> listFinaleCommandePrep = new List <CommandeAdministration>();

            foreach (var commande in listeCommandesFromDBPrep)
            {
                CommandeAdministration ca = new CommandeAdministration();
                ca.IdCommande  = commande.IdCommande;
                ca.ListProduit = listeCommande.Where(o => o.Reference == commande.Reference).First().ListProduit;
                listFinaleCommandePrep.Add(ca);
            }
            foreach (var commande in listFinaleCommandePrep)
            {
                List <KeyValuePair <int, int> > contient = new List <KeyValuePair <int, int> >();
                foreach (var produit in commande.ListProduit)
                {
                    contient.Add(new KeyValuePair <int, int>(commande.IdCommande, (int)produit.Id));
                }

                connectPrep.InsertDT(Commande.CreateDataTable(contient), "contient");
            }

            return(listeCommande);
        }