// [ 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 })); }
// [ 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")); } }