Пример #1
0
        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"));
        }
Пример #2
0
        // 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));
        }
Пример #3
0
        protected bool IsBenevoleAllowed(Benevole benevole)
        {
            if (benevole == null)
            {
                throw new ArgumentNullException(nameof(benevole));
            }

            return(IsCentreIdAllowed(benevole.CurrentAdresse.CentreID));
        }
Пример #4
0
        // GET: Benevoles/Details/5
        public ActionResult Details(int?id)
        {
            Benevole benevole = db.Benevoles.Find(id);

            if (benevole == null)
            {
                return(HttpNotFound());
            }
            return(View(benevole));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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();
            }
        }
Пример #7
0
        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)));
        }
Пример #8
0
        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();
                }
            }
        }