示例#1
0
        private static bool CaseDispoDoitEtreGrisSiJumelageAffecteDispo(List <DisponibiliteStruct> listeCasesJumelageEtDisposCeluiInspecte, DisponibiliteStruct caseDispoStruct)
        {
            const int rencontre = 90;

            for (var demiHeure = -(rencontre - 30); demiHeure < rencontre; demiHeure += 30)
            {
                if (listeCasesJumelageEtDisposCeluiInspecte.Exists(
                        x => x.Jour == caseDispoStruct.Jour &&
                        x.EstDispo == false && (x.Minutes + demiHeure) == caseDispoStruct.Minutes))
                {
                    return(true);
                }
            }
            return(false);
        }
示例#2
0
        public Dictionary <string, List <DisponibiliteStruct> > RetourneDisponibiliteJumelageUsager(int id, int idTypeInsc, int session, int idCeluiInspecte)
        {
            var listeCasesJumelageEtDisposCeluiInspecte = new List <DisponibiliteStruct>();
            var caseDispoStruct        = new DisponibiliteStruct();
            var reqDisposCeluiInspecte = _db.Disponibilite.Where(x => x.id_Inscription == id);
            IQueryable <Disponibilite> reqDisposDeTousLesAutres;
            IQueryable <Jumelage>      reqJumelagesCeluiInspecte;
            var listeDisposCeluiInspecte = new List <Disponibilite>();

            if (idTypeInsc == IdInscriptionPourEleveAide)
            {
                reqJumelagesCeluiInspecte = _db.Jumelage.Where(eleve => eleve.id_InscEleve == id && eleve.id_Sess == session);
                reqDisposDeTousLesAutres  = _db.Disponibilite.Where(x => x.id_Inscription != id && x.Inscription.id_TypeInscription != IdInscriptionPourEleveAide);
            }
            else
            {
                reqJumelagesCeluiInspecte = _db.Jumelage.Where(tuteur => tuteur.id_InscrTuteur == id && tuteur.id_Sess == session);
                reqDisposDeTousLesAutres  = _db.Disponibilite.Where(x => x.id_Inscription != id && x.Inscription.id_TypeInscription == IdInscriptionPourEleveAide);
            }
            foreach (var jumelageEnRouge in reqJumelagesCeluiInspecte)
            {
                caseDispoStruct.Jour                             = jumelageEnRouge.p_Jour.Jour;
                caseDispoStruct.Minutes                          = jumelageEnRouge.minutes;
                caseDispoStruct.NomCase                          = caseDispoStruct.Jour + "-" + caseDispoStruct.Minutes;
                caseDispoStruct.NbreUsagerMemeDispo              = 0;
                caseDispoStruct.EstDispo                         = false;
                caseDispoStruct.EstDispoMaisJumele               = true;
                caseDispoStruct.EstDispoEtCompatible             = false;
                caseDispoStruct.EstDispoEtCompatibleEtConsecutif = false;
                if (Convert.ToBoolean(!jumelageEnRouge.consecutif))
                {
                    caseDispoStruct.EstConsecutiveDonc3hrs = false;
                    listeCasesJumelageEtDisposCeluiInspecte.Add(caseDispoStruct);
                }
                else
                {
                    caseDispoStruct.EstConsecutiveDonc3hrs = false;
                    listeCasesJumelageEtDisposCeluiInspecte.Add(caseDispoStruct);
                    for (int k = DemiHeure; k <= DureeRencontreMinutes; k += DemiHeure)
                    {
                        caseDispoStruct.Minutes = jumelageEnRouge.minutes + k;
                        caseDispoStruct.NomCase = caseDispoStruct.Jour + "-" + caseDispoStruct.Minutes;
                        caseDispoStruct.EstConsecutiveDonc3hrs = true;
                        listeCasesJumelageEtDisposCeluiInspecte.Add(caseDispoStruct);
                        caseDispoStruct.EstConsecutiveDonc3hrs = true;
                        listeCasesJumelageEtDisposCeluiInspecte.Add(caseDispoStruct);
                    }
                }
            }

            if (idCeluiInspecte != 0)
            {
                listeDisposCeluiInspecte = _db.Disponibilite.Where(x => x.id_Inscription == idCeluiInspecte).ToList();
                var idTypeInscTemp = _db.Inscription.Where(x => x.id_Inscription == idCeluiInspecte).Select(x => x.id_TypeInscription).FirstOrDefault();
                if (idTypeInscTemp == 1)
                {
                }
                else
                {
                }
            }
            foreach (var disponibiliteEnVert in reqDisposCeluiInspecte)
            {
                var compteurUsagerAvecMemeDispo = 0;
                caseDispoStruct.EstDispoEtCompatible = false;
                foreach (var a in reqDisposDeTousLesAutres)
                {
                    if (disponibiliteEnVert.id_Jour == a.id_Jour && disponibiliteEnVert.minutes == a.minutes)
                    {
                        if (!listeCasesJumelageEtDisposCeluiInspecte.Exists(x => x.Jour == a.p_Jour.Jour && x.Minutes == a.minutes))
                        {
                            compteurUsagerAvecMemeDispo++;
                            if (idCeluiInspecte != 0 && listeDisposCeluiInspecte.Exists(x => x.p_Jour.Jour == a.p_Jour.Jour && x.minutes == a.minutes) && CaseDispoDoitEtreGrisSiJumelageAffecteDispo(listeCasesJumelageEtDisposCeluiInspecte, caseDispoStruct))
                            {
                                caseDispoStruct.EstDispoEtCompatible             = true;
                                caseDispoStruct.EstDispoEtCompatibleEtConsecutif = DisponbiliteEstElleConsecutiveDauMoins3Hrs(reqDisposCeluiInspecte.ToList(), listeDisposCeluiInspecte, a.id_Jour, a.minutes);
                            }
                        }
                    }
                }
                caseDispoStruct.Jour                = disponibiliteEnVert.p_Jour.Jour;
                caseDispoStruct.Minutes             = disponibiliteEnVert.minutes;
                caseDispoStruct.NomCase             = disponibiliteEnVert.p_Jour.Jour + "-" + disponibiliteEnVert.minutes;
                caseDispoStruct.NbreUsagerMemeDispo = compteurUsagerAvecMemeDispo;
                caseDispoStruct.EstDispo            = true;
                caseDispoStruct.EstDispoMaisJumele  = CaseDispoDoitEtreGrisSiJumelageAffecteDispo(listeCasesJumelageEtDisposCeluiInspecte, caseDispoStruct);
                listeCasesJumelageEtDisposCeluiInspecte.Add(caseDispoStruct);
            }

            var       startTime  = TimeSpan.FromHours(HeureDebut);
            const int difference = DemiHeure;
            const int rencontre  = DureeRencontreMinutes;
            const int heureMax   = HeureFin;
            var       listeCasesRencontreAu30Min  = new Dictionary <TimeSpan, TimeSpan>();
            var       listeCasesRencontreAfficher = new Dictionary <string, List <DisponibiliteStruct> >();

            for (var k = 0; k < heureMax; k++)
            {
                listeCasesRencontreAu30Min.Add(
                    startTime.Add(TimeSpan.FromMinutes(difference * k)),
                    startTime.Add(TimeSpan.FromMinutes(difference * k + rencontre))
                    );
            }

            foreach (var case30Min in listeCasesRencontreAu30Min)
            {
                var minutes            = (int)case30Min.Key.TotalMinutes;
                var caseToutes         = new DisponibiliteStruct();
                var values             = new List <DisponibiliteStruct>();
                var dispoHeuresPresent = listeCasesJumelageEtDisposCeluiInspecte.Exists(x => x.Minutes == minutes);

                for (var j = (int)Semaine.Lundi; j < (int)Semaine.Samedi; j++)
                {
                    if (dispoHeuresPresent)
                    {
                        if (listeCasesJumelageEtDisposCeluiInspecte.Exists(x => x.Jour == ((Semaine)j).ToString() && x.Minutes == minutes))
                        {
                            caseToutes = listeCasesJumelageEtDisposCeluiInspecte.Find(x => x.Jour == ((Semaine)j).ToString() && x.Minutes == minutes);
                        }
                        else
                        {
                            caseToutes.Jour                = ((Semaine)j).ToString();
                            caseToutes.Minutes             = minutes;
                            caseToutes.NomCase             = caseToutes.Jour + "-" + caseToutes.Minutes;
                            caseToutes.NbreUsagerMemeDispo = 0;
                            caseToutes.EstDispoMaisJumele  = false;
                            caseToutes.EstDispo            = false;
                        }
                    }
                    else
                    {
                        caseToutes.Jour                = ((Semaine)j).ToString();
                        caseToutes.Minutes             = minutes;
                        caseToutes.NomCase             = caseToutes.Jour + "-" + caseToutes.Minutes;
                        caseToutes.NbreUsagerMemeDispo = 0;
                        caseToutes.EstDispoMaisJumele  = false;
                        caseToutes.EstDispo            = false;
                    }
                    values.Add(caseToutes);
                }
                listeCasesRencontreAfficher.Add(
                    $"{case30Min.Key.Hours}h{case30Min.Key.Minutes:00}-{case30Min.Value.Hours}h{case30Min.Value.Minutes:00}",
                    values);
            }
            return(listeCasesRencontreAfficher);
        }
示例#3
0
        public ActionResult Index(int typeInscription, string[] jours)
        {
            int idPers = SessionBag.Current.id_Pers;

            ViewBag.TypeInscription = Liste.ListeTypeInscription();
            var sessionActuelle = _db.Session.AsNoTracking().OrderByDescending(y => y.Annee).ThenByDescending(x => x.id_Saison).FirstOrDefault();

            if (sessionActuelle != null)
            {
                var inscriptionBd = new Inscription
                {
                    id_Pers               = idPers,
                    id_Sess               = sessionActuelle.id_Sess,
                    id_Statut             = 1,
                    BonEchange            = false,
                    ContratEngagement     = false,
                    TransmettreInfoTuteur = false,
                    DateInscription       = DateTime.Now,
                    id_TypeInscription    = typeInscription
                };
                _db.Inscription.Add(inscriptionBd);
            }
            _db.SaveChanges();
            if (jours != null)
            {
                var dispo          = new DisponibiliteStruct();
                var disponibilites = new List <DisponibiliteStruct>();
                Array.Sort(jours, new AlphanumComparatorFast());
                foreach (var jour in jours)
                {
                    //TODO: Valider si les heures se suivent, formatter pour demander confirmation à l'utilisateur.
                    var splitValue1 = jour.Split('-');
                    dispo.Minutes = int.Parse(splitValue1[1]);
                    dispo.Jour    = splitValue1[0];
                    disponibilites.Add(dispo);
                }

                var dispoBd        = new Disponibilite();
                var inscriptionEtu = _db.Inscription.FirstOrDefault(x => x.id_Pers == idPers);
                foreach (var m in disponibilites)
                {
                    if (inscriptionEtu != null)
                    {
                        dispoBd.id_Inscription = inscriptionEtu.id_Inscription;
                    }
                    dispoBd.id_Jour = (int)Enum.Parse(typeof(Semaine), m.Jour);
                    dispoBd.minutes = m.Minutes;
                    _db.Disponibilite.Add(dispoBd);
                    _db.SaveChanges();
                }
                SessionBag.Current.id_Inscription = typeInscription;
                switch ((TypeInscription)typeInscription)
                {
                case TypeInscription.eleveAide:
                    SessionBag.Current.id_TypeUsag = TypeUsagers.Eleve;
                    return(RedirectToAction("EleveAide1"));

                case TypeInscription.tuteurDeCours:
                    SessionBag.Current.id_TypeUsag = TypeUsagers.Tuteur;
                    return(RedirectToAction("Tuteur"));

                case TypeInscription.tuteurBenevole:
                    SessionBag.Current.id_TypeUsag = TypeUsagers.Tuteur;
                    return(RedirectToAction("Benevole"));

                case TypeInscription.tuteurRemunere:
                    SessionBag.Current.id_TypeUsag = TypeUsagers.Tuteur;
                    return(RedirectToAction("Benevole"));

                default:
                    return(Json(new { success = false, message = MsgErreurRemplir }));
                }
            }
            return(Json(new { success = false, message = MsgErreurRemplir }));
        }