public static GetListResponseModel GetI_Favourite_temsForList(GetFavouriteListRequestModel requestModel) { DbGeography userLoc = null; List <string> latlng = new List <string>(); if (!string.IsNullOrEmpty(requestModel.Cords) && requestModel.Cords != "") { latlng = requestModel.Cords.Split('_').ToList(); if (latlng.Count == 2) { userLoc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng } } using (var dbContext = new DeliversEntities()) { requestModel.CurrentPage--; var response = new GetListResponseModel(); var newList = new List <ListItemLocal>(); string searchText = null; if (!string.IsNullOrEmpty(requestModel.SearchTerm)) { searchText = requestModel.SearchTerm.ToLower(); } var list = dbContext.ListItems_Favt.Where(item => (string.IsNullOrEmpty(searchText) || item.ListItem.Name.ToLower().Contains(searchText) || item.ListItem.Description.ToLower().Contains(searchText) || (item.ListItem.ItemDetails.Any(det => det.Name.ToLower().Contains(searchText))) )).ToList(); if (list.Any()) { var take = list.Skip(requestModel.CurrentPage * requestModel.ItemsPerPage). Take(requestModel.ItemsPerPage).ToList(); if (take.Any()) { var finals = take.Select(obj => obj.ListItem.MapListItem()).ToList(); /// foreach (var rest in finals) { var dist = CommonService.GetDistance((double)userLoc.Latitude, (double)userLoc.Longitude, Convert.ToDouble(rest.LocationObj.Latitude), Convert.ToDouble(rest.LocationObj.Longitude)); // if ((int)dist < Convert.ToInt16(20)) { var disst = Math.Round((double)dist, 2); rest.LocationObj = null; rest.Distance = disst; rest.Name = rest.Name; newList.Add(rest); } } response.Items = newList.OrderBy(obj => obj.Distance).ToList(); } } response.ItemsPerPage = requestModel.ItemsPerPage; response.CurrentPage++; response.TotalItems = list.Count; return(response); } }
public static void AddNewRestaurent(ListItemLocal source) { using (var dbContext = new DeliversEntities()) { DbGeography loc = null; if (!String.IsNullOrEmpty(source.Location) && source.Location != "") { var latlng = source.Location.Split('_'); if (latlng.Length == 2) { loc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng } } var dbObj = new ListItem { Location = loc, Name = source.Name, Description = source.Description, Phone = source.Phone, LogoImage = source.LogoImage, LastEdit = DateTime.Now, BgImage = source.BgImage, Address = source.Address, Rating = source.Rating, Type = source.Type, Id = source.Id, Status = source.Status, Cords = loc, CreationDate = DateTime.Now }; dbContext.ListItems.Add(dbObj); dbContext.SaveChanges(); } }
public static GetOrdersResponseModel OrdersReadyToAssign(GetOrdersListRequestModel requestModel) { using (var dbContext = new DeliversEntities()) { requestModel.CurrentPage--; var response = new GetOrdersResponseModel(); var list = dbContext.Orders .Where( od => od.Status == OrderHistoryEnu.ConfirmedByRestaurant.Value && od.OrderHistories.Any(str => str.Status == OrderHistoryEnu.ConfirmedByRestaurant.Value && str.IsCurrent)) .ToList(); DbGeography riderLoc = null; List <string> latlng = new List <string>(); if (!string.IsNullOrEmpty(requestModel.Cords) && requestModel.Cords != "") { latlng = requestModel.Cords.Split('_').ToList(); if (latlng.Count == 2) { riderLoc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng } } var inRangeOrders = new List <Order>(); if (list != null && list.Any()) { foreach (var o in list) { var dist = CommonService.GetDistance((double)riderLoc.Latitude, (double)riderLoc.Longitude, Convert.ToDouble(o.Cords.Latitude), Convert.ToDouble(o.Cords.Longitude)); //if ((int)dist < Convert.ToInt16(10)) { inRangeOrders.Add(o); } } } if (inRangeOrders.Any()) { var take = list.Skip(requestModel.CurrentPage * requestModel.ItemsPerPage). Take(requestModel.ItemsPerPage).ToList(); if (take.Any()) { var finals = take.Select(obj => obj.MappOrderWaitingForPickup()).ToList(); response.Orders = finals; } } response.ItemsPerPage = requestModel.ItemsPerPage; response.CurrentPage++; response.TotalItems = list.Count; return(response); } }
public static long Edit(ListItemLocal source) { DbGeography loc = null; List <string> latlng = new List <string>(); if (!string.IsNullOrEmpty(source.Cords) && source.Cords != "") { latlng = source.Cords.Split('_').ToList(); if (latlng.Count == 2) { loc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng } } using (var dbContext = new DeliversEntities()) { var obj = dbContext.ListItems.FirstOrDefault(x => x.Id == source.Id); obj.Address = source.Address; obj.Closes = source.Closes; obj.Cords = loc; obj.Description = source.Description; obj.LastEdit = CommonService.GetSystemTime(); obj.Location = loc; obj.Name = source.Name; obj.Phone = source.Phone; obj.Opens = source.Opens; obj.Status = source.Status; obj.Type = source.Type; obj.MinOrder = source.MinOrder; if (!string.IsNullOrWhiteSpace(source.BgImage)) { obj.BgImage = "bg_edit"; } if (!string.IsNullOrWhiteSpace(source.LogoImage)) { obj.LogoImage = "logo_edit"; } dbContext.SaveChanges(); } return(source.Id); }
public static long Create(ListItemLocal source) { DbGeography loc = null; List <string> latlng = new List <string>(); if (!string.IsNullOrEmpty(source.Cords) && source.Cords != "") { latlng = source.Cords.Split('_').ToList(); if (latlng.Count == 2) { loc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng } } var obj = new ListItem { Address = source.Address, BgImage = "https://via.placeholder.com/1350x450", Closes = source.Closes, Cords = loc, CreationDate = CommonService.GetSystemTime(), Description = source.Description, LastEdit = CommonService.GetSystemTime(), Location = loc, Name = source.Name, Phone = source.Phone, Opens = source.Opens, Status = source.Status, Type = source.Type, Rating = "0.00", MinOrder = source.MinOrder, LogoImage = "https://via.placeholder.com/120x120" }; using (var dbContext = new DeliversEntities()) { dbContext.ListItems.Add(obj); dbContext.SaveChanges(); } return(obj.Id); }
public static bool UpdateUserLocation(userLocationModel requestModel) { DbGeography userLoc = null; List <string> latlng = new List <string>(); if (!string.IsNullOrEmpty(requestModel.Cords) && requestModel.Cords != "") { latlng = requestModel.Cords.Split('_').ToList(); if (latlng.Count == 2) { userLoc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng using (var dbContext = new DeliversEntities()) { var userlocmap = dbContext.Rider_Location_Map.FirstOrDefault(l => l.UserId == requestModel.UserId); if (userlocmap == null) { var obj = new Rider_Location_Map { UserId = requestModel.UserId, Location = userLoc, LastUpdated = DateTime.Now }; dbContext.Rider_Location_Map.Add(obj); } else { userlocmap.Location = userLoc; userlocmap.LastUpdated = DateTime.Now; } dbContext.SaveChanges(); return(true); } } } return(false); }
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 }); } }
public static GetListResponseModel GetItemsForList(GetListRequestModel requestModel) { var distanceFrom = 0; var distanceTo = 1000000; float rating = 0; if (!string.IsNullOrEmpty(requestModel.DistanceFrom)) { distanceFrom = Convert.ToInt16(requestModel.DistanceFrom); } if (!string.IsNullOrEmpty(requestModel.DistanceTo)) { distanceTo = Convert.ToInt16(requestModel.DistanceTo); } if (!string.IsNullOrEmpty(requestModel.Rating)) { rating = (float)Convert.ToDouble(requestModel.Rating); } DbGeography userLoc = null; List <string> latlng = new List <string>(); if (!string.IsNullOrEmpty(requestModel.Cords) && requestModel.Cords != "") { latlng = requestModel.Cords.Split('_').ToList(); if (latlng.Count == 2) { userLoc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng } } using (var dbContext = new DeliversEntities()) { var allCats = GetCategories(true); if ((requestModel.IsWeb && (requestModel.TypeList == null || requestModel.TypeList.Count() == 0)) || (!requestModel.IsWeb && (requestModel.Type == -1))) { requestModel.TypeList = new List <int>(); requestModel.TypeList = allCats.Select(c => (int)c.CatId).ToList(); } requestModel.CurrentPage--; var response = new GetListResponseModel(); var newList = new List <ListItemLocal>(); string searchText = null; if (!string.IsNullOrEmpty(requestModel.SearchTerm)) { searchText = requestModel.SearchTerm.ToLower(); } var list = dbContext.ListItems.Where(item => item.Status && ((requestModel.IsWeb && requestModel.TypeList.Any(o => o == item.Type)) || (!requestModel.IsWeb && requestModel.Type == -1 && requestModel.TypeList.Any(o => o == item.Type)) || (item.Type == requestModel.Type && !requestModel.IsWeb)) && (string.IsNullOrEmpty(searchText) || item.Name.ToLower().Contains(searchText) || item.Address.ToLower().Contains(searchText) || item.Description.ToLower().Contains(searchText) || (item.ItemDetails.Any(det => det.Name.ToLower().Contains(searchText))) )).ToList(); if (list.Any()) { var finals = list.Select(obj => obj.MapListItem()).ToList(); foreach (var rest in finals) { var restRate = (float)Convert.ToDouble(rest.Rating); var dist = CommonService.GetDistance((double)userLoc.Latitude, (double)userLoc.Longitude, Convert.ToDouble(rest.LocationObj.Latitude), Convert.ToDouble(rest.LocationObj.Longitude)); if ((int)dist >= distanceFrom && (int)dist <= distanceTo && restRate >= rating) { var disst = Math.Round((double)dist, 2); rest.LocationObj = null; rest.Distance = disst; rest.Name = rest.Name; rest.TypeName = allCats.FirstOrDefault(c => c.CatId == rest.Type).Name; newList.Add(rest); } } newList = newList.OrderBy(obj => obj.Distance).ToList(); var take = newList.Skip(requestModel.CurrentPage * requestModel.ItemsPerPage). Take(requestModel.ItemsPerPage).ToList(); response.Items = take; } requestModel.CurrentPage++; response.ItemsPerPage = requestModel.ItemsPerPage; response.CurrentPage = requestModel.CurrentPage; response.TotalItems = newList.Count; return(response); } }