public async Task<IActionResult> AddAlliance([FromRoute] Guid allianceId) { if (session?.Player == null) { return HttpResponseHelper.BadRequest("Error with your session."); } var actor = await _context.Actors.FindAsync(allianceId); if (actor == null) { return HttpResponseHelper.NotFound("No such Actor found."); } var alliance = await _context.Alliances.Where(Alliance.IsAlliance(allianceId, session.Player.Id)).FirstOrDefaultAsync(); if (alliance != null) { if (alliance.State != AllianceState.Accepted) { return HttpResponseHelper.BadRequest("Alliance Request already sent."); } return HttpResponseHelper.BadRequest("You are already alliance with this Actor."); } var newAlliance = new Alliance { RequesterId = session.Player.Id, RequesteeId = allianceId }; var error = await SaveChangesAsync(); if (error != null) { return error; } return Ok(newAlliance); }
public static IQueryable <Actor> Alliances(SocialGamificationAssetContext db, Guid id, AllianceState state) { var alliancesList = Alliance.GetAllianceIds(db, id, state); return(db.Actors.Where(a => alliancesList.Contains(a.Id))); }