public async Task <IActionResult> PutCategorieActivite(int id, CategorieActivite categorieActivite)
        {
            if (id != categorieActivite.Id)
            {
                return(BadRequest());
            }

            _context.Entry(categorieActivite).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CategorieActiviteExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <ActionResult <CategorieActivite> > PostCategorieActivite(CategorieActivite categorieActivite)
        {
            _context.Categories.Add(categorieActivite);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetCategorieActivite", new { id = categorieActivite.Id }, categorieActivite));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> Create([Bind(Include = "Id,ParentId,CategorieActiviteNom")] CategorieActivite category)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    ValidateParentsAreParentless(category);
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                    ViewBag.ParentCategoryIdSelectList = PopulateParentCategorySelectList(null);
                    return(View(category));
                }


                _applicationDbContext.CategoriesActivite.Add(category);
                await _applicationDbContext.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            ViewBag.ParentCategoryIdSelectList = PopulateParentCategorySelectList(null);
            return(View(category));
        }
Ejemplo n.º 4
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,ParentId,CategorieActiviteNom")] CategorieActiviteViewModel categoryViewModel)
        {
            if (ModelState.IsValid)
            {
                // Unwind back to a Category
                CategorieActivite editedCategory = new CategorieActivite();

                try
                {
                    editedCategory.Id                   = categoryViewModel.Id;
                    editedCategory.ParentId             = categoryViewModel.ParentId;
                    editedCategory.CategorieActiviteNom = categoryViewModel.CategorieActiviteNom;
                    ValidateParentsAreParentless(editedCategory);
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                    ViewBag.ParentCategoryIdSelectList = PopulateParentCategorySelectList(categoryViewModel.Id);
                    return(View("Edit", categoryViewModel));
                }


                _applicationDbContext.Entry(editedCategory).State = EntityState.Modified;
                await _applicationDbContext.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.ParentCategoryIdSelectList = PopulateParentCategorySelectList(categoryViewModel.Id);
            return(View(categoryViewModel));
        }
Ejemplo n.º 5
0
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CategorieActivite category = await _applicationDbContext.CategoriesActivite.FindAsync(id);

            if (category == null)
            {
                return(HttpNotFound());
            }
            return(View(category));
        }
		private void ValidateParentsAreParentless(CategorieActivite categorie)
		{
			// There is no parent
			if (categorie.ParentId == null)
				return;

			// The parent has a parent
			CategorieActivite parentCategory = _applicationDbContext.CategoriesActivite.Find(categorie.ParentId);
			if (parentCategory.ParentId != null)
				throw new InvalidOperationException("Seuls deux niveaux hiérarchiques sont autorisés.");

			// The parent does NOT have a parent, but the categorie being nested has children
			int numberOfChildren = _applicationDbContext.CategoriesActivite.Count(c => c.ParentId== categorie.Id);
			if (numberOfChildren > 0)
				throw new InvalidOperationException("Seuls deux niveaux hiérarchiques sont autorisés.");
		}
		private List<CategorieActivite> GetListOfNodes()
		{
			List<CategorieActivite> sourceCategories = _applicationDbContext.CategoriesActivite.ToList();
			List<CategorieActivite> categories = new List<CategorieActivite>();
			foreach (CategorieActivite sourceCategorie in sourceCategories)
			{
				CategorieActivite c = new CategorieActivite();
				c.Id = sourceCategorie.Id;
				c.CategorieActiviteNom = sourceCategorie.CategorieActiviteNom;
				if (sourceCategorie.ParentId != null)
				{
					c.Parent = new CategorieActivite();
					c.Parent.Id = (int)sourceCategorie.ParentId;
				}
				categories.Add(c);
			}
			return categories;
		}
Ejemplo n.º 8
0
        private string EnumerateNodes(CategorieActivite parent)
        {
            // Init an empty string
            string content = String.Empty;

            // Add <li> categorie name
            content += "<li class=\"treenode\">";
            content += parent.CategorieActiviteNom;
            content += String.Format("<a href=\"/CategoriesActivite/Edit/{0}\" class=\"btn btn-primary btn-xs treenodeeditbutton\">Modifier</a>", parent.Id);
            content += String.Format("<a href=\"/CategoriesActivite/Delete/{0}\" class=\"btn btn-danger btn-xs treenodedeletebutton\">Supprimer</a>", parent.Id);

            // If there are no children, end the </li>
            if (parent.Children.Count == 0)
            {
                content += "</li>";
            }
            else               // If there are children, start a <ul>
            {
                content += "<ul>";
            }

            // Loop one past the number of children
            int numberOfChildren = parent.Children.Count;

            for (int i = 0; i <= numberOfChildren; i++)
            {
                // If this iteration's index points to a child,
                // call this function recursively
                if (numberOfChildren > 0 && i < numberOfChildren)
                {
                    CategorieActivite child = parent.Children[i];
                    content += EnumerateNodes(child);
                }

                // If this iteration's index points past the children, end the </ul>
                if (numberOfChildren > 0 && i == numberOfChildren)
                {
                    content += "</ul>";
                }
            }

            // Return the content
            return(content);
        }
Ejemplo n.º 9
0
        private List <CategorieActivite> GetListOfNodes()
        {
            List <CategorieActivite> sourceCategories = _applicationDbContext.CategoriesActivite.ToList();
            List <CategorieActivite> categories       = new List <CategorieActivite>();

            foreach (CategorieActivite sourceCategorie in sourceCategories)
            {
                CategorieActivite c = new CategorieActivite();
                c.Id = sourceCategorie.Id;
                c.CategorieActiviteNom = sourceCategorie.CategorieActiviteNom;
                if (sourceCategorie.ParentId != null)
                {
                    c.Parent    = new CategorieActivite();
                    c.Parent.Id = (int)sourceCategorie.ParentId;
                }
                categories.Add(c);
            }
            return(categories);
        }
Ejemplo n.º 10
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            CategorieActivite category = await _applicationDbContext.CategoriesActivite.FindAsync(id);

            try
            {
                _applicationDbContext.CategoriesActivite.Remove(category);
                await _applicationDbContext.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            catch (DbUpdateException)
            {
                ModelState.AddModelError("", "Vous ne pouvez pas supprimer une catégorie qui a des sous-catégories.");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
            }

            return(View("Delete", category));
        }
Ejemplo n.º 11
0
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CategorieActivite category = await _applicationDbContext.CategoriesActivite.FindAsync(id);

            if (category == null)
            {
                return(HttpNotFound());
            }

            // Wind-up a Category viewmodel
            CategorieActiviteViewModel categoryViewModel = new CategorieActiviteViewModel();

            categoryViewModel.Id                   = category.Id;
            categoryViewModel.ParentId             = category.ParentId;
            categoryViewModel.CategorieActiviteNom = category.CategorieActiviteNom;

            ViewBag.ParentCategoryIdSelectList = PopulateParentCategorySelectList(categoryViewModel.Id);
            return(View(categoryViewModel));
        }
		private string EnumerateNodes(CategorieActivite parent)
		{
			// Init an empty string
			string content = String.Empty;

			// Add <li> categorie name
			content += "<li class=\"treenode\">";
			content += parent.CategorieActiviteNom;
			content += String.Format("<a href=\"/CategoriesActivite/Edit/{0}\" class=\"btn btn-primary btn-xs treenodeeditbutton\">Modifier</a>", parent.Id);
			content += String.Format("<a href=\"/CategoriesActivite/Delete/{0}\" class=\"btn btn-danger btn-xs treenodedeletebutton\">Supprimer</a>", parent.Id);

			// If there are no children, end the </li>
			if (parent.Children.Count == 0)
				content += "</li>";
			else   // If there are children, start a <ul>
				content += "<ul>";

			// Loop one past the number of children
			int numberOfChildren = parent.Children.Count;
			for (int i = 0; i <= numberOfChildren; i++)
			{
				// If this iteration's index points to a child,
				// call this function recursively
				if (numberOfChildren > 0 && i < numberOfChildren)
				{
					CategorieActivite child = parent.Children[i];
					content += EnumerateNodes(child);
				}

				// If this iteration's index points past the children, end the </ul>
				if (numberOfChildren > 0 && i == numberOfChildren)
					content += "</ul>";
			}

			// Return the content
			return content;
		}
Ejemplo n.º 13
0
        private void ValidateParentsAreParentless(CategorieActivite categorie)
        {
            // There is no parent
            if (categorie.ParentId == null)
            {
                return;
            }

            // The parent has a parent
            CategorieActivite parentCategory = _applicationDbContext.CategoriesActivite.Find(categorie.ParentId);

            if (parentCategory.ParentId != null)
            {
                throw new InvalidOperationException("Seuls deux niveaux hiérarchiques sont autorisés.");
            }

            // The parent does NOT have a parent, but the categorie being nested has children
            int numberOfChildren = _applicationDbContext.CategoriesActivite.Count(c => c.ParentId == categorie.Id);

            if (numberOfChildren > 0)
            {
                throw new InvalidOperationException("Seuls deux niveaux hiérarchiques sont autorisés.");
            }
        }
		public async Task<ActionResult> Edit([Bind(Include = "Id,ParentId,CategorieActiviteNom")] CategorieActiviteViewModel categoryViewModel)
		{
			if (ModelState.IsValid)
			{
				// Unwind back to a Category
				CategorieActivite editedCategory = new CategorieActivite();

				try
				{
					editedCategory.Id = categoryViewModel.Id;
					editedCategory.ParentId = categoryViewModel.ParentId;
					editedCategory.CategorieActiviteNom = categoryViewModel.CategorieActiviteNom;
					ValidateParentsAreParentless(editedCategory);
				}
				catch (Exception ex)
				{
					ModelState.AddModelError("", ex.Message);
					ViewBag.ParentCategoryIdSelectList = PopulateParentCategorySelectList(categoryViewModel.Id);
					return View("Edit", categoryViewModel);
				}


				_applicationDbContext.Entry(editedCategory).State = EntityState.Modified;
				await _applicationDbContext.SaveChangesAsync();
				return RedirectToAction("Index");
			}
			ViewBag.ParentCategoryIdSelectList = PopulateParentCategorySelectList(categoryViewModel.Id);
			return View(categoryViewModel);
		}
Ejemplo n.º 15
0
 public void AddCategorie(CategorieActivite a)
 {
     _listCategorieActivite.Add(a);
 }
Ejemplo n.º 16
0
        // lecture xml et generation objets
        public void chargerXml(XmlDocument xmlDoc, Mission M)
        {
            XmlNodeList nodelistMission = xmlDoc.GetElementsByTagName("Mission");

            List<Astronaute> listAstronautes = new List<Astronaute>();
            List<CategorieActivite> listCategorieActivite = new List<CategorieActivite>();

            foreach (XmlNode nodeMission in nodelistMission)
            {

                XmlNodeList nodelistAstronautes = nodeMission.SelectNodes("Liste_Astronaute");
                foreach (XmlNode nodeAstronautes in nodelistAstronautes)
                {
                    XmlNodeList nodelistAstronaute = xmlDoc.GetElementsByTagName("Astronaute");

                    string nom = "";
                    int id = 0;

                    foreach (XmlNode nodeAstronaute in nodelistAstronaute)
                    {
                        id = int.Parse(nodeAstronaute.SelectSingleNode("Id").InnerText);
                        nom = nodeAstronaute.SelectSingleNode("Nom").InnerText;
                        Astronaute a = new Astronaute(id, nom);
                        M._listAstronautes.Add(a);
                    }
                }

                XmlNodeList nodelistCategorieActivite = nodeMission.SelectNodes("Liste_Catégorie_Activité");
                foreach (XmlNode nodeCategorieActivite in nodelistCategorieActivite)
                {
                    XmlNodeList nodelisteCategorieActivite = nodeCategorieActivite.SelectNodes("Catégorie_Activité");

                    foreach (XmlNode nodeCategoriedActivite in nodelisteCategorieActivite)
                    {
                        string nom = "";

                        List<Activite> listActivite = new List<Activite>();

                        nom = nodeCategoriedActivite.SelectSingleNode("NomCatégorie").InnerText;

                        XmlNodeList nodelistActivite = nodeCategoriedActivite.SelectNodes("Liste_Activité");
                        foreach (XmlNode nodeActivite in nodelistActivite)
                        {
                            string nome = "";

                            XmlNodeList nodelisteActivite = nodeActivite.SelectNodes("Activité");
                            foreach (XmlNode nodeActivitee in nodelisteActivite)
                            {
                                nome = nodeActivitee.SelectSingleNode("NomActivité").InnerText;
                                Activite act = new Activite(nome);
                                listActivite.Add(act);
                            }

                        }

                        CategorieActivite c = new CategorieActivite(nom, listActivite);
                        M.AddCategorie(c);
                    }
                }
            }

            M.Listcat = Listcat;
        }
Ejemplo n.º 17
0
        //INITIALISATION DE LA MISSION//
        /// <summary>
        /// Ici sont chargés les fichiers XML et instanciés les objets de la classe "Mission"
        /// </summary>
        public GestionMission()
        {
            InitializeComponent();
            try
            {
                xmlDoc.Load(@"..\\..\\..\\sauvegarde1.xml");
                M.chargerXml(xmlDoc, M);

                xmlDoc2.Load(@"..\\..\\..\\sauvegarde2.xml");
                M.chargerXml2(xmlDoc2, M);

                M.Calendar.MiseAJour();//Pour remettre les pendules à l'heure

                Maj(new Object(), new EventArgs());
            }
            catch
            {
                MessageBox.Show("Initialisation Mission", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

                // Initialisation des paramètres de base pour une mission

                CalendrierMartien c = new CalendrierMartien();

                List<Activite> VieCourante_act = new List<Activite>();
                Activite manger = new Activite("Eating");
                Activite dormir = new Activite("Sleeping");
                Activite divertissement = new Activite("Entertainment");
                Activite privé = new Activite("Private");
                Activite ctrlSante = new Activite("Health control");
                Activite actmedical = new Activite("Medical act");
                VieCourante_act.Add(manger);
                VieCourante_act.Add(dormir);
                VieCourante_act.Add(divertissement);
                VieCourante_act.Add(privé);
                VieCourante_act.Add(ctrlSante);
                VieCourante_act.Add(actmedical);
                CategorieActivite VieCourante = new CategorieActivite("Living", VieCourante_act);

                List<Activite> Science_act = new List<Activite>();
                Activite exploCost = new Activite("Exploration Space suit");
                Activite exploVeh = new Activite("Exploration Vehicule");
                Activite briefing = new Activite("Briefing");
                Activite debriefing = new Activite("Debriefing");
                Activite Expint = new Activite("Inside experiment");
                Activite Expext = new Activite("Outside experiment");
                Science_act.Add(exploCost);
                Science_act.Add(exploVeh);
                Science_act.Add(briefing);
                Science_act.Add(debriefing);
                Science_act.Add(Expint);
                Science_act.Add(Expext);
                CategorieActivite Science = new CategorieActivite("Science", Science_act);

                List<Activite> Maintenance_act = new List<Activite>();
                Activite nettoyage = new Activite("Cleaning");
                Activite LSSair = new Activite("LSS air system");
                Activite LSSeau = new Activite("LSS water system");
                Activite LSSnour = new Activite("LSS food system");
                Activite powsyst = new Activite("Power systems");
                Activite comb = new Activite("Space suit");
                Activite autre = new Activite("Other");
                Maintenance_act.Add(nettoyage);
                Maintenance_act.Add(LSSair);
                Maintenance_act.Add(LSSeau);
                Maintenance_act.Add(LSSnour);
                Maintenance_act.Add(powsyst);
                Maintenance_act.Add(comb);
                Maintenance_act.Add(autre);
                CategorieActivite Maintenance = new CategorieActivite("Maintenance", Maintenance_act);

                List<Activite> Communication_act = new List<Activite>();
                Activite RecMess = new Activite("Sending message");
                Activite EncMess = new Activite("Receiving message");
                Communication_act.Add(RecMess);
                Communication_act.Add(EncMess);
                CategorieActivite Communication = new CategorieActivite("Communication", Communication_act);

                List<Activite> Reparation_act = new List<Activite>();
                Activite LSS = new Activite("LSS");
                Activite communication = new Activite("Communication");
                Activite propSyst = new Activite("Propulsion systems");
                Activite habitation = new Activite("Habitat");
                Activite vehicule = new Activite("Vehicule");
                Reparation_act.Add(LSS);
                Reparation_act.Add(powsyst);
                Reparation_act.Add(communication);
                Reparation_act.Add(propSyst);
                Reparation_act.Add(habitation);
                Reparation_act.Add(comb);
                Reparation_act.Add(vehicule);
                CategorieActivite Reparation = new CategorieActivite("Reparation", Reparation_act);

                List<Activite> Emergency_act = new List<Activite>();
                Activite urgence = new Activite("Emergency");
                Emergency_act.Add(urgence);
                CategorieActivite Urgence = new CategorieActivite("Emergency");

                //Journée type par défaut :
                for (int i = 1; i < 501; i++)
                {
                    Jour j = new Jour(i);

                    j.AddAct(new Activite("Sleeping", new Heure(0, 0), new Heure(7, 0), "Un repos bien mérité !"));
                    j.AddAct(new Activite("Eating", new Heure(7, 0), new Heure(8, 0), "Manger c'est important"));
                    j.AddAct(new Activite("Private", new Heure(8, 0), new Heure(12, 0), ""));
                    j.AddAct(new Activite("Eating", new Heure(12, 0), new Heure(14, 0), "Manger c'est important"));
                    j.AddAct(new Activite("Private", new Heure(14, 0), new Heure(19, 0), ""));
                    j.AddAct(new Activite("Eating", new Heure(19, 0), new Heure(21, 0), "Manger c'est important"));
                    j.AddAct(new Activite("Private", new Heure(21, 0), new Heure(23, 0), ""));
                    j.AddAct(new Activite("Sleeping", new Heure(23, 0), new Heure(24, 40), "Un repos bien mérité !"));

                    c.AddJours(j);
                }

                //Ajout du calendrier et des activités à la mission :

                M.Calendar = c;

                M.AddCategorie(VieCourante);
                M.AddCategorie(Science);
                M.AddCategorie(Maintenance);
                M.AddCategorie(Communication);
                M.AddCategorie(Reparation);
                M.AddCategorie(Urgence);

                // Initialisation des astronautes :

                List<Astronaute> ListAtr = new List<Astronaute>();
                Astronautes InitAstr = new Astronautes();

                InitAstr.ShowDialog();

                M.ListAstr = InitAstr.Astro();
                InitAstr.BringToFront();
            }
            timer1.Start();
            dureMission.Maximum = 500;
            trackBar1.Maximum = 9; //Permet l'affichage des jours de 50 en 50
            trackBar1_Scroll(new Object(), new EventArgs()); //Pour différencier les jours d'un scroll à l'autre
        }
Ejemplo n.º 18
0
        public static void Seed(ApplicationDbContext context)
        {
            try
            {
                ApplicationUser adminUser;

                #region Admin user
                var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
                userManager.UserValidator = new UserValidator <ApplicationUser>(userManager)
                {
                    AllowOnlyAlphanumericUserNames = true,
                    RequireUniqueEmail             = true
                };
                var roleManager = new RoleManager <ApplicationRole>(new RoleStore <ApplicationRole>(new ApplicationDbContext()));

                string name      = "*****@*****.**";
                string password  = "******";
                string firstname = "Admin";
                string lastName  = "Association";
                string roleName  = "Admin";

                var role = roleManager.FindByName(roleName);
                if (role == null)
                {
                    role = new ApplicationRole(roleName);
                    var roleResult = roleManager.Create(role);
                }

                adminUser = userManager.FindByName(name);
                if (adminUser == null)
                {
                    adminUser = new ApplicationUser {
                        UserName = name, Email = name, FirstName = firstname, LastName = lastName
                    };
                    var userResult = userManager.Create(adminUser, password);
                    var result     = userManager.SetLockoutEnabled(adminUser.Id, false);
                }

                var rolesForUser = userManager.GetRoles(adminUser.Id);

                if (!rolesForUser.Contains(role.Name))
                {
                    var result = userManager.AddToRole(adminUser.Id, role.Name);
                }
                #endregion

                // --------------------------------------------------------------------
                // Data
                // ---

                #region CategorieActivite
                // --------------------------------------------------------------------
                // CategorieActivite
                // ---
                string nomcatDanse = "Cours de danse";
                context.CategoriesActivite.AddOrUpdate(c => c.CategorieActiviteNom,
                                                       new CategorieActivite
                {
                    CategorieActiviteNom = nomcatDanse,
                    ParentId             = null
                });
                context.CategoriesActivite.AddOrUpdate(c => c.CategorieActiviteNom,
                                                       new CategorieActivite
                {
                    CategorieActiviteNom = "Ateliers",
                    ParentId             = null
                });
                context.SaveChanges();
                CategorieActivite catDanseParent = context.CategoriesActivite.First(c => c.CategorieActiviteNom == nomcatDanse);


                string nomCatDanseContemporaine = "Danse contemporaine";
                context.CategoriesActivite.AddOrUpdate(c => c.CategorieActiviteNom,
                                                       new CategorieActivite
                {
                    CategorieActiviteNom = nomCatDanseContemporaine,
                    ParentId             = catDanseParent.Id
                });

                string nomCatZumba = "Zumba";
                context.CategoriesActivite.AddOrUpdate(c => c.CategorieActiviteNom,
                                                       new CategorieActivite
                {
                    CategorieActiviteNom = nomCatZumba,
                    ParentId             = catDanseParent.Id
                });
                context.SaveChanges();
                #endregion
                CategorieActivite catZumba = context.CategoriesActivite.First(c => c.CategorieActiviteNom == nomCatZumba);
                CategorieActivite catDanse = context.CategoriesActivite.First(c => c.CategorieActiviteNom == nomCatDanseContemporaine);

                #region Lieux
                // --------------------------------------------------------------------
                // Lieux
                // ---
                string lieuCDH = "CDH";
                context.Lieux.AddOrUpdate(l => l.LieuCode,
                                          new Lieu
                {
                    LieuNom    = "Château de l'Horloge",
                    LieuCode   = lieuCDH,
                    Adresse    = "50 Place Du Château de l'Horloge",
                    Adresse2   = "Jas de Bouffan",
                    CodePostal = "13090",
                    Ville      = "Aix-en-Provence"
                });

                string lieuBEL = "BEL";
                context.Lieux.AddOrUpdate(l => l.LieuCode,
                                          new Lieu
                {
                    LieuNom    = "Espace Jeunesse Bellegarde",
                    LieuCode   = lieuBEL,
                    Adresse    = "37 Boulevard Aristide Briand",
                    CodePostal = "13100",
                    Ville      = "Aix-en-Provence"
                });

                context.SaveChanges();
                #endregion
                Lieu cdh = context.Lieux.First(l => l.LieuCode == lieuCDH);
                Lieu bel = context.Lieux.First(l => l.LieuCode == lieuBEL);

                #region Activités
                // --------------------------------------------------------------------
                // Activités
                // ---
                context.Activites.AddOrUpdate(a => a.ActiviteCode,
                                              new Activite
                {
                    ActiviteCode        = "DANSE-BEL-1",
                    ActiviteNom         = "Danse contemporaine 4-6 ans Bellegarde",
                    CategorieActiviteId = catDanse.Id,
                    DateDebut           = new DateTime(2014, 09, 04),
                    DateFin             = new DateTime(2015, 07, 01),
                    Planification       = new Planification
                    {
                        Jour       = JourSemaine.Jeudi,
                        HeureDebut = TimeSpan.FromHours(17),
                        HeureFin   = TimeSpan.FromHours(18)
                    },
                    LieuId = bel.LieuId,
                });

                context.Activites.AddOrUpdate(a => a.ActiviteCode,
                                              new Activite
                {
                    ActiviteCode        = "DANSE-BEL-2",
                    ActiviteNom         = "Danse contemporaine 7-9 ans Bellegarde",
                    CategorieActiviteId = catDanse.Id,
                    DateDebut           = new DateTime(2014, 09, 04),
                    DateFin             = new DateTime(2015, 07, 01),
                    Planification       = new Planification
                    {
                        Jour       = JourSemaine.Jeudi,
                        HeureDebut = TimeSpan.FromHours(18),
                        HeureFin   = TimeSpan.FromHours(19)
                    },
                    LieuId = bel.LieuId,
                });

                context.Activites.AddOrUpdate(a => a.ActiviteCode,
                                              new Activite
                {
                    ActiviteCode        = "ZUMBA-BEL",
                    ActiviteNom         = "Zumba Bellegarde",
                    CategorieActiviteId = catZumba.Id,
                    DateDebut           = new DateTime(2014, 09, 04),
                    DateFin             = new DateTime(2015, 07, 01),
                    Planification       = new Planification
                    {
                        Jour       = JourSemaine.Jeudi,
                        HeureDebut = TimeSpan.FromHours(20),
                        HeureFin   = TimeSpan.FromHours(21)
                    },
                    LieuId = bel.LieuId,
                });

                context.Activites.AddOrUpdate(a => a.ActiviteCode,
                                              new Activite
                {
                    ActiviteCode        = "ZUMBA-CDH",
                    ActiviteNom         = "Zumba",
                    CategorieActiviteId = catZumba.Id,
                    DateDebut           = new DateTime(2014, 09, 01),
                    DateFin             = new DateTime(2015, 07, 01),
                    Planification       = new Planification
                    {
                        Jour       = JourSemaine.Lundi,
                        HeureDebut = TimeSpan.FromHours(19),
                        HeureFin   = TimeSpan.FromHours(20)
                    },
                    LieuId = cdh.LieuId,
                });
                context.SaveChanges();
                #endregion
                Activite zumbaCDH  = context.Activites.First(a => a.ActiviteCode == "ZUMBA-CDH");
                Activite zumbaBEL  = context.Activites.First(a => a.ActiviteCode == "ZUMBA-BEL");
                Activite danseBEL1 = context.Activites.First(a => a.ActiviteCode == "DANSE-BEL-1");
                Activite danseBEL2 = context.Activites.First(a => a.ActiviteCode == "DANSE-BEL-2");

                #region Formules
                // --------------------------------------------------------------------
                // Formules
                // ---
                context.Formules.AddOrUpdate(f => new { f.FormuleNom, f.ActiviteId },
                                             new Formule
                {
                    ActiviteId = zumbaCDH.ActiviteId,
                    FormuleNom = "Abonnement annuel",
                    IsActive   = true,
                    Tarif      = 135
                });
                context.Formules.AddOrUpdate(f => new { f.FormuleNom, f.ActiviteId },
                                             new Formule
                {
                    ActiviteId = zumbaBEL.ActiviteId,
                    FormuleNom = "Abonnement annuel",
                    IsActive   = true,
                    Tarif      = 135
                });
                context.Formules.AddOrUpdate(f => new { f.FormuleNom, f.ActiviteId },
                                             new Formule
                {
                    ActiviteId = zumbaBEL.ActiviteId,
                    FormuleNom = "Abonnement semestre",
                    IsActive   = true,
                    Tarif      = 80
                });
                context.Formules.AddOrUpdate(f => new { f.FormuleNom, f.ActiviteId },
                                             new Formule
                {
                    ActiviteId = danseBEL1.ActiviteId,
                    FormuleNom = "Abonnement annuel",
                    IsActive   = true,
                    Tarif      = 230
                });
                context.Formules.AddOrUpdate(f => new { f.FormuleNom, f.ActiviteId },
                                             new Formule
                {
                    ActiviteId = danseBEL2.ActiviteId,
                    FormuleNom = "Abonnement annuel",
                    IsActive   = true,
                    Tarif      = 230
                });
                context.SaveChanges();
                #endregion
                Formule   aboZumbaCDH         = context.Formules.First(f => f.ActiviteId == zumbaCDH.ActiviteId);
                Formule   abozumbaBEL         = context.Formules.First(f => f.ActiviteId == zumbaBEL.ActiviteId && f.FormuleNom == "Abonnement annuel");
                Formule   abozumbaBELSemestre = context.Formules.First(f => f.ActiviteId == zumbaBEL.ActiviteId && f.FormuleNom == "Abonnement semestre");
                Formule   abodanseBEL1        = context.Formules.First(f => f.ActiviteId == danseBEL1.ActiviteId);
                Formule   abodanseBEL2        = context.Formules.First(f => f.ActiviteId == danseBEL2.ActiviteId);
                Formule[] formules            = context.Formules.ToArray();

                const int numAdherents = 0;                 //1000;
                #region Adherents
                if (context.Adherents.Any() == false)
                {
                    for (int i = 1; i <= numAdherents; i++)
                    {
                        context.Adherents.Add(new Adherent
                        {
                            AdherentNom       = Lorem.Words(1).Limit(30),
                            AdherentPrenom    = Lorem.Words(1, Lorem.Chance(1, 20) ? 2 : 1).Limit(30),
                            Adresse           = (Lorem.Number(1, 1000) + " " + Lorem.Sentence(2, 5)).Limit(150),
                            Adresse2          = (Lorem.Chance(20, 100) ? Lorem.Words(2, 5) : "").Limit(150),
                            CertificatMedical = Lorem.Chance(80, 100),
                            CodePostal        = Lorem.Number(10000, 95999).ToString(),
                            //EditeurCourantId = adminUser.Id,
                            EMail            = Lorem.Email().Limit(80),
                            Notes            = Lorem.Chance(10, 100) ? Lorem.Paragraph(20, 2).Limit(150) : "",
                            Statut           = Lorem.Enum <StatutAdherent>(),
                            Telephone        = "0" + Lorem.Number(100000000, 999999999).ToString(),
                            Ville            = Lorem.Words(1, 4).Limit(150),
                            DateCreation     = DateTime.Now,
                            DateModification = DateTime.Now,
                            DateResiliation  = null
                        });
                        context.SaveChanges();

                        #region Abonnements
                        Adherent adh = context.Adherents.Find(i);
                        adh.Abonnements = new List <Abonnement>();
                        Formule firstFormule = Lorem.Random(formules);
                        AddAbonnement(context, adh, firstFormule);
                        if (Lorem.Chance(1, 50))                         // multiple formules
                        {
                            Formule secondFormule = Lorem.Random(formules);
                            if (secondFormule.FormuleId != firstFormule.FormuleId)                             // ensure it is distinct
                            {
                                AddAbonnement(context, adh, secondFormule);
                            }
                        }
                        context.SaveChanges();
                        #endregion

                        #region Reglement
                        foreach (Abonnement abo in adh.Abonnements)
                        {
                            if (Lorem.Chance(95, 100))
                            {
                                switch (abo.TypeReglement)
                                {
                                case TypeReglement.Especes:
                                    context.Reglements.Add(new Reglement {
                                        AdherentId = adh.AdherentId, Montant = abo.Formule.Tarif, IsAdhesionIncluse = true
                                    });
                                    break;

                                case TypeReglement.Cheque_Comptant:

                                    AddReglementCheque(context, adh, abo, 1);
                                    break;

                                case TypeReglement.Cheque_3Fois:
                                    AddReglementCheque(context, adh, abo, 3);
                                    break;
                                    break;
                                }

                                context.SaveChanges();
                            }
                        }
                        #endregion
                    }
                }
                #endregion

                #region Intervenants
                string numSecu1 = Lorem.Number(100000000000000, 299999999999999).ToString();
                string numSecu2 = Lorem.Number(100000000000000, 299999999999999).ToString();
                context.Intervenants.AddOrUpdate(i => i.NumeroSecuriteSociale, new Intervenant
                {
                    IntervenantNom        = Lorem.Words(1).Limit(50),
                    IntervenantPrenom     = Lorem.Words(1).Limit(50),
                    NumeroSecuriteSociale = numSecu1
                });
                context.Intervenants.AddOrUpdate(i => i.NumeroSecuriteSociale, new Intervenant
                {
                    IntervenantNom        = Lorem.Words(1).Limit(50),
                    IntervenantPrenom     = Lorem.Words(1).Limit(50),
                    NumeroSecuriteSociale = numSecu2
                });
                context.SaveChanges();
                #endregion
                Intervenant int1 = context.Intervenants.First(i => i.NumeroSecuriteSociale == numSecu1);

                #region Missions
                context.Missions.AddOrUpdate(m => new { m.ActiviteId, m.IntervenantId }, new Mission
                {
                    ActiviteId     = zumbaCDH.ActiviteId,
                    IntervenantId  = int1.IntervenantId,
                    DateDebut      = zumbaCDH.DateDebut,
                    DateFin        = zumbaCDH.DateFin,
                    Description    = "Instructeur Zumba",
                    SalaireHoraire = 20
                });
                context.Missions.AddOrUpdate(m => new { m.ActiviteId, m.IntervenantId }, new Mission
                {
                    ActiviteId     = zumbaBEL.ActiviteId,
                    IntervenantId  = int1.IntervenantId,
                    DateDebut      = zumbaBEL.DateDebut,
                    DateFin        = zumbaBEL.DateFin,
                    Description    = "Instructeur Zumba",
                    SalaireHoraire = 20
                });
                context.SaveChanges();
                #endregion
            }
            catch (Exception e)
            {
                if (e is System.Data.Entity.Validation.DbEntityValidationException)
                {
                }
                // Uncomment to debug seed
                if (System.Diagnostics.Debugger.IsAttached == false)
                {
                    System.Diagnostics.Debugger.Launch();
                }

                throw;
            }
        }