예제 #1
0
        //  [ PlayerData => Nick lub Email gracza do którego wysyłane jest zaproszenie ]
        //  [ TeamId => ID drużyny do której gracz zostaje zaproszony ]
        public IActionResult Invite_Player_To_Team(int TeamId, string PlayerData)
        {
            int PlayerId = 0;

            if (_context.Players.Where(p => p.ConnectedSummonerEmail == PlayerData).Any() || _context.SummonerInfos.Where(s => s.name == PlayerData).Any())
            {
                PlayerId = _context.Players.Include(p => p.ConectedSummoners).Where(p => p.ConnectedSummonerEmail == PlayerData || p.ConectedSummoners.name == PlayerData).FirstOrDefault().Id;
            }
            else
            {
                TempData["error"] = "Takie konto nie istnieje, lub gracz nie połączył nadal swojego konta LOL";
                return(RedirectToAction("Manage", "Team", new { teamId = TeamId }));
            }

            // Warunek sprawdzający czy gracz ma w swoich zaproszeniach juz id teamu a nadal nie oddał głosu (Answer == null)
            List <ZaproszenieDoTeamu> zaproszeniaUZytkownikaDlaPodanejDruzyny = _context.Players
                                                                                .Where(p => p.Id == PlayerId)
                                                                                .Include(p => p.Zaproszenia_Team)
                                                                                .Select(z => z.Zaproszenia_Team.Where(t => t.TeamId == TeamId).ToList())
                                                                                .First();

            if (zaproszeniaUZytkownikaDlaPodanejDruzyny.Where(z => z.Answer == null).Count() >= 1)
            {
                //dont send again same invite, jsut wait for respond from user side
                TempData["error"] = "Zaproszenie zostało juz wcześniej wysłane, czeka za akceptacją.";
                return(RedirectToAction("Manage", "Team", new { teamId = TeamId }));
            }
            else
            {
                // user dont have yet your invitation, send it
                //create invitation
                ZaproszenieDoTeamu newInvite = new ZaproszenieDoTeamu
                {
                    Answer = null,
                    TeamId = TeamId,
                    Team   = _context.Teams.Where(t => t.Id == TeamId).First(),
                    DataWysłaniaZaproszenia     = DateTime.Now,
                    DataOdpowiedziNaZaproszenie = null
                };
                _context.ZaproszenieDoTeamu.Add(newInvite);
                _context.SaveChanges();

                Player Player = _context.Players
                                .Include(p => p.Zaproszenia_Team)
                                .Where(p => p.Id == PlayerId)
                                .Single();

                //zaktualizuj listę powiadomień użytkownika o nowy wpis -> twoje zaproszenie
                Player.Zaproszenia_Team.Add(newInvite);
                _context.Update(Player);
                _context.SaveChanges();
            }
            TempData["message"] = "Zaproszenie zostało poprawnie wysłąne do gracza.";
            return(RedirectToAction("Manage", "Team", new { teamId = TeamId }));
        }
예제 #2
0
        //  [ ZaproszenieId => ID zaprosznia na które wysyłana jest odpowiedz ]
        //  [ Odpowiedz => wartosc odpowiedzi , true=> potwierdzenie, False=>odmowa ]
        public IActionResult AnswerToInvite(int ZaproszenieId, bool Odpowiedz)
        {
            ZaproszenieDoTeamu zapro = _context.ZaproszenieDoTeamu.Where(z => z.Id == ZaproszenieId).First();

            string PlayerEmail = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.Name).Value;

            Player Player = _context.Players
                            .Include(p => p.Zaproszenia_Team)
                            .Where(p => p.ConnectedSummonerEmail == PlayerEmail)
                            .Single();

            int TeamId = Convert.ToInt32(Player.Zaproszenia_Team.Where(z => z.Id == ZaproszenieId).First().TeamId.ToString());

            if (Odpowiedz)
            {
                if (Player.Zaproszenia_Team.Where(z => z.Id == ZaproszenieId).First().Answer == null)
                {
                    // SPRAWDZENIE CZY UŻYTKOWNIK JUZ JEST W JAKIEJS DRUZYNIE
                    if (_teamCtx.CheckIfUserAlreadyInTeam(Player.Id))
                    {     // TRUE => jest w jakiejs druzynie : OPUSZCZENIE DRUŻYNY JEZELI MOZE
                        if (_teamCtx.LeaveTeam(TeamId, Player.ConnectedSummonerEmail.ToString()))
                        { //Dołączanie do drużyny
                            _teamCtx.JoinTeam(TeamId);
                        }
                    }// FALSE => nie ma druzyny
                    _teamCtx.JoinTeam(TeamId);

                    zapro.Answer = Odpowiedz;
                    zapro.DataOdpowiedziNaZaproszenie = DateTime.Now;
                    _context.ZaproszenieDoTeamu.Update(zapro);
                    _context.SaveChanges();

                    TempData["message"] = "Dołączyłeś do Drużyny !";
                    return(RedirectToAction("Manage", "Team", new { TeamId }));
                }
                TempData["joiningResult"] = "Odpowiedź została już udzielona, nie można jej zmienić.";
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                zapro.Answer = Odpowiedz;
                zapro.DataOdpowiedziNaZaproszenie = DateTime.Now;
                _context.ZaproszenieDoTeamu.Update(zapro);
                _context.SaveChanges();

                TempData["error"] = "Zaproszenie zostało odrzucone";
                return(RedirectToAction("Index", "Home"));
            }
        }