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);
        }
Ejemplo n.º 2
0
        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)));
        }