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)); }
/// <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)); }