Ejemplo n.º 1
0
        [Route("api/Listing/GetItems")]  // of restaurants, super stores etc
        public ResponseModel GetListOfItems(GetListRequestModel listModel)
        {
            var response = new ResponseModel
            {
                Success  = false,
                Messages = new List <string>()
            };

            if (listModel == null || listModel.Type == 0)    // 1. food  2.grocery
            {
                response.Messages.Add("Mandatory data can not be empty");
            }
            else if (listModel.CurrentPage <= 0 || listModel.ItemsPerPage <= 0)
            {
                response.Messages.Add("Current page/ItemsPerPage should be greater than 0");
            }
            else
            {
                try
                {
                    var items = ListService.GetItemsForList(listModel);
                    response.Data = items;
                    response.Messages.Add("Success");
                    response.Success = true;
                }
                catch (Exception excep)
                {
                    response.Messages.Add("Something bad happened.");
                }
            }
            return(response);
        }
Ejemplo n.º 2
0
        public static GetListResponseModel GetItemsForList(GetListRequestModel 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.Where(item => item.Type == requestModel.Type &&
                (string.IsNullOrEmpty(searchText) ||
                item.Name.ToLower().Contains(searchText) ||
                item.Description.ToLower().Contains(searchText) ||
                (item.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.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(10))
                            {
                                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;
            }
        }
Ejemplo n.º 3
0
        [Route("api/Listing/GetItems")]  // of restaurants, super stores etc
        public ResponseModel GetListOfItems(GetListRequestModel listModel)
        {
            var response = new ResponseModel
            {
                Success  = false,
                Messages = new List <string>(),
                Data     = listModel
            };

            // return response;

            if (listModel == null || string.IsNullOrEmpty(listModel.Cords))     // 1. food  2.grocery
            {
                response.Data = listModel;
                response.Messages.Add("Mandatory data can not be empty");
            }
            //if (listModel.IsWeb && listModel.TypeList.Count==0)    // 1. food  2.grocery
            //{
            //    response.Data = listModel;
            //    response.Messages.Add("TypeList parameter can not be empty with IsWeb=true");
            //}
            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 if (listModel.CurrentPage <= 0 || listModel.ItemsPerPage <= 0)
            {
                response.Data = listModel;
                response.Messages.Add("Current page/ItemsPerPage should be greater than 0");
            }
            else
            {
                try
                {
                    var items = ListService.GetItemsForList(listModel);
                    response.Data = items;
                    response.Messages.Add("Success");
                    response.Success = true;
                }
                catch (Exception excep)
                {
                    response.Messages.Add("Something bad happened.");
                }
            }
            return(response);
        }
Ejemplo n.º 4
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);
            }
        }