Exemple #1
0
        public ResultOfType <IList <CalendrierPatientDataModel> > GetCalendrierParPraticienForPatientParSemaine(
            string praticien,
            string dateSelected)
        {
            try
            {
                Logger.LogInfo("GetCalendrierParPraticienForPatientParSemaine : Start. ");

                IList <CalendrierPatientDataModel> calendriersPatientList = new List <CalendrierPatientDataModel>();
                int i = 0;
                while (i < 7)
                {
                    DateTime today;
                    DateTime.TryParseExact(dateSelected, "dd/MM/yyyy",
                                           _cultureFr, DateTimeStyles.None,
                                           out today);
                    DateTime yesterday = today.AddDays(-1);

                    if (yesterday.CompareTo(DateTime.Now) > 0)
                    {
                        today = yesterday;
                        i++;
                        dateSelected = today.ToShortDateString();

                        var data = GetCalendrierParPraticienForPatient(praticien, dateSelected);

                        if (data != null && data.Data != null)
                        {
                            var calendrierPatientDataModel = new CalendrierPatientDataModel
                            {
                                DateCourante    = data.Data.DateCourante,
                                HeureCalendrier = data.Data.HeureCalendrier,
                                Jour            = data.Data.Jour
                            };

                            calendriersPatientList.Add(calendrierPatientDataModel);
                        }
                    }
                    else
                    {
                        return
                            (new Return <IList <CalendrierPatientDataModel> >().Error()
                             .As(EStatusDetail.NotFound)
                             .AddingGenericError(
                                 null,
                                 "Vous ne pouvez pas revenir vers la semaine précédente car la date est inférieur.")
                             .WithDefaultResult());
                    }
                }

                var calendrierPatientDataModels = calendriersPatientList.Reverse().ToList();
                Logger.LogInfo("GetCalendrierParPraticienForPatientParSemaine : End. ");
                return(new Return <IList <CalendrierPatientDataModel> >().OK().WithResult(calendrierPatientDataModels));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Exemple #2
0
        public ResultOfType <IList <CalendrierPatientDataModel> > GetCalendrierParPraticienForPatientParSem(
            string praticien,
            string dateSelected)
        {
            try
            {
                Logger.LogInfo("GetCalendrierParPraticienForPatientParSem : Start. ");
                IList <CalendrierPatientDataModel> calendriersPatientList = new List <CalendrierPatientDataModel>();
                for (int i = 0; i < 7; i++)
                {
                    DateTime today;
                    DateTime.TryParseExact(dateSelected, "dd/MM/yyyy",
                                           _cultureFr, DateTimeStyles.None,
                                           out today);
                    DateTime tomorrow = today.AddDays(1);
                    today        = tomorrow;
                    dateSelected = today.ToShortDateString();

                    var data = GetCalendrierParPraticienForPatient(praticien, dateSelected);

                    if (data != null && data.Data != null)
                    {
                        var calendrierPatientDataModel = new CalendrierPatientDataModel
                        {
                            DateCourante    = data.Data.DateCourante,
                            HeureCalendrier = data.Data.HeureCalendrier,
                            Jour            = data.Data.Jour
                        };

                        calendriersPatientList.Add(calendrierPatientDataModel);
                    }
                }
                Logger.LogInfo("GetCalendrierParPraticienForPatientParSem : End .");
                return(new Return <IList <CalendrierPatientDataModel> >().OK().WithResult(calendriersPatientList));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Exemple #3
0
        /// <summary>
        /// C'est une méthode permettant d'afficher les disponibilités d'un medecin coté patient
        /// </summary>
        /// <param name="praticien"></param>
        /// <param name="dateSelected"></param>
        /// <returns></returns>
        public ResultOfType <CalendrierPatientDataModel> GetCalendrierParPraticienForPatient(string praticien,
                                                                                             string dateSelected)
        {
            try
            {
                Logger.LogInfo("GetCalendrierParPraticienForPatient : Start. ");
                //nous avant la configuration du médecin qui construit la premiere liste
                //puis on tranche de la liste les créneaux non disponible
                if (string.IsNullOrEmpty(praticien))
                {
                    return
                        (new Return <CalendrierPatientDataModel>().Error()
                         .As(EStatusDetail.BadRequest)
                         .AddingGenericError(
                             null, "L'email du praticien est null.").WithDefaultResult());
                }
                if (string.IsNullOrEmpty(dateSelected))
                {
                    return
                        (new Return <CalendrierPatientDataModel>().Error()
                         .As(EStatusDetail.BadRequest)
                         .AddingGenericError(
                             null, "La date courante est null.").WithDefaultResult());
                }

                ConfigurationPraticien configurationPraticien =
                    _configurationPraticienRepository.GetAll().FirstOrDefault(c => c.Praticien.Email == praticien);


                if (configurationPraticien == null)
                {
                    return
                        (new Return <CalendrierPatientDataModel>().Error()
                         .As(EStatusDetail.BadRequest)
                         .AddingGenericError(
                             null,
                             "Aucune configuration effectué pour le compte en compte.Veuillez contacter l'administrateur de AlloTabib pour établir une première configuration.")
                         .WithDefaultResult());
                }

                IList <Creneaux> creneauxConfig =
                    _creneauRepository.GetAll()
                    .Where(cr => cr.Praticien.Email.Equals(praticien) && cr.CurrentDate.Equals(dateSelected))
                    .ToList();

                IList <string> heures   = new List <string>();
                int            decalage = configurationPraticien.DecalageMinute;


                var jourFerie =
                    _jourFerieRepository.GetAll()
                    .FirstOrDefault(x => x.JourFerieNom.Contains(dateSelected) && x.Praticien.Email.Equals(praticien));
                DateTime dateCast;
                DateTime.TryParseExact(dateSelected, "dd/MM/yyyy",
                                       _cultureFr, DateTimeStyles.None,
                                       out dateCast);

                string day = DateTimeFormatInfo.CurrentInfo.GetDayName(dateCast.DayOfWeek);
                CalendrierPatientDataModel data = new CalendrierPatientDataModel();
                if (jourFerie != null || day.Equals(DayOfWeek.Sunday.ToString()))
                {
                    //Do the cast for the date
                    data = new CalendrierPatientDataModel
                    {
                        HeureCalendrier = null,
                        DateCourante    = dateSelected.Substring(0, 5),
                        Jour            = day
                    };
                    //On doit pas afficher ce jour la dans le cas d'un patient
                    return(new Return <CalendrierPatientDataModel>().OK().WithResult(data));
                }
                else
                {
                    //si il n'a aucun créneau dans cette date on affiche toute les disponibilité tous le calendrier au patient
                    //if (creneauxConfig == null)
                    //{
                    if (configurationPraticien.MinuteDebutMatin != null &&
                        configurationPraticien.HeureDebutMatin != null &&
                        configurationPraticien.MinuteFinMatin != null && configurationPraticien.HeureFinMatin != null)
                    {
                        int minute = int.Parse(DeleteZero(configurationPraticien.MinuteDebutMatin));
                        int heure  = int.Parse(DeleteZero(configurationPraticien.HeureDebutMatin));

                        int minuteFinMatin = int.Parse(DeleteZero(configurationPraticien.MinuteFinMatin));
                        int heureFinMatin  = int.Parse(DeleteZero(configurationPraticien.HeureFinMatin));



                        string startTimeMatin = string.Concat(AddZero(heure.ToString()), ":", AddZero(minute.ToString()));

                        AjouterDisponibilitePraticien(heure, heureFinMatin, minute, minuteFinMatin, heures,
                                                      startTimeMatin,
                                                      decalage);
                        heures.RemoveAt(heures.Count - 1);
                    }


                    if (configurationPraticien.MinuteDebutMidi != null && configurationPraticien.HeureDebutMidi != null)
                    {
                        int minuteAp = int.Parse(DeleteZero(configurationPraticien.MinuteDebutMidi));
                        int heureAp  = int.Parse(DeleteZero(configurationPraticien.HeureDebutMidi));

                        int minuteFinAp = int.Parse(DeleteZero(configurationPraticien.MinuteFinMidi));
                        int heureFinAp  = int.Parse(DeleteZero(configurationPraticien.HeureFinMidi));


                        string startTimeMidi = string.Concat(AddZero(heureAp.ToString()), ":",
                                                             AddZero(minuteAp.ToString()));

                        AjouterDisponibilitePraticien(heureAp, heureFinAp, minuteAp, minuteFinAp, heures, startTimeMidi,
                                                      decalage);
                        heures.RemoveAt(heures.Count - 1);
                    }


                    //On doit traiter le cas des rendez vous
                    if (creneauxConfig != null && creneauxConfig.ToList().Count > 0)
                    {
                        //ici on doit enlever des heurs les rendez vous prix
                        foreach (Creneaux cre in creneauxConfig)
                        {
                            //vérifier si ce creneaux est lié à un rdv
                            var rdv = _rendezvousRepository.GetAll().FirstOrDefault(r => r.Creneaux.Id.Equals(cre.Id));
                            if (rdv != null)
                            {
                                if (rdv.Statut.Equals("R")) //Si le rendez vous a été rejeté alors il sera libéré
                                {
                                    if (heures.IndexOf(cre.HeureDebut) != -1)
                                    {
                                        if (cre.Status.Equals("ND".ToString()))
                                        {
                                            heures.Remove(cre.HeureDebut);
                                        }
                                    }
                                }
                            }

                            if (heures.IndexOf(cre.HeureDebut) != -1)
                            {
                                if (cre.Status.Equals("ND".ToString()))
                                {
                                    heures.Remove(cre.HeureDebut);
                                }
                            }
                        }
                    }

                    DateTime.TryParseExact(dateSelected, "dd/MM/yyyy",
                                           _cultureFr, DateTimeStyles.None,
                                           out dateCast);
                    day = DateTimeFormatInfo.CurrentInfo.GetDayName(dateCast.DayOfWeek);

                    //Do the cast for the date
                    data = new CalendrierPatientDataModel
                    {
                        HeureCalendrier = heures,
                        DateCourante    = dateSelected,
                        Jour            = day
                    };
                }
                Logger.LogInfo("GetCalendrierParPraticienForPatient : End .");
                return(new Return <CalendrierPatientDataModel>().OK().WithResult(data));
            }
            catch (Exception ex)
            {
                return
                    (new Return <CalendrierPatientDataModel>().Error()
                     .As(EStatusDetail.BadRequest)
                     .AddingGenericError(
                         null, "Erreur de récupération du jours.").WithDefaultResult());
            }
        }