public static RendezVousResultDataModel ConvertPatientEntityToDataModel(RendezVous rendezVous) { if (rendezVous == null) { return(null); } var rendezVousResultDataModel = new RendezVousResultDataModel(); if (!string.IsNullOrEmpty(rendezVous.NoteConsultation)) { rendezVousResultDataModel.NoteConsultation = rendezVous.NoteConsultation; } if (!string.IsNullOrEmpty(rendezVous.Statut)) { rendezVousResultDataModel.Statut = rendezVous.Statut; } if (rendezVous.Patient != null) { rendezVousResultDataModel.PatientCin = rendezVous.Patient.Email; } if (rendezVous.Praticien != null) { rendezVousResultDataModel.PraticienEmail = rendezVous.Praticien.Email; } if (rendezVous.Creneaux != null) { rendezVousResultDataModel.CreneauId = rendezVous.Creneaux.Id.ToString(); rendezVousResultDataModel.CurrentDate = rendezVous.Creneaux.CurrentDate; rendezVousResultDataModel.HeureDebut = rendezVous.Creneaux.HeureDebut; rendezVousResultDataModel.HeureFin = rendezVous.Creneaux.HeureFin; } return(rendezVousResultDataModel); }
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; } }