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 }); } }
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 }); } }