示例#1
0
 private HistoricalReservationDto HideDoctorsEgn(HistoricalReservationDto historicalReservation)
 {
     if (IsUserInRole(User, UserRole.Patient))
     {
         historicalReservation.Doctor.Egn = "HIDDEN";
     }
     return(historicalReservation);
 }
示例#2
0
        public void CreateNewReservation([FromBody] HistoricalReservationDto historicalReservationDto)
        {
            EnsureNotInRole(User, UserRole.Patient, Messages.TalkToDoctorToCreateReservation);
            Execute(dataContext =>
            {
                var reservation =
                    Map <HistoricalReservationDto, HistoricalReservation>(historicalReservationDto);

                if (IsUserInRole(User, UserRole.Doctor))
                {
                    if (!dataContext.SysUsers.First(user => user.Username.Equals(User.Identity.Name)).Doctors
                        .Any(doctor => doctor.Guid.Equals(reservation.DoctorId)))
                    {
                        throw GetResponseException(HttpStatusCode.Forbidden,
                                                   Messages.DoctorNotAllowedToPostReservationOnOtherDoctors);
                    }
                }
                if (IsUserInRole(User, UserRole.Hospital))
                {
                    if (!dataContext.SysUsers.First(user => user.Username.Equals(User.Identity.Name)).Hospitals
                        .Any(hospital => hospital.Guid.Equals(reservation.HospitalId)))
                    {
                        throw GetResponseException(HttpStatusCode.Forbidden,
                                                   Messages.HospitalNotAllowedToPostReservationOnOtherHospitals);
                    }
                }
                if (!dataContext.Patients.Any(patient => patient.Guid.Equals(reservation.PatientId)))
                {
                    throw GetResponseException(HttpStatusCode.NotFound, Messages.PatientDoesNotExist);
                }
                if (!dataContext.Doctors.Any(doctor => doctor.Guid.Equals(reservation.DoctorId)))
                {
                    throw GetResponseException(HttpStatusCode.NotFound, Messages.DoctorDoesNotExist);
                }
                if (!dataContext.Hospitals.Any(hospital => hospital.Guid.Equals(reservation.HospitalId)))
                {
                    throw GetResponseException(HttpStatusCode.NotFound, Messages.HospitalDoesNotExist);
                }
                if (!dataContext.Hospitals.First(hospital => hospital.Guid.Equals(reservation.HospitalId)).HospitalDoctors
                    .Any(hospitalDoctorLink => hospitalDoctorLink.DoctorId.Equals(reservation.DoctorId)))
                {
                    throw GetResponseException(HttpStatusCode.NotFound,
                                               Messages.DoctorNotPartOfHospitalForReservations);
                }

                reservation.Guid = Guid.Empty;
                dataContext.HistoricalReservations.InsertOnSubmit(reservation);
                dataContext.SubmitChanges();
            });
        }
示例#3
0
        private static void UpdateExistingReservationFields(Guid id, HistoricalReservationDto historicalReservationDto,
                                                            PersistenceClassesDataContext dataContext)
        {
            var reservation = dataContext.HistoricalReservations.FirstOrDefault(r => r.Guid.Equals(id));

            if (reservation == null)
            {
                throw GetResponseException(HttpStatusCode.NotFound, Messages.ReservationDoesNotExist);
            }
            if (historicalReservationDto.ReservationTime != DateTime.MinValue) // Is assigned? (Non nullable)
            {
                reservation.ReservationTime = historicalReservationDto.ReservationTime;
            }
            if (historicalReservationDto.Reason != null)
            {
                reservation.Reason = historicalReservationDto.Reason;
            }
            dataContext.SubmitChanges();
        }
示例#4
0
 public void UpdateReservation(Guid id, HistoricalReservationDto historicalReservationDto)
 {
     EnsureNotInRole(User, UserRole.Patient, Messages.TalkToDoctorToUpdateReservation);
     Execute(dataContext => UpdateExistingReservationFields(id, historicalReservationDto, dataContext));
 }