Exemplo n.º 1
0
        public static GetOrderBySerialNoResponse GetOrderDetailsBySerialNo(string serialNo)
        {
            var orders = new List <OrderLocal>();

            using (var dbContext = new DeliversEntities())
            {
                var order = dbContext.Orders.Where(o => o.SerialNo.ToString() == serialNo);
                if (order.Any())
                {
                    foreach (var o in order)
                    {
                        var ord = o.MappOrder();
                        orders.Add(ord);
                    }
                }
                return(new GetOrderBySerialNoResponse
                {
                    Orders = orders,
                    DeliveryFee = CommonService.GetDeliveryAmount(),
                    DeliveryTime = 50
                });
            }
        }
Exemplo n.º 2
0
        public static PlaceOrderResponseModel Place(PlaceOrderRequestModel request, string orderBy)
        {
            DbGeography userLoc       = null;
            var         orderstatus   = OrderHistoryEnu.Placed.Value;
            var         estimatedTime = "45 minutes away";
            var         orderIds      = new List <string>();

            if (!string.IsNullOrEmpty(request.Cords) && request.Cords != "")
            {
                var latlng = request.Cords.Split('_').ToList();
                if (latlng.Count == 2)
                {
                    userLoc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng
                }
            }


            using (var dbContext = new DeliversEntities())
            {
                foreach (var item in request.Items)
                {
                    var dbItem = dbContext.ItemDetails.FirstOrDefault(i => i.Id == item.ItemId);
                    if (dbItem != null)
                    {
                        item.RestId = dbItem.ListItemId;
                    }
                }
            }


            var rest_groups = request.Items.GroupBy(item => item.RestId).ToList();
            var serial      = Guid.NewGuid().ToString().Substring(0, 6).ToUpper();

            using (var dbContext = new DeliversEntities())
            {
                foreach (var localG in rest_groups)
                {
                    var localList   = localG.ToList();
                    var totalAmount = localList.Sum(i => ItemDetailsService.GetItemDetailLocalById(i.ItemId).Price *i.Quantity);
                    var order       = new Order
                    {
                        Address       = request.Address,
                        Instructions  = request.Instructions,
                        Status        = orderstatus,
                        OrderBy       = orderBy,
                        Amount        = totalAmount,
                        DateTime      = CommonService.GetSystemTime(),
                        Cords         = userLoc,
                        EstimatedTime = estimatedTime,
                        SerialNo      = serial,
                        PickedBy      = Guid.Empty.ToString(),
                        UpdatedAt     = CommonService.GetSystemTime(),
                        DeliveryCost  = CommonService.GetDeliveryAmount()
                    };
                    dbContext.Orders.Add(order);

                    dbContext.OrderHistories.Add(new OrderHistory
                    {
                        OrderId   = order.Id,
                        DateTime  = CommonService.GetSystemTime(),
                        Status    = orderstatus,
                        IsCurrent = true
                    });
                    foreach (var item in localList)
                    {
                        var itmObj = new OrderDetail
                        {
                            OrderId  = order.Id,
                            ItemId   = item.ItemId,
                            Quantity = item.Quantity,
                            RestId   = item.RestId
                        };
                        dbContext.OrderDetails.Add(itmObj);
                    }
                    dbContext.SaveChanges();

                    // generate notification
                    NotificationService.ProcessNotificationRequest(orderstatus, order.Id);
                    orderIds.Add(order.Id.ToString());
                }

                return(new PlaceOrderResponseModel {
                    EstimatedTime = estimatedTime, OrderIds = orderIds, SerailNo = serial
                });
            }
        }