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 GetCampaignsCommandHandler : IRequestHandler> { private readonly IMediator _mediator; private readonly SledgemapperDbContext _dbcontext; public GetCampaignsCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _mediator = mediator; _dbcontext = dbcontext; } public async Task> Handle(GetCampaignsCommand command, CancellationToken cancellationToken) { try { var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); var campaigns = _dbcontext.Campaigns.Include(c => c.InvitedUsers).Include(c => c.Maps).Include(c => c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); return campaigns. Select(c => new Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Map { SessionName = m.SessionName }).ToList() }) .ToList(); } catch (Exception ex) { } return new List(); } } }