using MediatR; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; using Sledgemapper.Shared.Entities; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Sledgemapper.Api.Controllers { [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] [Route("[controller]")] public class CampaignController : ControllerBase { private readonly IMediator _mediator; private string UserId => HttpContext.User.Claims.FirstOrDefault(m => m.Type == "Id").Value; public CampaignController(IMediator mediator) => _mediator = mediator; [HttpPost] [Route("{campaignName}")] public async Task Post(string campaignName) { var result = await _mediator.Send(new NewCampaignCommand(campaignName, UserId.ToString())); return result; } [HttpGet] public async Task> Get() { var result = await _mediator.Send(new GetCampaignsCommand(UserId)); return result; } } }