private HistoricalReservationDto HideDoctorsEgn(HistoricalReservationDto historicalReservation) { if (IsUserInRole(User, UserRole.Patient)) { historicalReservation.Doctor.Egn = "HIDDEN"; } return(historicalReservation); }
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(); }); }
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(); }
public void UpdateReservation(Guid id, HistoricalReservationDto historicalReservationDto) { EnsureNotInRole(User, UserRole.Patient, Messages.TalkToDoctorToUpdateReservation); Execute(dataContext => UpdateExistingReservationFields(id, historicalReservationDto, dataContext)); }