Exemplo n.º 1
0
        public async Task <IActionResult> Editor(int id, string sortOrder, string currentFilter, int?pageNumber)
        {
            var editor = await _context.Editors
                         .FirstOrDefaultAsync(m => m.Id == id);

            if (editor == null)
            {
                return(NotFound());
            }

            ViewBag.EditorName = editor.Name;
            ViewBag.EditorDesc = editor.Description;

            IQueryable <Game> games = _gameService.GetGamesByEditor(id);

            games = _gameService.GetGamesValidate(games);

            GamesIndexData gamesAllData = await SortGames(currentFilter, sortOrder, currentFilter, pageNumber, games);

            bool isAuthenticated = User.Identity.IsAuthenticated;

            if (isAuthenticated)
            {
                LudothequeUser user = await UserServices.GetUserAsync(userManager, User.Identity.Name);

                gamesAllData = _gameAllDataService.GamesPoss(gamesAllData, user.Id);
            }
            else
            {
                gamesAllData = _gameAllDataService.NoGamesPoss(gamesAllData);
            }
            return(View(gamesAllData));
        }
Exemplo n.º 2
0
        public List <Game> GetGamesPages(GamesIndexData games, int pageNumber, int pageSize)
        {
            var PageIndex  = pageNumber;
            var count      = games.Games.Count();
            var items      = games.Games.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
            var TotalPages = (int)Math.Ceiling(count / (double)pageSize);

            return(items);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Method to fill posseded games with all false
        /// </summary>
        /// <param name="gamesAllData">games to fill</param>
        /// <returns></returns>
        internal GamesIndexData NoGamesPoss(GamesIndexData gamesAllData)
        {
            List <(Game, bool)> ls = new List <(Game, bool)>();

            foreach (Game g in gamesAllData.Games)
            {
                ls.Add((g, false));
            }
            gamesAllData.GamesPoss = ls;
            return(gamesAllData);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Fill posseded games of gamesAllData for user
        /// </summary>
        /// <param name="gamesAllData"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public GamesIndexData GamesPoss(GamesIndexData gamesAllData, string userId)
        {
            List <(Game, bool)> ls = new List <(Game, bool)>();

            foreach (Game g in gamesAllData.Games)
            {
                bool FindGame = userId != null && _context.GamesUser.SingleOrDefault(s => s.GameId == g.Id && s.LudothequeUserId.Equals(userId)) != null;
                if (FindGame)
                {
                    ls.Add((g, true));
                }
                else
                {
                    ls.Add((g, false));
                }
            }
            gamesAllData.GamesPoss = ls;
            return(gamesAllData);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Method to create games with theme, mechanisms and materials supports
        /// </summary>
        /// <returns></returns>
        public async Task <GamesIndexData> GetGamesAndCategories(IQueryable <Game> games = null)
        {
            if (games == null)
            {
                games = _context.Games;
            }
            var viewModel = new GamesIndexData();

            viewModel.Games = await games
                              .Include(i => i.MechanismsGames)
                              .ThenInclude(i => i.Mechanism)
                              .Include(i => i.ThemesGames)
                              .ThenInclude(i => i.Theme)
                              .Include(i => i.MaterialSupportsGames)
                              .ThenInclude(i => i.MaterialSupport)
                              .AsNoTracking()
                              .OrderBy(i => i.Name)
                              .ToListAsync();

            return(viewModel);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Controller for list of games no validate
        /// </summary>
        /// <param name="searchString"></param>
        /// <param name="sortOrder"></param>
        /// <param name="currentFilter"></param>
        /// <param name="pageNumber"></param>
        /// <returns></returns>
        public async Task <IActionResult> ProposedGames(string searchString, string sortOrder, string currentFilter, int?pageNumber)
        {
            IQueryable <Game> games;

            if (!String.IsNullOrEmpty(searchString))
            {
                games      = _gameService.GetGamesByName(searchString);
                pageNumber = 1;
            }
            else
            {
                games        = _gameService.GetGames();
                searchString = currentFilter;
            }
            games = _gameService.GetGamesNoValidate(games);

            GamesIndexData gamesAllData = await _gameAllDataService.GetGamesAndCategories(games);

            gamesAllData    = _gameAllDataService.GamesPoss(gamesAllData, null);
            ViewBag.MyGames = "Neither";
            return(View(gamesAllData));
        }
Exemplo n.º 7
0
        /// <summary>
        /// Sort Games with all data
        /// </summary>
        /// <param name="games"></param>
        /// <param name="pageNumber"></param>
        /// <param name="sortOrder"></param>
        /// <returns></returns>
        public async Task <GamesIndexData> SortGamesIndex(IQueryable <Game> games, int?pageNumber, string sortOrder)
        {
            GamesIndexData gamesAllData = new GamesIndexData();


            games = _gameServices.SortGames(games, sortOrder);
            int pageSize            = 3;
            PaginatedList <Game> pl =
                await PaginatedList <Game> .CreateAsync(games, pageNumber ?? 1, pageSize);

            var gamesTmp = from g in games
                           where pl.Contains(g)
                           select g;

            gamesAllData = await GetGamesAndCategories(gamesTmp);

            gamesAllData = _gameServices.SortGames(gamesAllData, sortOrder);

            gamesAllData.PageIndex  = pl.PageIndex;
            gamesAllData.TotalPages = pl.TotalPages;
            return(gamesAllData);
        }
Exemplo n.º 8
0
        public async Task <IActionResult> Index(string searchString, string sortOrder, string currentFilter, int?pageNumber)
        {
            //Todo : Si ecran trop petit afficher des colonnes en moins
            //Todo : limiter le nombre de catégories montrées a 3
            //Todo : Probleme si critères vide sort ne trie pas bien

            IQueryable <Game> games;

            if (!String.IsNullOrEmpty(searchString))
            {
                games      = _gameService.GetGamesByName(searchString);
                pageNumber = 1;
            }
            else
            {
                games        = _gameService.GetGames();
                searchString = currentFilter;
            }
            games = _gameService.GetGamesValidate(games);
            GamesIndexData gamesAllData = await SortGames(searchString, sortOrder, currentFilter, pageNumber, games);

            bool isAuthenticated = User.Identity.IsAuthenticated;

            if (isAuthenticated)
            {
                LudothequeUser user = await UserServices.GetUserAsync(userManager, User.Identity.Name);

                gamesAllData = _gameAllDataService.GamesPoss(gamesAllData, user.Id);
            }
            else
            {
                gamesAllData = _gameAllDataService.NoGamesPoss(gamesAllData);
            }


            return(View(gamesAllData));
        }
Exemplo n.º 9
0
        internal GamesIndexData SortGames(GamesIndexData gamesAllData, string sortOrder)
        {
            var games = gamesAllData.Games;

            games = sortOrder switch
            {
                "name_desc" => games.OrderByDescending(s => s.Name),
                "Date" => games.OrderBy(s => s.ReleaseDate),
                "date_desc" => games.OrderByDescending(s => s.ReleaseDate),
                "Price" => games.OrderBy(s => s.Price),
                "price_desc" => games.OrderByDescending(s => s.Price),
                "Min" => games.OrderBy(s => s.MinPlayer),
                "min_desc" => games.OrderByDescending(s => s.MinPlayer),
                "Max" => games.OrderBy(s => s.MaxPlayer),
                "max_desc" => games.OrderByDescending(s => s.MaxPlayer),
                "Age" => games.OrderBy(s => s.MinimumAge),
                "age_desc" => games.OrderByDescending(s => s.MinimumAge),
                "Time" => games.OrderBy(s => s.GameTime),
                "time_desc" => games.OrderByDescending(s => s.GameTime),
                _ => games.OrderBy(s => s.Name),
            };
            gamesAllData.Games = games;
            return(gamesAllData);
        }
Exemplo n.º 10
0
        public async Task <IActionResult> Index(string searchString, string sortOrder, string currentFilter, int?pageNumber)
        {
            LudothequeUser user = await UserServices.GetUserAsync(userManager, User.Identity.Name);

            IQueryable <Game> games;

            games = _gameService.GetGamesByUser(user.Id);
            if (!String.IsNullOrEmpty(searchString))
            {
                games      = _gameService.GetGamesByName(searchString, games);
                pageNumber = 1;
            }
            else
            {
                searchString = currentFilter;
            }
            games = _gameService.GetGamesValidate(games);
            GamesIndexData gamesAllData = await SortGames(searchString, sortOrder, currentFilter, pageNumber, games);

            gamesAllData = _gameAllDataService.GamesPoss(gamesAllData, user.Id);

            ViewBag.MyGames = "true";
            return(View(gamesAllData));
        }
Exemplo n.º 11
0
        public static async Task <PaginatedList <Game> > CreateAsync(GamesIndexData gamesAllData, int pageIndex, int pageSize)
        {
            var source = gamesAllData.Games.AsQueryable().AsNoTracking();

            return(await PaginatedList <Game> .CreateAsync(source, pageIndex, pageSize));
        }
Exemplo n.º 12
0
 /// <summary>
 /// Just for transform five games of GamesIndexData as Queryable for SortGames
 /// </summary>
 /// <param name="games"></param>
 /// <param name="sortOrder"></param>
 /// <returns></returns>
 public GamesIndexData SortGamesIndexData(GamesIndexData games, string sortOrder)
 {
     games.Games = _gameServices.SortGames(games.Games.AsQueryable(), sortOrder);
     return(games);
 }
Exemplo n.º 13
0
        /// <summary>
        /// Get all games that contain the searchString in name
        /// </summary>
        /// <param name="searchString">Param wanted by user</param>
        /// <param name="gamesList">If we want do this research on a precise lsit of games</param>
        /// <returns></returns>
        public async Task <GamesIndexData> GetGamesByName(string searchString, GamesIndexData gamesList = null)
        {
            var games = _gameServices.GetGamesByName(searchString);;

            return(await GetGamesAndCategories(games));
        }