Пример #1
0
        public void AhaMoveCreateOrderTest()
        {
            PathInfo kitchenPath = new PathInfo {
                Address = "53 Lê Anh Xuân, Phường Bến Thành, Quận 1, Thành phố Hồ Chí Minh"
            };
            PathInfo customerPath = new PathInfo {
                Address = "5 Nguyễn Gia Thiều, Phường 6, Quận 3, Thành phố Hồ Chí Minh", Name = "Guest", Mobile = "8954342123"
            };
            List <OrderDetail> orderDetails = new List <OrderDetail> {
                new OrderDetail {
                    product_id = 1, product_name = "Sản phẩm 1", price = 50000, quantity = 2
                },
                new OrderDetail {
                    product_id = 2, product_name = "Sản phẩm 2", price = 80000, quantity = 3
                }
            };
            var response = AhaMoveApi.CreateOrder(kitchenPath, customerPath, orderDetails);

            Console.WriteLine(response);
        }
Пример #2
0
        private void ProcessCallDelivery()
        {
            var pendingOrders = GetListToDelivery(OrderLimit);

            if (pendingOrders.Count() == 0)
            {
                return;
            }

            //IOrderDal orderDal = new OrderDal();
            IOrderDetailDal orderDetailDal = new OrderDetailDal();

            //IOrderHistoryBo orderHistoryBo = new OrderHistoryBo(new OrderHistoryDal());
            //IThirdPartyLogBo thirdPartyLogBo = new ThirdPartyLogBo(new ThirdPartyLogDal());
            //IOrderBo orderBo = new OrderBo(orderDal, orderDetailDal, orderHistoryBo, thirdPartyLogBo);
            foreach (var order in pendingOrders)
            {
                PathInfo kitchenPath = new PathInfo {
                    Address = StaticVariable.Kitchen1Address
                };
                PathInfo customerPath = new PathInfo {
                    Address = order.delivery_address, Name = order.customer_name, Mobile = order.customer_phone
                };
                var orderDetails  = orderDetailDal.GetByOrderId(order.order_id);
                var orderResponse = AhaMoveApi.CreateOrder(kitchenPath, customerPath, orderDetails.ToList());
                if (orderResponse != null)
                {
                    var orderInfo = new Entities.Order
                    {
                        order_id = order.order_id,
                        //status = (short)OrderStatusEnum.Delivering,
                        delivery_status        = (short)DeliveryStatus.Idle,
                        delivery_order_id      = orderResponse.order_id,
                        delivery_price         = orderResponse.order.total_pay,
                        delivery_estimate_time = orderResponse.order.duration,
                        reason_note            = "ChangeToDelivery"
                    };
                    var result = ChangeOrderToDelivery(orderInfo);
                    if (result != 1)
                    {
                        Logger.ErrorLog("[ChangeToDelivery] Error save Delivery with OrderId: " + order.order_id);
                    }
                    else
                    {
                        Logger.WriteLog(Logger.LogType.Info, "[ChangeToDelivery] SUCCESS save Delivery with OrderId: " + order.order_id);
                    }
                }
                else
                {
                    var orderInfo = new Entities.Order
                    {
                        order_id = order.order_id,
                        //status = (short)OrderStatusEnum.Delivering,
                        delivery_status        = (short)DeliveryStatus.ApiError,
                        delivery_order_id      = string.Empty,
                        delivery_price         = 0,
                        delivery_estimate_time = 0,
                        reason_note            = "MarkDeliveryErrorApi"
                    };
                    var result = ChangeOrderToDelivery(orderInfo);
                    if (result != 1)
                    {
                        Logger.ErrorLog("[ChangeToDelivery] Error change DeliveryStatus to ApiError with orderId: " + order.order_id);
                    }
                    else
                    {
                        Logger.WriteLog(Logger.LogType.Info, "[ChangeToDelivery] Success change DeliveryStatus to ApiError with OrderId: " + order.order_id);
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        /// The process data
        /// Author: ThanhDT
        /// Created date: 8/9/2020 2:22 AM
        /// </summary>
        private void ProcessMoveOrderToKitchen()
        {
            var pendingOrders = GetListPendingToKitchen(OrderLimit);

            if (pendingOrders.Count() == 0)
            {
                return;
            }

            //IOrderDal orderDal = new OrderDal();
            //IOrderDetailDal orderDetailDal = new OrderDetailDal();
            //IOrderHistoryBo orderHistoryBo = new OrderHistoryBo(new OrderHistoryDal());
            //IThirdPartyLogBo thirdPartyLogBo = new ThirdPartyLogBo(new ThirdPartyLogDal());
            //IOrderBo orderBo = new OrderBo(orderDal, orderDetailDal, orderHistoryBo, thirdPartyLogBo);
            foreach (var order in pendingOrders)
            {
                int deliveryTime;
                OrderEstimateResponse estimateOrder;
                // Nếu đơn hàng là Delivery thì cần tính toán thời gian vận chuyển
                if (order.order_type == (short)OrderTypeEnum.Delivery)
                {
                    PathInfo kitchenPath = new PathInfo {
                        Address = StaticVariable.Kitchen1Address
                    };
                    PathInfo customerPath = new PathInfo {
                        Address = order.delivery_address, Name = order.customer_name, Mobile = order.customer_phone
                    };
                    estimateOrder = AhaMoveApi.EstimateOrderFee(kitchenPath, customerPath);
                    if (estimateOrder == null)
                    {
                        estimateOrder = new OrderEstimateResponse();
                        deliveryTime  = DeliveryTime;
                    }
                    else
                    {
                        deliveryTime = estimateOrder.duration / 60;
                    }
                }
                // Nếu đơn hàng là lấy ngay thì bỏ qua thời gian vận chuyển
                else
                {
                    deliveryTime  = 0;
                    estimateOrder = new OrderEstimateResponse();
                }

                // Nếu thời gian giao hàng là NOW (=null) hoặc gần đến thời gian giao hàng bù cả thời gian nấu + vận chuyển thì chuyển sang bếp
                if (order.delivery_date == null || order.delivery_date.Value <= DateTime.Now.AddMinutes(order.max_cooking_time + deliveryTime))
                {
                    var orderInfo = new Entities.Order
                    {
                        order_id = order.order_id,
                        status   = (short)OrderStatusEnum.PushToPOS,
                        //delivery_status = (short)DeliveryStatus.Idle,
                        //delivery_order_id = order.order_id,
                        delivery_price         = estimateOrder.total_price,
                        delivery_estimate_time = (short)(estimateOrder.duration / 60),
                        reason_note            = "MoveToKitchen"
                    };
                    var result = MoveOrderToChicken(orderInfo);
                    if (result != 1)
                    {
                        Logger.ErrorLog("[MoveOrderToChicken] Update error with orderId: " + order.order_id);
                    }
                }
            }
            //var orderList = new List<Entities.Order>
        }
Пример #4
0
        public ErrorCodes ProcessCallAhamove(int orderId, string user)
        {
            try
            {
                var order = _orderDal.GetById(orderId);
                if (order != null && order.order_id > 0)
                {
                    // validate
                    if (order.status != OrderStatusEnum.KitchenDone.GetHashCode() || order.order_type != OrderTypeEnum.Delivery.GetHashCode())
                    {
                        return(ErrorCodes.StatusError);
                    }

                    if (order.delivery_status > 0 && order.delivery_status != DeliveryStatus.CallAnotherShipping.GetHashCode())
                    {
                        return(ErrorCodes.AhamoveExistError);
                    }

                    PathInfo kitchenPath = new PathInfo {
                        Address = StaticVariable.Kitchen1Address
                    };
                    PathInfo customerPath = new PathInfo {
                        Address = order.delivery_address, Name = order.customer_name, Mobile = order.customer_phone
                    };
                    var orderDetails  = _orderDetailDal.GetByOrderId(order.order_id);
                    var orderResponse = AhaMoveApi.CreateOrder(kitchenPath, customerPath, orderDetails.ToList());
                    if (orderResponse != null)
                    {
                        var orderInfo = new Entities.Order
                        {
                            order_id = order.order_id,
                            //status = (short)OrderStatusEnum.Delivering,
                            delivery_status        = (short)DeliveryStatus.Idle,
                            delivery_order_id      = orderResponse.order_id,
                            delivery_price         = orderResponse.order.total_pay,
                            delivery_estimate_time = orderResponse.order.duration,
                            reason_note            = "ChangeToDelivery"
                        };
                        var result = _orderDal.ChangeToDelivery(orderInfo);
                        if (result != 1)
                        {
                            Logger.ErrorLog("[ChangeToDelivery] Error save Delivery with OrderId: " + order.order_id);
                            return(ErrorCodes.BusinessError);
                        }
                        else
                        {
                            // ok thì bắn vào order history
                            _orderHistoryBo.Insert(new OrderHistory
                            {
                                change_log      = "ChangeToDelivery",
                                created_by      = user,
                                order_id        = orderId,
                                delivery_status = (short)DeliveryStatus.Idle
                            });

                            Logger.WriteLog(Logger.LogType.Info, "[ChangeToDelivery] SUCCESS save Delivery with OrderId: " + order.order_id);
                            return(ErrorCodes.Success);
                        }
                    }
                    else
                    {
                        Logger.ErrorLog("[ChangeToDelivery] Error change DeliveryStatus to ApiError with orderId: " + order.order_id);
                        return(ErrorCodes.AhamoveError);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(ErrorCodes.Exception);
            }

            return(ErrorCodes.BusinessError);
        }