Exemplo n.º 1
0
        public HttpResponseMessage SearchPlaygrounds([FromUri] SearchAreaArgs args)
        {
            User currentUser = userBusiness.GetUserByExternalId(User.Identity.GetUserId()).Data;
            int  userId      = currentUser == null ? 0 : currentUser.UserID;

            Result <PagedResult <Playground.Model.ViewModel.Playground> > res = playgroundBusiness.SearchPlaygrounds(args, userId);

            HttpResponseMessage response = res.Success ?
                                           Request.CreateResponse(HttpStatusCode.Created, res.Data) :
                                           Request.CreateResponse(HttpStatusCode.InternalServerError, res.Message);

            return(response);
        }
Exemplo n.º 2
0
        public HttpResponseMessage GetPlaygroundsInArea([FromUri] SearchAreaArgs args)
        {
            Result <List <Playground.Model.Playground> > res = playgroundBusiness.SearchInArea(
                new Location()
            {
                Latitude  = args.StartLocationLatitude,
                Longitude = args.StartLocationLongitude
            },
                new Location()
            {
                Latitude  = args.EndLocationLatitude,
                Longitude = args.EndLocationLongitude
            },
                args.Count);

            HttpResponseMessage response = res.Success ?
                                           Request.CreateResponse(HttpStatusCode.Created, res.Data) :
                                           Request.CreateResponse(HttpStatusCode.InternalServerError, res.Message);

            return(response);
        }
Exemplo n.º 3
0
        public Result <PagedResult <Playground.Model.ViewModel.Playground> > SearchPlaygrounds(SearchAreaArgs args, int userID)
        {
            Result <PagedResult <Playground.Model.ViewModel.Playground> > retVal = null;

            try
            {
                if (args.Search == null)
                {
                    args.Search = String.Empty;
                }

                Expression <Func <Playground.Model.Playground, bool> > where = null;
                if (args.GlobalSearch)
                {
                    where = pg => pg.Name.Contains(args.Search) ||
                            pg.Games.Any(g => g.Game.Title.Contains(args.Search) ||
                                         g.Game.Category.Title.Contains(args.Search));
                }
                else
                {
                    where = pg => (pg.Latitude >= args.StartLocationLatitude &&
                                   pg.Latitude <= args.EndLocationLatitude &&
                                   pg.Longitude >= args.StartLocationLongitude &&
                                   pg.Longitude <= args.EndLocationLongitude) &&
                            (pg.Name.Contains(args.Search) ||
                             pg.Games.Any(g => g.Game.Title.Contains(args.Search) ||
                                          g.Game.Category.Title.Contains(args.Search)));
                }


                int totalItems = Uow.Playgrounds
                                 .GetAll()
                                 .Where(where)
                                 .Count();

                args.Page = GetPage(totalItems, args.Page, args.Count);

                List <Playground.Model.Playground> playgrounds = Uow.Playgrounds
                                                                 .GetAll()
                                                                 .Where(where)
                                                                 .OrderBy(pg => pg.Name)
                                                                 .Skip((args.Page - 1) * args.Count)
                                                                 .Take(args.Count)
                                                                 .ToList();

                List <Playground.Model.ViewModel.Playground> pgs = new List <Model.ViewModel.Playground>();

                foreach (Playground.Model.Playground playground in playgrounds)
                {
                    bool isOwner  = userID == playground.OwnerID;
                    bool isMember = Uow.PlaygroundUsers.GetAll().Any(pgu => pgu.PlaygroundID == playground.PlaygroundID &&
                                                                     pgu.UserID == userID);

                    pgs.Add(new Model.ViewModel.Playground()
                    {
                        PlaygroundID = playground.PlaygroundID,
                        Name         = playground.Name,
                        Address      = playground.Address,
                        Latitude     = playground.Latitude,
                        Longitude    = playground.Longitude,
                        IsMember     = isMember,
                        IsOwner      = isOwner
                    });
                }

                PagedResult <Playground.Model.ViewModel.Playground> result = new PagedResult <Playground.Model.ViewModel.Playground>()
                {
                    CurrentPage = args.Page,
                    TotalPages  = (totalItems + args.Count - 1) / args.Count,
                    TotalItems  = totalItems,
                    Items       = pgs
                };

                retVal = ResultHandler <PagedResult <Playground.Model.ViewModel.Playground> > .Sucess(result);
            }
            catch (Exception ex)
            {
                log.Error("Error searching playgrounds", ex);
                retVal = ResultHandler <PagedResult <Playground.Model.ViewModel.Playground> > .Erorr("Error searching playgrounds");
            }

            return(retVal);
        }