public async Task <Result <CertificationModel> > Handle(CreateCertification request, CancellationToken cancellationToken) { var isValid = await _validator.IsValidAsync(request); if (!isValid) { return(Result.Failure <CertificationModel>("Validation failed")); } var user = await _context.Users.FirstAsync(u => u.Sub == request.UserSub, cancellationToken); var certification = new Certification { Name = request.Name, ExpirationDate = request.ExpirationDate, User = user, IssuingAuthority = request.IssuingAuthority }; await _context.Certifications.AddAsync(certification, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new CertificationModel { Id = certification.Id, Name = certification.Name, ExpirationDate = certification.ExpirationDate, IssuingAuthority = certification.IssuingAuthority }); }
public async Task <ActionResult <CertificationModel> > CreateNewCertificationAsync([FromBody] CertificationRequest certification) { var sub = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value; var command = new CreateCertification(sub, certification); var result = await _mediator.Send(command); if (result.IsFailure) { return(BadRequest()); } return(Ok(result.Value)); }