コード例 #1
0
        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;
            }
        }