private ResultOfType <RendezVousResultDataModel> ValidateNewRendezVousProperties(RendezVousDataModel rendezVousToAdd) { if (string.IsNullOrEmpty(rendezVousToAdd.PatientEmail)) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Veuillez introduire votre Patient Cin.", "PatientEmail") .WithDefaultResult()); } if (string.IsNullOrEmpty(rendezVousToAdd.PraticienCin)) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Veuillez introduire votre Praticien Cin.", "PraticienCin") .WithDefaultResult()); } if (string.IsNullOrEmpty(rendezVousToAdd.Statut)) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Veuillez introduire votre Statut.", "Statut") .WithDefaultResult()); } return(null); }
public ResultOfType <RendezVousResultDataModel> PostNewRendezVous(RendezVousDataModel rendezVousToAdd) { try { Logger.LogInfo("PostNewRendezVous : Start."); if (rendezVousToAdd == null) { return(new Return <RendezVousResultDataModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError( null, "Les données sont vides.").WithDefaultResult()); } Logger.LogInfo(string.Format("Post New rendez vous : Start --- PatientEmail = {0}, PatientEmail = {1}", rendezVousToAdd.PatientEmail, rendezVousToAdd.PatientEmail)); var validationResult = ValidateNewRendezVousProperties(rendezVousToAdd); if (validationResult != null) { Logger.LogInfo(string.Format("Post New rendez vous : End --- Status = {0}, Message= {1}", validationResult.Status, validationResult.Errors[0].Message)); return(validationResult); } var rdv = _rendezVousRepository.GetAll().FirstOrDefault(r => r.Creneaux.CurrentDate.Equals(rendezVousToAdd.CurrentDate) && r.Creneaux.HeureDebut.Equals(rendezVousToAdd.HeureDebut) && r.Praticien.Cin.Equals(rendezVousToAdd.PraticienCin)); if (rdv != null) { return(new Return <RendezVousResultDataModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError( null, "Un rendez vous à cette date et à cette heure pour ce praticien a été pris déjà.").WithDefaultResult()); } //vérifier si le patient a pris déjà un rendez dans ce jour pour le même médecin ! bloquer ça pour ne pas abuser et garder tjr horaire pour le reste var rdvthatday = _rendezVousRepository.GetAll().FirstOrDefault(r => r.Creneaux.CurrentDate.Equals(rendezVousToAdd.CurrentDate) && r.Praticien.Cin.Equals(rendezVousToAdd.PraticienCin) && r.Patient.Email.Equals(rendezVousToAdd.PatientEmail)); if (rdvthatday != null) { return(new Return <RendezVousResultDataModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError( null, "Vous avez pris déjà un rendez à cette date pour ce praticien, vous ne pouvez pas prendre plus qu'un rendez vous à une date donnée.").WithDefaultResult()); } if (rendezVousToAdd.NoteConsultation == null) { rendezVousToAdd.NoteConsultation = string.Empty; } var patient = _userAccountRepository.GetAll().FirstOrDefault(p => p.Email == rendezVousToAdd.PatientEmail); var praticien = _praticienRepository.GetAll().FirstOrDefault(p => p.Cin == rendezVousToAdd.PraticienCin); if (patient == null) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Pas de patient en cours.", "patient") .WithDefaultResult()); } if (praticien == null) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Pas de praticien en cours.", "praticien") .WithDefaultResult()); } //add a new creneau before var creneau = new Creneaux { CurrentDate = rendezVousToAdd.CurrentDate, HeureDebut = rendezVousToAdd.HeureDebut, HeureFin = rendezVousToAdd.HeureDebut, Status = "ND", //Sera confirmé soit on supprime tout l'élément Praticien = praticien }; _creneauRepository.Add(creneau); //récupérer le créneau //var cren = // _creneauRepository.GetAll() // .FirstOrDefault( // c => // c.CurrentDate.Equals(creneau.CurrentDate) && c.HeureDebut.Equals(creneau.HeureDebut) && // c.Praticien.Cin.Equals(praticien.Cin)); //if (cren == null) //{ // cren = creneau; //} var rendezvous = new RendezVous { Creneaux = creneau, Praticien = praticien, Patient = patient, Statut = "NC", NoteConsultation = rendezVousToAdd.NoteConsultation }; _rendezVousRepository.Add(rendezvous); Logger.LogInfo("PostNewRendezVous : End. "); return (new Return <RendezVousResultDataModel>().OK() .WithResult(new RendezVousResultDataModel { NoteConsultation = rendezvous.Statut, PraticienEmail = rendezvous.Praticien.Email, PatientCin = rendezvous.Patient.Email, Statut = rendezvous.Statut, CurrentDate = creneau.CurrentDate, HeureFin = creneau.HeureDebut, HeureDebut = creneau.HeureFin })); } catch (Exception ex) { throw; } }
public ResultOfType <RendezVousResultDataModel> PatchNewRendezVous(RendezVousDataModel rendezVousToAdd) { try { Logger.LogInfo("PatchNewRendezVous : Start."); if (rendezVousToAdd == null) { return(new Return <RendezVousResultDataModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError( null, "Les données sont vides.").WithDefaultResult()); } Logger.LogInfo(string.Format("Patch New rendez vous : Start --- PatientEmail = {0}, PatientEmail = {1}", rendezVousToAdd.PatientEmail, rendezVousToAdd.PatientEmail)); var validationResult = ValidateNewRendezVousProperties(rendezVousToAdd); if (validationResult != null) { Logger.LogInfo(string.Format("Patch New rendez vous : End --- Status = {0}, Message= {1}", validationResult.Status, validationResult.Errors[0].Message)); return(validationResult); } if (string.IsNullOrEmpty(rendezVousToAdd.HeureDebut)) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Veuillez introduire heure début.", "HeureDebut") .WithDefaultResult()); } if (string.IsNullOrEmpty(rendezVousToAdd.CurrentDate)) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Veuillez introduire date courrante.", "CurrentDate") .WithDefaultResult()); } //var validationId = IsValidGuidIdAndGeneratedByRendezVousApi(rendezVousToAdd.Id); //if (validationId != null) //{ // Logger.LogInfo(string.Format("Patch New rendez vous : End --- Status = {0}, Message= {1}", // validationId.Status, validationId.Errors[0].Message)); // return validationId; //} var rdv = _rendezVousRepository.GetAll().FirstOrDefault(r => r.Creneaux.CurrentDate.Equals(rendezVousToAdd.CurrentDate) && r.Creneaux.HeureDebut.Equals(rendezVousToAdd.HeureDebut) && r.Praticien.Email.Equals(rendezVousToAdd.PraticienCin)); if (rdv == null) { return(new Return <RendezVousResultDataModel>().Error().As(EStatusDetail.BadRequest).AddingGenericError( null, "Un rendez vous à cette date et à cette heure pour ce praticien a été pris déjà.").WithDefaultResult()); } var cren = _creneauRepository.GetAll().FirstOrDefault(cr => cr.CurrentDate.Equals(rendezVousToAdd.CurrentDate) && cr.HeureDebut.Equals(rendezVousToAdd.HeureDebut)); if (cren == null) { return(new Return <RendezVousResultDataModel>() .Error().AsValidationFailure(null, "Le creneau n'existe pas pour ce rendez vous.", "validationCreneauId") .WithDefaultResult()); } var patient = _userAccountRepository.GetAll().FirstOrDefault(p => p.Email == rendezVousToAdd.PatientEmail); var praticien = _praticienRepository.GetAll().FirstOrDefault(p => p.Email == rendezVousToAdd.PraticienCin); if (patient != null) { rdv.Patient = patient; } if (praticien != null) { rdv.Praticien = praticien; } RendezVousResultDataModel data; //Dans le cas de rejet supprimer créneau lié et garder le RDV en tant que trace if (rendezVousToAdd.Statut.Equals("R")) { //Ajouter ce rdv dans l'historique var historique = new HistoriqueRendezVous { CreneauxHeureDebut = cren.HeureDebut, CurrentDate = cren.CurrentDate, Patient = rdv.Patient, Praticien = rdv.Praticien, Statut = rdv.Statut }; _historiqueRdvRepository.Add(historique); //on doit supprimer les rendez vous ainsi que les créneau non disponible _creneauRepository.Delete(cren.Id); _rendezVousRepository.Delete(rdv.Id); data = new RendezVousResultDataModel { NoteConsultation = historique.Statut, PraticienEmail = historique.Praticien.Email, PatientCin = historique.Patient.Email, Statut = historique.Statut, CurrentDate = historique.CurrentDate, PraticienAdresseDetaille = String.Format("{0} {1} {2}", rdv.Praticien.Adresse, rdv.Praticien.Delegation, rdv.Praticien.Gouvernerat), PraticienSpecialite = rdv.Praticien.Specialite, PraticienTelephone = rdv.Praticien.Telephone, PraticinNomPrenom = rdv.Praticien.NomPrenom, HeureDebut = historique.CreneauxHeureDebut }; } else { rdv.Statut = rendezVousToAdd.Statut; //juste on affecte le créneau rdv.Creneaux = cren; if (rendezVousToAdd.NoteConsultation != null) { rdv.NoteConsultation = rdv.NoteConsultation; } _rendezVousRepository.Update(rdv); data = new RendezVousResultDataModel { NoteConsultation = rdv.Statut, PraticienEmail = rdv.Praticien.Email, PatientCin = rdv.Patient.Email, Statut = rdv.Statut, CurrentDate = rdv.Creneaux.CurrentDate, HeureFin = rdv.Creneaux.HeureDebut, HeureDebut = rdv.Creneaux.HeureFin, PraticienAdresseDetaille = String.Format("{0} {1} {2}", rdv.Praticien.Adresse, rdv.Praticien.Delegation, rdv.Praticien.Gouvernerat), PraticienSpecialite = rdv.Praticien.Specialite, PraticienTelephone = rdv.Praticien.Telephone, PraticinNomPrenom = rdv.Praticien.NomPrenom }; } return (new Return <RendezVousResultDataModel>().OK() .WithResult(data)); } catch (Exception) { throw; } }