public ResponseModel GetDeliveryCharges(PlaceOrderRequestModel listModel) { var response = new ResponseModel { Success = false, Messages = new List <string>() }; if (listModel == null || listModel.Items == null || listModel.Items.Count == 0 && string.IsNullOrEmpty(listModel.Cords)) { response.Messages.Add("Data not mapped"); response.Data = listModel; } else if (listModel.Cords.Split('_').Length != 2) { response.Messages.Add("Invalid Cord format. Please specify in Lat_Lang .i.e. '32.202895_74.176716'"); response.Data = listModel; } else { try { response.Data = new { DeliveryAmount = CommonService.GetDeliveryAmount(), DeliveryTime = 50 }; response.Messages.Add("Success"); response.Success = true; } catch (Exception excep) { response.Messages.Add("Something bad happened."); } } return(response); }
public ResponseModel PlaceOrder(PlaceOrderRequestModel listModel) { var response = new ResponseModel { Success = false, Messages = new List <string>() }; if (listModel == null || listModel.Items == null || listModel.Items.Count == 0 && string.IsNullOrEmpty(listModel.Cords)) { response.Messages.Add("Data not mapped"); response.Data = listModel; } else if (listModel.Cords.Split('_').Length != 2) { response.Messages.Add("Invalid Cord format. Please specify in Lat_Lang .i.e. '32.202895_74.176716'"); response.Data = listModel; } else { try { var contextnew = new ApplicationDbContext(); var userStore = new UserStore <ApplicationUser>(contextnew); var userManager = new UserManager <ApplicationUser>(userStore); var user = userManager.FindByName(User.Identity.Name); var item = OrderService.Place(listModel, user.Id); response.Data = item; response.Messages.Add("Success"); response.Success = true; } catch (Exception excep) { response.Messages.Add("Something bad happened."); } } return(response); }
public static string Place(PlaceOrderRequestModel request, string orderBy) { using (var dbContext = new DeliversEntities()) { var totalAmount = request.Items.Sum(i => ItemDetailsService.GetItemDetailLocalById(i.ItemId).Price *i.Quantity); var order = new Order { Address = request.Address, Instructions = request.Instructions, Status = OrderHistoryEnu.WaitingForPickup.Value, OrderBy = orderBy, Amount = totalAmount, DateTime = DateTime.Now, EstimatedTime = "45 minutes away", }; dbContext.Orders.Add(order); foreach (var item in request.Items) { var itmObj = new OrderDetail { OrderId = order.Id, ItemId = item.ItemId, Quantity = item.Quantity, }; dbContext.OrderDetails.Add(itmObj); } dbContext.OrderHistories.Add(new OrderHistory { OrderId = order.Id, DateTime = DateTime.Now, MovedBy = orderBy, Status = OrderHistoryEnu.WaitingForPickup.Value }); dbContext.SaveChanges(); return(order.EstimatedTime); } }
public async System.Threading.Tasks.Task <ResponseModel_PlaceOrder> PlaceOrderAsync(PlaceOrderRequestModel listModel) { var response = new ResponseModel_PlaceOrder { Success = false, Messages = new List <string>() }; if (listModel == null || listModel.Items == null || listModel.Items.Count == 0 && string.IsNullOrEmpty(listModel.Cords)) { response.Messages.Add("Data not mapped"); response.Data = listModel; } else if (listModel.Cords.Split('_').Length != 2) { response.Messages.Add("Invalid Cord format. Please specify in Lat_Lang .i.e. '32.202895_74.176716'"); response.Data = listModel; } else { try { var orderById = listModel.OrderPlacedById; if (string.IsNullOrEmpty(listModel.OrderPlacedById)) { var contextnew = new ApplicationDbContext(); var userStore = new UserStore <ApplicationUser>(contextnew); var userManager = new UserManager <ApplicationUser>(userStore); var user = userManager.FindByName(User.Identity.Name); orderById = user.Id; } var signalRUrl = ConfigurationManager.AppSettings["signalRHubUrl"]; var item = OrderService.Place(listModel, orderById); response.Data = item.EstimatedTime; response.OrderId = item.OrderIds; response.SerialNo = item.SerailNo; response.Messages.Add("Success"); response.Success = true; //get orders by serial no here var _order = OrderService.GetOrderDetailsBySerialNo(item.SerailNo); await SignalRService.NotifyNewOrdersReceivedAsync(_order.Orders, signalRUrl); } catch (Exception excep) { response.Messages.Add("Something bad happened."); } } return(response); }
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 }); } }