public RoomService( ISessionScheduleValidator sessionScheduleValidator, IRoomRepository roomRepository, IMapper mapper) { _sessionScheduleValidator = sessionScheduleValidator; _roomRepository = roomRepository; _mapper = mapper; }
public SessionRequest ApproveSessionRequest(Guid requestId, ISessionScheduleValidator sessionScheduleValidator) { var request = SessionRequests.Single(r => r.Id == requestId); var isValid = Room.ValidateSchedule(this.Id, null, request.RequestedTime, sessionScheduleValidator); if (isValid) { request.Approve(); return(request); } throw new InvalidOperationException(); }
public Session RescheduleSession(Session session, DateRange newSchedule, ISessionScheduleValidator sessionScheduleValidator) { Session result = null; DoWithSession(session.Id, (s) => { var validatorResult = Room.ValidateSchedule(this.Id, session.Id, newSchedule, sessionScheduleValidator); if (validatorResult) { var sessionModel = s.Reschedule(newSchedule); result = sessionModel; } }); return(result); }
public SessionRequest RequestSession( Guid requestingUserId, DateRange requestedTime, Guid?roomFunctionId, ISessionScheduleValidator sessionScheduleValidator) { var result = Room.ValidateSchedule(this.Id, null, requestedTime, sessionScheduleValidator); if (result) { var request = SessionRequest.Create( requestingUserId, this.Id, requestedTime.Start, requestedTime.End, roomFunctionId); SessionRequests.Add(request); return(request); } throw new InvalidOperationException(); }
public Session CreateSession(DateRange scheduledTime, Guid sessionRequestId, ISessionScheduleValidator sessionScheduleValidator) { return(CreateSessionCore(scheduledTime, sessionRequestId, sessionScheduleValidator)); }
public Session CreateSession(DateRange scheduledTime, ISessionScheduleValidator sessionScheduleValidator) { return(CreateSessionCore(scheduledTime, null, sessionScheduleValidator)); }
private static bool ValidateSchedule(Guid roomId, Guid?sessionId, DateRange schedule, ISessionScheduleValidator sessionScheduleValidator) { var validatorResult = AsyncHelper.RunSync(() => sessionScheduleValidator.ValidateAsync(roomId, sessionId, schedule)); if (validatorResult != SessionScheduleValidatorResult.Success) { ScheduleValidatorHelper.HandleSessionScheduleValidatorError(validatorResult); return(false); } return(true); }
private Session CreateSessionCore(DateRange scheduledTime, Guid?sessionRequestId, ISessionScheduleValidator sessionScheduleValidator) { var result = Room.ValidateSchedule(this.Id, null, scheduledTime, sessionScheduleValidator); if (result) { var session = Session.Create(this.Id, scheduledTime, sessionRequestId); Sessions.Add(session); return(session); } throw new InvalidOperationException(); }