Template
53 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|