Exemplo n.º 1
0
        /// <summary>
        /// Add new laundry order
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public async Task <int> AddLaundryOrderAsync(LaundryOrder order)
        {
            if (order.NoOfCloths == 0 || order.PickUpDate == null || order.PickUpTimeSlot == null || order.PickUpAddress == null ||
                order.OrderStatus == null)
            {
                return((int)StatusCode.ExpectationFailed);
            }

            order.CreatedAt = DateTime.UtcNow;
            await _laundryRepository.AddAsync(order);

            await _laundryRepository.Uow.SaveChangesAsync();

            var agentAssignmentCountList = (await _ironingRepository.GetAgentOrdersAssignmentCountAsync()).ToList();
            var addedOrder = await GetLaundryOrderAsync(order.Id);

            if (agentAssignmentCountList.Count() > 0 && addedOrder != null)
            {
                var orderMapping = new OrderAgentMapping();
                orderMapping.OrderMappingId = Guid.NewGuid();
                orderMapping.AgentId        = agentAssignmentCountList[0].AgentId;
                orderMapping.OrderId        = addedOrder.OrderId;
                await _orderAgentMappingRepository.AddAsync(orderMapping);

                await _orderAgentMappingRepository.Uow.SaveChangesAsync();
            }
            return(order.Id);
        }