public async Task <Models.ReservationModel> Start(int reservationId, int clientId, string ip) { var rsv = DA.Scheduler.Reservation.Single(reservationId); var isInLab = KioskUtility.ClientInLab(rsv.Resource.ProcessTech.Lab.LabID, clientId, ip); ReservationState state = ReservationUtility.GetReservationState(rsv.ReservationID, clientId, isInLab); var startable = ReservationUtility.IsStartable(state); if (!startable) { throw new InvalidOperationException(string.Format("ReservationID {0} cannot be started: {1}", reservationId, GetNotStartableMessage(state))); } if (rsv != null) { await ReservationUtility.StartReservation(rsv, clientId, isInLab); return(CreateReservationModel(rsv, clientId, ip)); } else { throw new ArgumentException(string.Format("Cannot find record for ReservationID = {0}", reservationId), "reservationId"); } }