Ejemplo n.º 1
0
        public ResponseModel GetListOfFavouriteItems(GetFavouriteListRequestModel listModel)
        {
            var response = new ResponseModel
            {
                Success  = false,
                Messages = new List <string>()
            };

            if (listModel == null || string.IsNullOrEmpty(listModel.UserId) || string.IsNullOrEmpty(listModel.Cords))
            {
                response.Messages.Add("Mandatory data can not be empty");
                response.Data = listModel;
            }
            else if (listModel.CurrentPage <= 0 || listModel.ItemsPerPage <= 0)
            {
                response.Messages.Add("Current page/ItemsPerPage should be greater than 0");
                response.Data = listModel;
            }
            else
            {
                try
                {
                    var items = ListService.GetI_Favourite_temsForList(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 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);
            }
        }