using MediatR; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { public class GetCampaignPlayersCommandHandler : IRequestHandler> { private readonly IMediator _mediator; private readonly SledgemapperDbContext _dbcontext; public GetCampaignPlayersCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _mediator = mediator; _dbcontext = dbcontext; } public async Task> Handle(GetCampaignPlayersCommand command, CancellationToken cancellationToken) { try { var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignName == command.CampaignName && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); var players = campaign.InvitedUsers.Select(user => new Player { Initials = user.Initials, UserName = user.UserName }).ToList(); return players; } catch (Exception ex) { } return null; } } }