public async Task <IActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            GameSegmentViewModel gameSegment = new GameSegmentViewModel();

            var segments = _context.Segments
                           .Where(s => s.GameId == id).ToList();

            gameSegment.segmentsList = segments;

            var game = await _context.Games
                       .FirstOrDefaultAsync(g => g.Id == id);

            gameSegment.Game = game;

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

            return(View(gameSegment));
        }
        public async Task <IActionResult> Create(GameSegmentViewModel gameSegment)
        {
            var currentUser = await GetCurrentUserAsync();

            GameSegmentViewModel createSegment = new GameSegmentViewModel();

            createSegment.Segment = gameSegment.Segment;

            createSegment.Segment.GameId = gameSegment.Game.Id;

            createSegment.Segment.UserId = currentUser.Id;

            createSegment.Segment.GameIdFromAPI = gameSegment.Game.GameIdFromAPI;
            //createSegment.Segment.OrginId = gameSegment.Segment.Id;


            if (ModelState.IsValid)
            {
                _context.Add(createSegment.Segment);
                await _context.SaveChangesAsync();

                //return RedirectToAction(nameof(Index));
                var setOrgin = _context.Segments;

                return(Redirect($"http://localhost:5000/MySegment/Index/{gameSegment.Game.Id}"));
            }
            //ViewData["GameId"] = new SelectList(_context.Games, "Id", "Id", segment.GameId);
            //ViewData["UserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id", segment.UserId);
            return(View(createSegment.Segment));
        }
        // GET: MySegment
        public async Task <IActionResult> Index(int id)
        {
            GameSegmentViewModel gameSegment = new GameSegmentViewModel();

            var segmentsByGame = _context.Segments
                                 .Where(s => s.GameId == id).ToList();

            gameSegment.segmentsList = segmentsByGame;

            var currentGame = await _context.Games
                              .FirstOrDefaultAsync(g => g.Id == id);

            if (currentGame != null)
            {
                gameSegment.Game = currentGame;
            }
            //var applicationDbContext = _context.Segments.Include(s => s.Game).Include(s => s.User);
            return(View(gameSegment));
        }
        public async Task <IActionResult> Create(string id)
        {
            var currentUser = await GetCurrentUserAsync();

            var gameCheck = await _context.Games
                            .Where(g => g.UserId == currentUser.Id)
                            .FirstOrDefaultAsync(g => g.GameIdFromAPI == id);

            if (gameCheck == null)
            {
                var url = $"https://www.speedrun.com/api/v1/games/{id}";

                ApiHelper.InitializeClient();
                var singleGameData = await TestClass.LoadSingleData(url);

                Game game = new Game();
                game.GameIdFromAPI = singleGameData.data.id;
                game.Name          = singleGameData.data.names.international;
                game.Picture       = singleGameData.data.assets.covermedium.uri;
                game.ReleaseDate   = singleGameData.data.released;
                game.UserId        = currentUser.Id;

                _context.Add(game);
                await _context.SaveChangesAsync();

                GameSegmentViewModel gameSegment = new GameSegmentViewModel();

                gameSegment.Game = game;

                return(View(gameSegment));
            }
            else
            {
                ViewData["GameId"] = new SelectList(_context.Games, "Id", "Id");
                ViewData["UserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id");

                GameSegmentViewModel gameSegment = new GameSegmentViewModel();
                gameSegment.Game = gameCheck;

                return(View(gameSegment));
            }
        }
        public async Task <IActionResult> ShowSegments(string GameIdFromAPI)
        {
            GameSegmentViewModel gameSegment = new GameSegmentViewModel();
            var getCurrentUser = await GetCurrentUserAsync();

            var segmentsByGame = await _context.Segments
                                 .Include(s => s.User)
                                 .Where(s => s.UserId != getCurrentUser.Id)
                                 .Where(s => s.GameIdFromAPI == GameIdFromAPI).ToListAsync();

            gameSegment.segmentsList = segmentsByGame;

            var gameById = await _context.Games
                           .FirstOrDefaultAsync(g => g.GameIdFromAPI == GameIdFromAPI);

            gameSegment.Game = gameById;



            return(View(gameSegment));
        }
        public async Task <IActionResult> ShowSegmentsFromSearch(string id)
        {
            var getCurrentUser = await GetCurrentUserAsync();

            var game = _context.Games
                       .Where(g => g.UserId == getCurrentUser.Id)
                       .FirstOrDefaultAsync(g => g.GameIdFromAPI == id);

            if (game.Result == null)
            {
                var url = $"https://www.speedrun.com/api/v1/games/{id}";

                ApiHelper.InitializeClient();
                var singleGameData = await TestClass.LoadSingleData(url);

                Game newGame = new Game();
                newGame.GameIdFromAPI = singleGameData.data.id;
                newGame.Name          = singleGameData.data.names.international;
                newGame.Picture       = singleGameData.data.assets.covermedium.uri;
                newGame.ReleaseDate   = singleGameData.data.released;
                newGame.UserId        = getCurrentUser.Id;

                _context.Add(newGame);
                await _context.SaveChangesAsync();

                GameSegmentViewModel gameSegment = new GameSegmentViewModel();

                gameSegment.Game = newGame;

                var segmentsByGame = await _context.Segments
                                     .Include(s => s.User)
                                     .Where(s => s.UserId != getCurrentUser.Id)
                                     .Where(s => s.GameIdFromAPI == id).ToListAsync();

                gameSegment.segmentsList = segmentsByGame;

                var gameById = await _context.Games
                               .FirstOrDefaultAsync(g => g.GameIdFromAPI == id);

                gameSegment.Game = gameById;

                return(View("ShowSegments", gameSegment));
            }
            else
            {
                GameSegmentViewModel gameSegment = new GameSegmentViewModel();


                var segmentsByGame = await _context.Segments
                                     .Include(s => s.User)
                                     .Where(s => s.UserId != getCurrentUser.Id)
                                     .Where(s => s.GameIdFromAPI == id).ToListAsync();

                gameSegment.segmentsList = segmentsByGame;

                var gameById = await _context.Games
                               .FirstOrDefaultAsync(g => g.GameIdFromAPI == id);

                gameSegment.Game = gameById;

                return(View("ShowSegments", gameSegment));
            }
        }