예제 #1
0
        /// <summary>
        /// routes queue to a different department and saves history
        /// </summary>
        /// <param name="queueID">queue to route</param>
        /// <param name="departmentID">department to route to</param>
        public void RouteQueue(int queueID, int departmentID)
        {
            using (var db = new ModelDBContext())
            {
                var currentQueue = db.Queues.Where(q => q.QueueID == queueID).First();

                if (currentQueue.DepartmentID != departmentID)
                {
                    //create history record shows the old and new departments
                    var queueHistory = new QueueHistory();
                    queueHistory.QueueID = queueID;
                    queueHistory.RoutedFromDepartmentID = currentQueue.DepartmentID;
                    queueHistory.RoutedToDepartmentID   = departmentID;
                    queueHistory.AssignedFromEmployeeID = currentQueue.EmployeeID;
                    queueHistory.EventDatetime          = DateTime.Now;

                    db.QueueHistories.Add(queueHistory);

                    currentQueue.DepartmentID = departmentID;
                    currentQueue.EmployeeID   = null;

                    var inProgressQueueStatus = db.QueueStatus.FirstOrDefault(q => q.QueueStatusID == (int)QueueStatusEnum.InProgress);
                    if (inProgressQueueStatus != null)
                    {
                        currentQueue.QueueStatusID = inProgressQueueStatus.QueueStatusID;
                    }

                    db.SaveChanges();
                }
            }
        }
예제 #2
0
        public void DeliverOrder(int idQueue)
        {
            var objQueue = _queueRepository.Get(idQueue, new string[] { "Order" });

            if (objQueue == null)
            {
                AddError("Queue not found");
                return;
            }
            var objQueueHistory = new QueueHistory(objQueue);

            _queueHistoryRepository.Create(objQueueHistory);
            _queueRepository.Delete(objQueue);
            Commit();
        }
예제 #3
0
        public async Task <int> SaveQueueHistory(QueueHistory history)
        {
            var id = await _queueHistoryRepository.InsertAndGetIdAsync(history);

            return(id);
        }