Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 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();
     }
 }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
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
                });
            }
        }
Exemplo n.º 8
0
        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);
            }
        }