Example #1
0
        public ResultOfType <CalendrierResultModel> GetCalendrierParPraticienAndDate(
            ConfigurationPraticien configurationPraticien, DateTime?dateSelected)
        {
            Logger.LogInfo("GetCalendrierParPraticienAndDate : Start ");
            if (configurationPraticien == null)
            {
                return(new Return <CalendrierResultModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError(
                           null, "La configuration n'a pas été effectué par le praticien.").WithDefaultResult());
            }
            if (dateSelected == null)
            {
                dateSelected = DateTime.UtcNow;
            }

            //Récupérer la liste des rendez vous par date et par praticien

            var listRendezVous =
                _rendezvousRepository.GetAll()
                .Where(
                    x =>

                    x.Praticien.Cin == configurationPraticien.Praticien.Cin);

            IList <CalendrierDataModel> calendrierPraticien = new List <CalendrierDataModel>();
            //Matin
            var startTimeMatin = string.Concat(AddZero(configurationPraticien.HeureDebutMatin), ":",
                                               AddZero(configurationPraticien.MinuteDebutMatin));
            var endTimeMatin = string.Concat(AddZero(configurationPraticien.HeureFinMatin), ":",
                                             AddZero(configurationPraticien.MinuteFinMatin));
            //Midi
            var startTimeMidi = string.Concat(AddZero(configurationPraticien.HeureDebutMidi), ":",
                                              AddZero(configurationPraticien.MinuteDebutMidi));
            var endTimeMidi = string.Concat(AddZero(configurationPraticien.HeureFinMidi), ":",
                                            AddZero(configurationPraticien.MinuteFinMidi));

            var calendrierStatus = new CalendrierDataModel();

            //Si on n'a pas de rendez vous dans ce jour alors on affiche le calendrier vide
            var rendezVousList = listRendezVous as IList <RendezVous> ?? listRendezVous.ToList();

            if (rendezVousList.ToList().Count == 0)
            {
                //C'est disponible
                const string statut = "Pas de rendez vous";
                calendrierPraticien.ToList()
                .AddRange(CalendrierFerie(configurationPraticien, startTimeMatin, endTimeMatin, calendrierStatus,
                                          statut));
                calendrierPraticien.ToList()
                .AddRange(CalendrierFerie(configurationPraticien, startTimeMidi, endTimeMidi, calendrierStatus,
                                          statut));
            }
            else
            {
                calendrierPraticien = CalendrierReservationStatus(configurationPraticien, startTimeMatin, endTimeMatin,
                                                                  calendrierStatus, rendezVousList);
                calendrierPraticien.ToList()
                .AddRange(CalendrierReservationStatus(configurationPraticien, startTimeMidi, endTimeMidi,
                                                      calendrierStatus, rendezVousList));
            }
            var data = new CalendrierResultModel {
                CalendrierPraticien = calendrierPraticien
            };

            Logger.LogInfo("GetCalendrierParPraticienAndDate : End.");
            return(new Return <CalendrierResultModel>().OK().WithResult(data));
        }
Example #2
0
        /// <summary>
        /// TODO
        /// </summary>
        /// <param name="praticien"></param>
        /// <param name="dateSelected"></param>
        /// <returns></returns>
        public ResultOfType <CalendrierResultModel> GetCalendrierParPraticienForPraticien(string praticien,
                                                                                          string dateSelected)
        {
            Logger.LogInfo("GetCalendrierParPraticienForPraticien : Start.");

            //Afficher tout le calendrier
            if (string.IsNullOrEmpty(praticien))
            {
                return(new Return <CalendrierResultModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError(
                           null, "Le cin du praticien est null.").WithDefaultResult());
            }
            if (string.IsNullOrEmpty(dateSelected))
            {
                return(new Return <CalendrierResultModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError(
                           null, "La date courante est null.").WithDefaultResult());
            }

            //var startHeure, endHeure;
            ConfigurationPraticien configurationPraticien =
                _configurationPraticienRepository.GetAll().FirstOrDefault(c => c.Praticien.Email == praticien);


            if (configurationPraticien == null)
            {
                return(new Return <CalendrierResultModel>().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();
            //Créer la liste d'objets contenant cette éléments qui seront affichés au médecin
            IList <CalendrierDataModel> listCalendrierDataModels = new List <CalendrierDataModel>();


            int decalage  = configurationPraticien.DecalageMinute;
            var jourFerie =
                _jourFerieRepository.GetAll()
                .FirstOrDefault(x => x.JourFerieNom.Equals(dateSelected) && x.Praticien.Email.Equals(praticien));

            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()));
                string endTimeMatin   = string.Concat(AddZero(heureFinMatin.ToString()), ":",
                                                      AddZero(minuteFinMatin.ToString()));

                AjouterCalendrierPraticien(heure, heureFinMatin, minute, minuteFinMatin, listCalendrierDataModels,
                                           startTimeMatin, endTimeMatin,
                                           decalage);
            }
            //: je garde au mécedin ce crénaux en cas ou il a besoin d'ajouter un rdv urgent dans sa pause
            listCalendrierDataModels.RemoveAt(listCalendrierDataModels.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()));
                string endTimeMidi   = string.Concat(AddZero(heureFinAp.ToString()), ":", AddZero(minuteFinAp.ToString()));

                AjouterCalendrierPraticien(heureAp, heureFinAp, minuteAp, minuteFinAp, listCalendrierDataModels,
                                           startTimeMidi, endTimeMidi,
                                           decalage);
            }
            //Supprimer le dernier élément: je garde au mécedin ce crénaux en cas ou il a besoin d'ajouter un rdv urgent dans sa pause
            //listCalendrierDataModels.RemoveAt(listCalendrierDataModels.Count - 1);

            var finalList = new List <CalendrierDataModel>();

            if (creneauxConfig != null && creneauxConfig.ToList().Count > 0)
            {
                foreach (CalendrierDataModel cal in listCalendrierDataModels)
                {
                    if (jourFerie != null)
                    {
                        cal.Statut = "ND";
                        finalList.Add(cal);
                    }
                    else
                    {
                        var creneau =
                            creneauxConfig.FirstOrDefault(
                                cr => cr.HeureDebut == cal.HeureDebutCalendrier && cr.CurrentDate.Equals(dateSelected));
                        if (creneau != null)
                        {
                            //On doit traiter le cas des rendez vous
                            var rdv = _rendezvousRepository.GetAll().FirstOrDefault(c => c.Creneaux.Id == creneau.Id);

                            string status           = creneau.Status;
                            string praticienCin     = string.Empty;
                            string patientCin       = string.Empty;
                            string heurefin         = creneau.HeureFin;
                            string nomPrenomPatient = string.Empty;
                            string telephonePatient = string.Empty;



                            if (rdv != null)
                            {
                                //get patient or praticien of it's a praticien
                                var pat =
                                    _patientRepository.GetAll().FirstOrDefault(p => p.Email.Equals(rdv.Patient.Email));
                                if (pat == null)
                                {
                                    var prat =
                                        _praticienRepository.GetAll()
                                        .FirstOrDefault(pr => pr.Email.Equals(rdv.Patient.Email));

                                    if (prat != null)
                                    {
                                        nomPrenomPatient = prat.NomPrenom;
                                        telephonePatient = prat.Telephone;
                                    }
                                }
                                else
                                {
                                    nomPrenomPatient = pat.NomPrenom;
                                    telephonePatient = pat.Telephone;
                                }
                                // status = rdv.Statut;
                                praticienCin = rdv.Praticien.Cin;
                                patientCin   = rdv.Patient.Email;
                            }

                            var elem =
                                listCalendrierDataModels.FirstOrDefault(
                                    w => w.HeureDebutCalendrier == creneau.HeureDebut);
                            elem.HeureDebutCalendrier = creneau.HeureDebut;
                            elem.HeureFinCalendrier   = heurefin;
                            elem.PatientCin           = patientCin;
                            elem.PraticienCin         = praticienCin;
                            elem.Statut           = status;
                            elem.NomPrenomPatient = nomPrenomPatient;
                            elem.TelephonePatient = telephonePatient;
                            finalList.Add(elem);
                        }
                        else
                        {
                            if (jourFerie != null)
                            {
                                cal.Statut = "ND";
                                finalList.Add(cal);
                            }
                            else
                            {
                                finalList.Add(cal);
                            }
                        }
                    }
                }
            }
            else
            {
                finalList.AddRange(listCalendrierDataModels);
                if (jourFerie != null)
                {
                    finalList.ForEach(cal =>
                    {
                        cal.Statut = "ND";
                    });
                }
            }

            ////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)
            //    {
            //        CalendrierDataModel cal = listCalendrierDataModels.FirstOrDefault(x => x.HeureDebutCalendrier == cre.HeureDebut);
            //        if (cal != null)
            //        {
            //            if (cre.Status.Equals("ND".ToString()))
            //            {
            //                var rdv = _rendezvousRepository.GetAll().FirstOrDefault(c => c.Creneaux.Id == cre.Id);
            //                string status = "ND";
            //                string praticienCin = string.Empty;
            //                string patientCin = string.Empty;
            //                string heurefin = cre.HeureFin;

            //                if (rdv != null)
            //                {
            //                    status = rdv.Statut;
            //                    praticienCin = rdv.Praticien.Cin;
            //                    patientCin = rdv.Patient.Cin;
            //                }

            //                var elem = listCalendrierDataModels.FirstOrDefault(w => w.HeureDebutCalendrier == cre.HeureDebut);
            //                elem.HeureDebutCalendrier = cre.HeureDebut;
            //                elem.HeureFinCalendrier = heurefin;
            //                elem.PatientCin = patientCin;
            //                elem.PraticienCin = praticienCin;
            //                elem.Statut = status;

            //                finalList.Add(elem);

            //            }

            //        }
            //        else
            //            finalList.Add(cal);
            //    }
            //}
            //else
            //{
            //    finalList = listCalendrierDataModels;
            //}

            CalendrierResultModel data = new CalendrierResultModel
            {
                CalendrierPraticien = finalList
            };

            Logger.LogInfo("GetCalendrierParPraticienForPraticien : End. ");
            return(new Return <CalendrierResultModel>().OK().WithResult(data));
        }