public ActionResult Create(BenevoleCreateViewModel vm) { Benevole b = new Benevole() { Nom = vm.Nom, Prenom = vm.Prenom, Permis = vm.Permis, Commentaire = vm.Commentaire, Email = vm.Email, Tel = vm.Tel }; db.Benevoles.Add(b); foreach (CreneauDef c in db.CreneauDefs) { Dispo d = new Dispo() { CreneauDef = c, EstDispo = vm.Jours.Any(j => j.IsSelected && c.JourEvenement.Id == j.Id), ModifManuel = false }; b.Dispoes.Add(d); } db.SaveChanges(); return(RedirectToAction("Index")); }
// GET: Benevoles/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Benevole benevole = db.Benevoles.Include("Dispoes.CreneauDef.JourEvenement").First(s => s.Id == id); if (benevole == null) { return(HttpNotFound()); } benevole.FillDispoByDayFromDb(); var dico = new Dictionary <int, JourEvenement>(); var coms = new Dictionary <int, string>(); ViewBag.Jours = db.JourEvenements.OrderBy(j => j.Ordre).ToList(); foreach (var j in ViewBag.Jours) { var strDispo = benevole.CommentaireDispoes.FirstOrDefault(s => s.JourId == j.Id); coms.Add(j.Id, strDispo == null ? "" : strDispo.Commentaire); } ViewBag.Coms = coms; var nextBenevole = db.Benevoles.OrderBy(s => s.Id).FirstOrDefault(s => s.Id > benevole.Id); if (nextBenevole == null) { nextBenevole = db.Benevoles.OrderBy(s => s.Id).First(); } ViewBag.NextBenId = nextBenevole.Id; return(View(benevole)); }
protected bool IsBenevoleAllowed(Benevole benevole) { if (benevole == null) { throw new ArgumentNullException(nameof(benevole)); } return(IsCentreIdAllowed(benevole.CurrentAdresse.CentreID)); }
// GET: Benevoles/Details/5 public ActionResult Details(int?id) { Benevole benevole = db.Benevoles.Find(id); if (benevole == null) { return(HttpNotFound()); } return(View(benevole)); }
public ActionResult Edit(int id, [Bind(Include = "DisposByDays")] Benevole b) { Benevole benevole = db.Benevoles.Include("Dispoes.CreneauDef.JourEvenement").First(s => s.Id == id); if (ModelState.IsValid) { Regex r = new Regex(@"\[([0-9]+)\]"); foreach (var key in Request.Form.AllKeys.Where(k => k.Contains("DisposByDays"))) { var m = r.Match(key); int jourId = int.Parse(m.Groups[0].Captures[0].Value.Trim(new char[] { '[', ']' })); m = m.NextMatch(); int noCreneau = int.Parse(m.Groups[0].Captures[0].Value.Trim(new char[] { '[', ']' })); var val = Request.Form[key].ToString().ToLower(); bool isDispo = val.Contains("true"); Dispo d = benevole.Dispoes.First(s => s.CreneauDef.NoCreneau == noCreneau && s.CreneauDef.JourId == jourId); if (d.EstDispo != isDispo) { d.EstDispo = isDispo; d.ModifManuel = true; } } db.SaveChanges(); return(RedirectToAction("Index")); } benevole.FillDispoByDayFromDb(); var dico = new Dictionary <int, JourEvenement>(); var coms = new Dictionary <int, string>(); foreach (var j in db.JourEvenements) { var strDispo = benevole.CommentaireDispoes.FirstOrDefault(s => s.JourId == j.Id); dico.Add(j.Id, j); coms.Add(j.Id, strDispo == null ? "" : strDispo.Commentaire); } ViewBag.Jours = dico; ViewBag.Coms = coms; var nextBenevole = db.Benevoles.OrderBy(s => s.Id).First(s => s.Id > benevole.Id); if (nextBenevole == null) { nextBenevole = db.Benevoles.OrderBy(s => s.Id).First(); } ViewBag.NextBenId = nextBenevole.Id; return(View(benevole)); }
public void SeedData() { this.Database.Migrate(); if (this.Utilisateurs.Count() == 0) { var seedDevData = Environment.GetEnvironmentVariable("APP_GENERATE_DEV_DATA"); var adminPassword = Environment.GetEnvironmentVariable("APP_ADMIN_PASSWORD"); if (!string.IsNullOrEmpty(seedDevData) && (seedDevData == "1" || seedDevData.ToLower() == "true")) { // ****** Sièges var siege75 = new Siege { Nom = "AD75", Adresse = "rue du siège 75000 PARIS", }; this.Sieges.Add(siege75); // ****** Centres var centre_paris = new Centre { Nom = "Paris", Adresse = "5 rue de Paris 75000 PARIS", Siege = siege75, }; this.Centres.Add(centre_paris); var centre = new Centre { Nom = "Lyon", Adresse = "5 rue de Lyon 69000 Lyon", Siege = siege75, }; this.Centres.Add(centre); // ****** Utilisateurs var testadmin = new Utilisateur { Centre = null, Login = "******", }; if (string.IsNullOrEmpty(adminPassword)) { adminPassword = "******"; } testadmin.SetPassword(adminPassword); this.Utilisateurs.Add(testadmin); var adminparis = new Utilisateur { Centre = centre_paris, Login = "******", }; adminparis.SetPassword("adminparis"); this.Utilisateurs.Add(adminparis); // ****** Bénévoles var benevole1 = new Benevole { Prenom = "Bernard", Nom = "TOTO", Telephone = "00000000", Adresses = new List <Adresse> { new Adresse { Centre = centre, AdresseLigne1 = "1 rue de david", CodePostal = "69000", Ville = "Lyon", DistanceCentre = 80, }, new Adresse { DateChangement = new DateTime(2017, 2, 1), Centre = centre, AdresseLigne1 = "26 rue de david", CodePostal = "69000", Ville = "Lyon", DistanceCentre = 84, }, new Adresse { DateChangement = new DateTime(2017, 3, 1), Centre = centre_paris, AdresseLigne1 = "1 rue de jules", CodePostal = "75005", Ville = "Paris", DistanceCentre = 65, IsCurrent = true, } }, }; this.Benevoles.Add(benevole1); this.Benevoles.Add(new Benevole { Prenom = "Anne", Nom = "TUTU", Telephone = "00000000", Adresses = new List <Adresse> { new Adresse { Centre = centre, AdresseLigne1 = "1 rue d'anne", CodePostal = "13000", Ville = "Marseille", DistanceCentre = 10, IsCurrent = true, } } }); this.Benevoles.Add(new Benevole { Prenom = "Gérard", Nom = "TITI", Telephone = "00000000", Adresses = new List <Adresse> { new Adresse { Centre = centre_paris, AdresseLigne1 = "1 rue de gérard", CodePostal = "75015", Ville = "Paris", DistanceCentre = 65.5m, IsCurrent = true, } } }); this.Benevoles.Add(new Benevole { Prenom = "Daniel", Nom = "ROBERT", Telephone = "00000000", Adresses = new List <Adresse> { new Adresse { Centre = centre_paris, AdresseLigne1 = "1 rue de daniel", CodePostal = "78000", Ville = "Cergy", DistanceCentre = 80, IsCurrent = true, } } }); // ****** Pointages this.Pointages.Add(new Pointage { Benevole = benevole1, Adresse = benevole1.Adresses.First(), Date = new DateTime(2017, 1, 15), NbDemiJournees = 2, }); this.Pointages.Add(new Pointage { Benevole = benevole1, Adresse = benevole1.Adresses.Skip(1).First(), Date = new DateTime(2017, 2, 28), NbDemiJournees = 2, }); this.Pointages.Add(new Pointage { Benevole = benevole1, Adresse = benevole1.Adresses.Skip(2).First(), Date = new DateTime(2017, 03, 03), NbDemiJournees = 1, }); this.Pointages.Add(new Pointage { Benevole = benevole1, Adresse = benevole1.Adresses.Skip(2).First(), Date = new DateTime(2017, 03, 05), NbDemiJournees = 1, }); } else { // ****** Siège var siege = new Siege { Nom = "AD68", Adresse = "9 avenue d’Italie 68110 ILLZACH", }; this.Sieges.Add(siege); // ****** Utilisateurs var admin = new Utilisateur { Centre = null, Login = "******", }; if (string.IsNullOrEmpty(adminPassword)) { adminPassword = "******"; } admin.SetPassword(adminPassword); this.Utilisateurs.Add(admin); } // ****** Frais this.Frais.Add(new Frais { Annee = 2017, TauxKilometrique = 0.308m, }); this.Frais.Add(new Frais { Annee = 2018, TauxKilometrique = 0.308m, }); this.SaveChanges(); } }
public async Task <IActionResult> Edit(int id, [Bind("ID,Nom,Prenom,Telephone,CentreID")] Benevole benevole) { if (id != benevole.ID) { return(NotFound("Les identifiants ne correspondent pas")); } var existing = _context.Benevoles.Include(b => b.Adresses) .SingleOrDefault(b => b.ID == id); if (existing == null) { return(NotFound("Le bénévole n'existe pas")); } var adresse = existing.Adresses.SingleOrDefault(a => a.IsCurrent); if (adresse == null) { return(NotFound("Aucune adresse actuelle pour le bénévole")); } if (!_context.ContainsCentre(adresse.CentreID)) { ModelState.AddModelError("CentreID", "Le centre n'existe pas"); } var user = GetCurrentUser(); if (user.Centre != null) { if (adresse.CentreID != user.Centre.ID) { ModelState.AddModelError("CentreID", "Vous ne pouvez pas créer de bénévole sur un autre centre que celui qui vous est affecté"); } } if (!ModelState.IsValid) { return(View(benevole)); } try { existing.Nom = benevole.Nom; existing.Prenom = benevole.Prenom; existing.Telephone = benevole.Telephone; _context.Update(existing); await _context.SaveChangesAsync(); LogInfo("Benevole #{BenevoleID} ({BenevolePrenom} {BenevoleNom}) modifié", benevole.ID, benevole.Prenom, benevole.Nom); SetGlobalMessage("Le bénévole a été modifié avec succès", EGlobalMessageType.Success); } catch (DbUpdateConcurrencyException) { if (!BenevoleExists(benevole.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); }
public ActionResult ImportBenevolePost() { if (ModelState.IsValid && Request.Files.Count == 1) { var list = new List <GoogleDriveResult>(); using (var workbook = new XLWorkbook(Request.Files[0].InputStream)) { var ws = workbook.Worksheet(1); int i = 2; var row = ws.Row(i); while (!row.IsEmpty()) { int j = 2; GoogleDriveResult g = new GoogleDriveResult(); g.Nom = row.Cell(j++).GetValue <string>(); g.Prenom = row.Cell(j++).GetValue <string>(); g.Telephone = row.Cell(j++).GetValue <string>(); g.Mail = row.Cell(j++).GetValue <string>().Trim().ToLower(); g.Permis = row.Cell(j++).GetValue <string>(); g.Majeur = row.Cell(j++).GetValue <string>(); g.DispoCampus = row.Cell(j++).GetValue <string>(); g.CommentaireCampus = row.Cell(j++).GetValue <string>(); g.DispoMercredi = row.Cell(j++).GetValue <string>(); g.CommentaireMercredi = row.Cell(j++).GetValue <string>(); g.DispoJeudi = row.Cell(j++).GetValue <string>(); g.CommentaireJeudi = row.Cell(j++).GetValue <string>(); g.DispoVendredi = row.Cell(j++).GetValue <string>(); g.CommentaireVendredi = row.Cell(j++).GetValue <string>(); g.DispoSamedi = row.Cell(j++).GetValue <string>(); g.CommentaireSamedi = row.Cell(j++).GetValue <string>(); g.DispoDimanche = row.Cell(j++).GetValue <string>(); g.CommentaireDimanche = row.Cell(j++).GetValue <string>(); g.DispoLundi = row.Cell(j++).GetValue <string>(); g.CommentaireLundi = row.Cell(j++).GetValue <string>(); j += 2; g.Preference = row.Cell(j++).GetValue <string>(); g.NonPreference = row.Cell(j++).GetValue <string>(); g.PrecisionGeneral = row.Cell(j++).GetValue <string>(); string valid = row.Cell(j++).GetValue <string>().Trim(); if (valid == "1") { list.Add(g); } i++; row = ws.Row(i); } } //Creation Bénévoles foreach (var g in list) { Benevole b = db.Benevoles.FirstOrDefault(s => s.Email.Trim().ToLower() == g.FormatedMail); if (b == null) { b = new Benevole(); db.Benevoles.Add(b); b.Email = g.FormatedMail; } b.Nom = UppercaseFirst(g.FormatedNom.Trim()); b.Prenom = UppercaseFirst(g.FormatedPrenom.Trim()); b.Tel = g.FormatedTel; b.Permis = g.APermis; b.Majeur = g.EstMajeur; b.Commentaire = g.PrecisionGeneral; } db.SaveChanges(); //Gestion des preferences foreach (var g in list) { Benevole b = db.Benevoles.Include("Preferences").First(s => s.Email.Trim().ToLower() == g.FormatedMail); foreach (var kv in g.Prefs) { Preference p = b.Preferences.FirstOrDefault(s => s.TypeTacheId == ((int)kv.Key) && s.BenevoleId == b.Id); if (p == null) { p = new Preference(); db.Preferences.Add(p); p.TypeTacheId = (int)kv.Key; p.BenevoleId = b.Id; } p.Valeur = kv.Value; db.SaveChanges(); } } db.SaveChanges(); //Gestion des dispo foreach (var g in list) { Benevole b = db.Benevoles.Include("Dispoes").First(s => s.Email.Trim().ToLower() == g.FormatedMail); foreach (var c in db.CreneauDefs.Include("JourEvenement")) { Dispo d = b.Dispoes.FirstOrDefault(s => s.CreneauDefId == c.Id && s.BenevoleId == b.Id); if (d == null) { d = new Dispo(); db.Dispoes.Add(d); d.CreneauDefId = c.Id; d.BenevoleId = b.Id; d.ModifManuel = false; } if (!d.ModifManuel) { string dispoTxt; switch (c.JourEvenement.Nom.Trim().ToLower()) { case "mercredi": dispoTxt = g.DispoMercredi; break; case "jeudi": dispoTxt = g.DispoJeudi; break; case "vendredi": dispoTxt = g.DispoVendredi; break; case "samedi": dispoTxt = g.DispoSamedi; break; case "dimanche": dispoTxt = g.DispoDimanche; break; default: throw new ArgumentException("c.JourEvenement.Nom"); } d.EstDispo = isDispo(dispoTxt, c); } } db.SaveChanges(); } db.SaveChanges(); //Gestion des commentaire dispo foreach (var g in list) { Benevole b = db.Benevoles.Include("Dispoes").First(s => s.Email.Trim().ToLower() == g.FormatedMail); foreach (var j in db.JourEvenements) { CommentaireDispo c = b.CommentaireDispoes.FirstOrDefault(s => s.JourId == j.Id && s.BenevoleId == b.Id); if (c == null) { c = new CommentaireDispo(); b.CommentaireDispoes.Add(c); c.JourId = j.Id; c.BenevoleId = b.Id; } string dispoTxt; switch (j.Nom.Trim().ToLower()) { case "mercredi": dispoTxt = g.CommentaireMercredi; break; case "jeudi": dispoTxt = g.CommentaireJeudi; break; case "vendredi": dispoTxt = g.CommentaireVendredi; break; case "samedi": dispoTxt = g.CommentaireSamedi; break; case "dimanche": dispoTxt = g.CommentaireDimanche; break; default: throw new ArgumentException(j.Nom); } c.Commentaire = dispoTxt.Trim(); } } db.SaveChanges(); } return(View()); }
private static void FillBenevole(IXLWorksheet sheet, FestivArtsContext ctx, ref int row, Benevole b, IEnumerable <Affectation> affectations, IEnumerable <Dispo> dispos, IEnumerable <CreneauDef> creneaux, IEnumerable <Benevole> listeBenevole, bool readable) { var aff = new Dictionary <int, List <Affectation> >(); var disp = new Dictionary <int, Dispo>(); foreach (var a in affectations) { if (!aff.ContainsKey(a.Creneau.CreneauDefId)) { aff.Add(a.Creneau.CreneauDefId, new List <Affectation>()); } aff[a.Creneau.CreneauDefId].Add(a); } foreach (var s in dispos) { disp.Add(s.CreneauDefId, s); } IXLRow r = sheet.Row(row); IXLCell c = r.Cell(1); c.Value = (readable ? "" : b.Id + " - ") + b.GetPrenomUnique(listeBenevole); int i = 2; int prevTacheId = -1; int firsCell = -1; foreach (var cren in creneaux) { c = r.Cell(i); c.Style.Border.TopBorder = XLBorderStyleValues.Thin; c.Style.Border.BottomBorder = XLBorderStyleValues.Thin; c.Style.Border.RightBorder = XLBorderStyleValues.Thin; c.Style.Border.LeftBorder = XLBorderStyleValues.Thin; if (aff.ContainsKey(cren.Id)) { if (aff[cren.Id].Count == 1) { //Cas normal 1 affectation if (prevTacheId > 0 && aff[cren.Id][0].Creneau.TacheId == prevTacheId) { //cas identique : rien a faire } else { if (prevTacheId > 0) { if (firsCell != i - 1) { sheet.Range(row, firsCell, row, i - 1).Merge(); } } firsCell = i; prevTacheId = aff[cren.Id][0].Creneau.TacheId; } } else { if (prevTacheId > 0) { if (firsCell != i - 1) { sheet.Range(row, firsCell, row, i - 1).Merge(); } } firsCell = -1; prevTacheId = -1; } c.Value = string.Join(",", aff[cren.Id].Select(s => s.Creneau.Tache.Nom)); c.Style.Fill.BackgroundColor = XLColor.LightBlue; if (aff[cren.Id].Count > 1) { c.Style.Font.FontColor = XLColor.Red; c.Style.Font.Bold = true; } } else { if (prevTacheId > 0) { if (firsCell != i - 1) { sheet.Range(row, firsCell, row, i - 1).Merge(); } } firsCell = -1; prevTacheId = -1; if (!disp.ContainsKey(cren.Id)) { c.Style.Fill.BackgroundColor = XLColor.Black; c.Style.Fill.PatternBackgroundColor = XLColor.White; c.Style.Fill.PatternType = XLFillPatternValues.DarkDown; } } i++; } if (prevTacheId > 0) { if (firsCell != i - 1) { sheet.Range(row, firsCell, row, i - 1).Merge(); } } }