Files
continuousimprovement/src/Strata.ContinuousImprovement.Api/Controllers/ChargeCodeInitiativesController.cs
T

53 lines
2.0 KiB
C#

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Strata.ContinuousImprovement.Biz.ChargeCode.Initiatives;
using Strata.ContinuousImprovement.Biz.Initiatives;
using Strata.ContinuousImprovement.Biz.Mappers;
using Strata.CoreLib.Claims;
using Strata.CoreLib.Claims.Extensions;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Strata.ContinuousImprovement.Api.Controllers
{
[ApiController]
[ApiVersion("1.0")]
[Route("api/v{api-version:apiVersion}/[controller]")]
public class ChargeCodeInitiativesController : ControllerBase
{
private readonly IClaimsPrincipalAccessor _claimsPrincipalAccessor;
private readonly ICCInitiativeService _chargeCodeInitiativeService;
private readonly IStakeholderUser _stakeholderUser;
public ChargeCodeInitiativesController(
IClaimsPrincipalAccessor claimsPrincipalAccessor,
ICCInitiativeService chargeCodeInitiativeService,
IStakeholderUser stakeholderUser)
{
_claimsPrincipalAccessor = claimsPrincipalAccessor;
_chargeCodeInitiativeService = chargeCodeInitiativeService;
_stakeholderUser = stakeholderUser;
}
[HttpPost("[action]")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesDefaultResponseType]
public async Task<ActionResult<Guid>> Create(InitiativeDto initiative, CancellationToken cancellationToken)
{
try
{
var user = _claimsPrincipalAccessor.GetCurrentClaimsPrincipal();
var newInitiative = initiative.MapToInitiative(_stakeholderUser);
var dbGuid = user.GetDatabaseGuid();
return await _chargeCodeInitiativeService.CreateChargeCodeInitiative(dbGuid, newInitiative, initiative.OpportunityGuid, cancellationToken);
}
catch
{
return Guid.Empty;
}
}
}
}