20
loading...
This website collects cookies to deliver better user experience
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IHttpContextAccessor, HttpContextAccessor>();
services.AddAutoMapper(configuration =>
{
configuration.AddProfile<CompanyProfile>();
});
services.AddMvc();
}
public class CompanyProfile : Profile
{
public CompanyProfile()
{
CreateMap<CreateCompany, CreateCompanyDto>()
.ForMember(destination => destination.UserId, option => option.ResolveUsing<UserIdResolver>());
}
}
public class UserIdResolver : IValueResolver<object, object, string>
{
private readonly IHttpContextAccessor _contextAccessor;
public UserIdResolver(IHttpContextAccessor contextAccessor)
{
_contextAccessor = contextAccessor;
}
public string Resolve(object source, object destination, string destinationMember, ResolutionContext context)
{
return _contextAccessor.HttpContext.User.Claims
.Where(x => x.Type == ClaimTypes.NameIdentifier)
.Select(c => c.Value).SingleOrDefault();
}
}
[HttpPost]
[Authorize]
public async Task<IActionResult> CreateCompanyAsync(CreateCompany request)
{
var mapped = _automapper.Map<CreateCompanyDto>(request);
return Ok(await _companyService.CreateCompanyAsync(mapped));
}
20