Exemple #1
0
        public void Forward(ForwardToDeDeliveryman forwardToDeDeliveryman)
        {
            if (forwardToDeDeliveryman.Items.GroupBy(p => p.Position).Select(p => p.Count()).Any(p => p > 1))
            {
                AddError("Duplicate position");
                return;
            }

            var objDeliveyman = _deliverymanRepository.Get(forwardToDeDeliveryman.IdDeliveryman);

            if (objDeliveyman == null)
            {
                AddError("Deliveryman not found");
                return;
            }
            if (objDeliveyman.IdCurrentCompanyBranch == null || objDeliveyman.IdCurrentCompanyBranch != forwardToDeDeliveryman.IdCompanyBranch)
            {
                AddError("Deliveryman not forward to companybranch");
                return;
            }

            var objQueues = _queueRepository.Get(forwardToDeDeliveryman.Items.Select(p => p.IdQueue).ToArray(), new [] { "DeliveryAddress.Address" });

            if (objQueues.Length < forwardToDeDeliveryman.Items.Count)
            {
                AddError("Order not found");
                return;
            }

            Address currentAddress = null;
            var     util           = new Util();

            foreach (var item in forwardToDeDeliveryman.Items.OrderBy(p => p.Position))
            {
                var queue = objQueues.First(p => p.IdQueue == item.IdQueue);
                queue.Forward(forwardToDeDeliveryman.IdDeliveryman, item.Position,
                              currentAddress != null ? util.CalculateDistence(currentAddress.Latitude, currentAddress.Longitude, queue.DeliveryAddress.Address.Latitude, queue.DeliveryAddress.Address.Longitude) : queue.CalcDeliveryTime());
                currentAddress = queue.DeliveryAddress.Address;
                //TODO prepare push notification
            }

            if (Commit())
            { //TODO Push notification
            }
        }
Exemple #2
0
 public Task <ObjectResult> Forward(ForwardToDeDeliveryman forwardToDeDeliveryman)
 {
     _queueApplication.Forward(forwardToDeDeliveryman);
     return(CreateResponse(null));
 }