Ejemplo n.º 1
0
        public async Task <IActionResult> GetSummonerInfo(string nickname)
        {
            // JEZELI TAKI NICK JUZ JEST W BAZIE PRZEJDZ DALEJ BEZ UDZIAŁU RIOTAPI
            if (_repository.SummonerInfos.Where(s => s.name == nickname).Any())
            {
                var RecentID = _repository.SummonerInfos.Where(s => s.name == nickname).FirstOrDefault().id;  // przeszukanie bazy wedlug nickow i przypisanie jego ID

                if (User.IsInRole("Admin"))
                {
                    return(RedirectToAction("ListOfSummonerInfos"));
                }
                else if (User.IsInRole("Member"))
                {
                    HttpContext.Session.SetInt32("RecentID", (int)RecentID);
                    //TempData["RecentID"] = RecentID;
                }
                return(RedirectToAction("Index"));
            }
            // POBRANIE SUMMONERA Z RIOTAPI JEZELI JESZCZE NIE ISTNIEJE
            else
            {
                var result = await _riotApiService.GetSummonerInfoBasedOnNickname(nickname);

                if (result.name == null)
                {
                    TempData["SummonerDontExists"] = $"Nazwa przywoływacza:{nickname} jest błędna, lub nie istnieje na serwerze EUNE";

                    if (User.IsInRole("Admin"))
                    {
                        return(RedirectToAction("ListOfSummonerInfos"));
                    }
                    else if (User.IsInRole("Member"))
                    {
                    }
                    return(RedirectToAction("Index"));
                }

                SummonerInfoModel newSummoner = new SummonerInfoModel
                {
                    profileIconId = result.profileIconId,
                    name          = result.name,
                    summonerLevel = result.summonerLevel,
                    accountId     = result.accountId,
                    id            = result.id,
                    revisionDate  = result.revisionDate,

                    IsVerified      = result.IsVerified,
                    ConectedAccount = null,
                    AddTime         = DateTime.Now,

                    Code = _code.GenerateConnectionCode()
                };

                var RecentID = newSummoner.id;
                if (User.IsInRole("Admin"))
                {
                    HttpContext.Session.SetInt32("RecentID", (int)RecentID);
                    _repository.SaveSummonerInfo(newSummoner);
                    return(RedirectToAction("ListOfSummonerInfos"));
                }
                else if (User.IsInRole("Member"))
                {
                    HttpContext.Session.SetInt32("RecentID", (int)RecentID);
                    _repository.SaveSummonerInfo(newSummoner);
                }
                return(RedirectToAction("Index"));
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                ApplicationUser user;
                if (model.CreateTestAccount == true)
                {
                    user = new ApplicationUser {
                        UserName = model.Email, Email = model.Email, EmailConfirmed = true
                    };
                }
                else
                {
                    user = new ApplicationUser {
                        UserName = model.Email, Email = model.Email
                    };
                }
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    if (model.CreateTestAccount == true)
                    {
                        _logger.LogInformation("Create random generated user for tests.");
                        await _userManager.AddToRoleAsync(user, "Member");

                        _logger.LogInformation("User created a new test account.");

                        string            testUserName = "******" + (_playerRepository.Players.Count() + 1);
                        SummonerInfoModel testSummoner = new SummonerInfoModel
                        {
                            profileIconId   = 1,
                            name            = testUserName,
                            summonerLevel   = 100,
                            accountId       = 1000 + (_playerRepository.Players.Count() + 1),
                            id              = 1000 + (_playerRepository.Players.Count() + 1),
                            revisionDate    = 0,
                            IsVerified      = true,
                            ConectedAccount = model.Email,
                            AddTime         = DateTime.Now,
                            ConnectedTime   = DateTime.Now,
                            LockedToAssign  = true
                        };
                        _summonerRepository.SaveSummonerInfo(testSummoner);

                        Player testPlayer = new Player
                        {
                            ConectedSummoners      = _summonerRepository.SummonerInfos.Where(s => s.name == testUserName).FirstOrDefault(),
                            FirstName              = testUserName,
                            ConnectedSummonerEmail = user.Email,
                            Created = DateTime.Now
                        };
                        _playerRepository.CreateBasicPlayer(testPlayer);
                    }
                    else
                    {
                        _logger.LogInformation("User created a new account with password.");

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                        await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                        //await _signInManager.SignInAsync(user, isPersistent: false); //nie zaloguje się po rejestracji bez potwierdzenia maila

                        await _userManager.AddToRoleAsync(user, "Member");

                        _logger.LogInformation("User created a new account with password.");

                        //nowo zarejestrowany użytkownik zostanie przypisany modelowi Player z przypisanym emailem
                        Player player = new Player
                        {
                            ConectedSummoners      = null,
                            FirstName              = null,
                            ConnectedSummonerEmail = user.Email,
                            Created = DateTime.Now
                        };
                        _playerRepository.CreateBasicPlayer(player);
                    }
                    return(RedirectToLocal(returnUrl));
                }
                AddErrors(result);
            }
            // If we got this far, something failed, redisplay form
            return(View(model));
        }