public async Task <IHttpActionResult> GetRequestedGroup(int id) { RequestedGroup requestedGroup = await db.RequestedGroups.FindAsync(id); if (requestedGroup == null) { return(NotFound()); } return(Ok(requestedGroup)); }
public async Task <IHttpActionResult> DeleteRequestedGroup(int id) { RequestedGroup requestedGroup = await db.RequestedGroups.FindAsync(id); if (requestedGroup == null) { return(NotFound()); } db.RequestedGroups.Remove(requestedGroup); await db.SaveChangesAsync(); return(Ok(requestedGroup)); }
public async Task <IHttpActionResult> PostRequestedGroup(RequestedGroup requestedGroup) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } // Checar se já há uma requisição para esse grupo -> player RequestedGroup reqG = db.RequestedGroups.Where(x => x.IdPlayer == requestedGroup.IdPlayer && x.Status == "A").AsEnumerable().FirstOrDefault(); if (reqG != null) { return(BadRequest(message: "O jogador já possui uma solicitação para esse grupo em aberto")); } Group group = db.Groups.Find(requestedGroup.IdGroup); if (group == null) { return(NotFound()); } var integrantes = db.PlayerGroups.Where(x => x.IdGroup == requestedGroup.IdGroup).Select(x => x.Player).AsEnumerable().ToArray(); // Checar se o grupo está em sua capacidade máxima if (integrantes.Length >= group.Capacity) { return(BadRequest(message: "O grupo está em sua capacidade máxima")); } // Checar se o player já está naquele grupo Player p1 = integrantes.FirstOrDefault(x => x.ID == requestedGroup.IdPlayer); if (p1 != null) { return(BadRequest(message: "O jogador já se encontra nesse grupo.")); } db.RequestedGroups.Add(requestedGroup); await db.SaveChangesAsync(); return(Ok(requestedGroup)); }
public async Task <IHttpActionResult> PutRequestedGroup(int id, RequestedGroup requestedGroup) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Group group = db.Groups.Find(requestedGroup.IdGroup); group.TotalComponentes++; if (group == null) { return(NotFound()); } var integrantes = db.PlayerGroups.Where(x => x.IdGroup == requestedGroup.IdGroup).Select(x => x.Player).AsEnumerable().ToArray(); // Checar se o grupo está em sua capacidade máxima if (integrantes.Length >= group.Capacity) { return(BadRequest(message: "O grupo está em sua capacidade máxima")); } // Checar se o player já está naquele grupo Player p1 = integrantes.FirstOrDefault(x => x.ID == requestedGroup.IdPlayer); if (p1 != null) { requestedGroup.Status = "F"; db.Entry(requestedGroup).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (Exception e) { Console.WriteLine(e.Message); } return(BadRequest(message: "O jogador já se encontra nesse grupo. Removendo solicitação...")); } PlayerGroup pg = null; if (requestedGroup.Status == "T") { pg = new PlayerGroup() { CreateAt = DateTime.UtcNow, AlteredAt = DateTime.UtcNow, IdGroup = group.ID, IdPlayer = requestedGroup.IdPlayer }; } requestedGroup.Status = "F"; db.PlayerGroups.Add(pg); try { await db.SaveChangesAsync(); } catch (Exception e) { Console.Write(e.Message); } db.Entry(requestedGroup).State = EntityState.Modified; db.Entry(group).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RequestedGroupExists(id)) { return(NotFound()); } else { throw; } } catch (Exception e) { Console.WriteLine(e.Message); } return(Ok(requestedGroup)); }