コード例 #1
0
        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");
            }
        }
コード例 #2
0
        public Models.ReservationModel CreateReservationModel(Reservation rsv, int clientId, string ip)
        {
            var item = new Models.ReservationModel();

            item.ReservationID        = rsv.ReservationID;
            item.ResourceID           = rsv.Resource.ResourceID;
            item.ResourceName         = rsv.Resource.ResourceName;
            item.AccountID            = rsv.Account.AccountID;
            item.AccountName          = rsv.Account.Name;
            item.ShortCode            = rsv.Account.ShortCode;
            item.ReservedByClientID   = rsv.Client.ClientID;
            item.ReservedByClientName = string.Format("{0} {1}", rsv.Client.FName, rsv.Client.LName);

            Client c;

            if (rsv.ClientIDBegin.HasValue)
            {
                if (rsv.ClientIDBegin.Value > 0)
                {
                    c = DA.Current.Single <Client>(rsv.ClientIDBegin.Value);
                    item.StartedByClientID   = c.ClientID;
                    item.StartedByClientName = string.Format("{0} {1}", c.FName, c.LName);
                }
                else
                {
                    item.StartedByClientID   = 0;
                    item.StartedByClientName = string.Empty;
                }
            }
            else
            {
                c = DA.Current.Single <Client>(clientId);
                item.StartedByClientID   = clientId;
                item.StartedByClientName = string.Format("{0} {1}", c.FName, c.LName);
            }

            var isInLab            = KioskUtility.ClientInLab(rsv.Resource.ProcessTech.Lab.LabID, clientId, ip);
            ReservationState state = ReservationUtility.GetReservationState(rsv.ReservationID, clientId, isInLab);

            item.Startable           = ReservationUtility.IsStartable(state);
            item.NotStartableMessage = GetNotStartableMessage(state);

            var inst = ActionInstanceUtility.Find(ActionType.Interlock, rsv.Resource.ResourceID);

            item.HasInterlock = inst != null;

            item.ReturnUrl = GetResourceUrl(rsv.Resource.ResourceID);

            return(item);
        }