Template
103 lines
5.3 KiB
C#
103 lines
5.3 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Strata.ContinuousImprovement.Biz.StrategicOpportunities;
|
|
using Strata.ContinuousImprovement.Biz.StrategicOpportunities.Dtos;
|
|
using System.Linq;
|
|
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 StrategicGeneralLedgerController : ControllerBase
|
|
{
|
|
private readonly IStrategicOpportunityService _strategicOpportunityService;
|
|
private readonly IStrategicGLOpportunityDetailService _strategicGLOpportunityDetailService;
|
|
|
|
public StrategicGeneralLedgerController(IStrategicOpportunityService strategicOpportunityService, IStrategicGLOpportunityDetailService strategicGLOpportunityDetailService)
|
|
{
|
|
_strategicOpportunityService = strategicOpportunityService;
|
|
_strategicGLOpportunityDetailService = strategicGLOpportunityDetailService;
|
|
}
|
|
|
|
[HttpGet("{opportunityId}/[action]")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[ProducesDefaultResponseType]
|
|
public async Task<ActionResult<StrategicOpportunityGLEditData>> GetOpportunityGL(long opportunityId, CancellationToken cancellationToken)
|
|
{
|
|
var result = await _strategicOpportunityService.GetStrategicOpportunityGL(opportunityId, cancellationToken);
|
|
return result != null ? Ok(result) : NotFound();
|
|
}
|
|
|
|
[HttpPost]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
public async Task<ActionResult<long>> CreateOpportunityGeneralLedger([FromBody] StrategicOpportunityGLDto opportunity, CancellationToken cancellationToken)
|
|
{
|
|
var opportunityId = await _strategicOpportunityService.CreateOpportunityGeneralLedgerAsync(opportunity, cancellationToken);
|
|
if (opportunityId == 0) return BadRequest();
|
|
return Ok(opportunityId);
|
|
}
|
|
|
|
[HttpPut("{opportunityId}")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[ProducesDefaultResponseType]
|
|
public async Task<ActionResult<bool>> UpdateOpportunityGeneralLedger(long opportunityId, [FromBody] StrategicOpportunityGLUpdateDto opportunity, CancellationToken cancellationToken)
|
|
{
|
|
var strategicOpportunityId = await _strategicOpportunityService.UpdateOpportunityGeneralLedger(opportunityId, opportunity, cancellationToken);
|
|
return strategicOpportunityId != 0 ? Ok(true) : NotFound();
|
|
}
|
|
|
|
[HttpDelete("{opportunityId}")]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[ProducesDefaultResponseType]
|
|
public async Task<IActionResult> DeleteOpportunityGeneralLedger(long opportunityId, CancellationToken cancellationToken)
|
|
{
|
|
if (!await _strategicOpportunityService.ContainsGLAsync(opportunityId, cancellationToken))
|
|
return NotFound();
|
|
|
|
var isDeleted = await _strategicOpportunityService.DeleteGeneralLedgerOpportunityAsync(opportunityId, cancellationToken);
|
|
return isDeleted ? NoContent() : BadRequest();
|
|
}
|
|
|
|
[HttpPost("{opportunityId}/detail")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[ProducesDefaultResponseType]
|
|
public async Task<ActionResult<StrategicOpportunityGLDetailData>> GetGLDetail(long opportunityId, [FromBody] string[] dimensions, CancellationToken cancellationToken)
|
|
{
|
|
var result = await _strategicGLOpportunityDetailService.GetStrategicOpportunityGLDetailData(opportunityId, false, dimensions, cancellationToken);
|
|
return result != null ? Ok(result) : NotFound();
|
|
}
|
|
|
|
[HttpPost("{opportunityId}/tracking-detail")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[ProducesDefaultResponseType]
|
|
public async Task<ActionResult<StrategicOpportunityGLDetailData>> GetGLTrackingDetail(long opportunityId, [FromBody] string[] dimensions, CancellationToken cancellationToken)
|
|
{
|
|
var result = await _strategicGLOpportunityDetailService.GetStrategicOpportunityGLDetailData(opportunityId, true, dimensions, cancellationToken);
|
|
return result != null ? Ok(result) : NotFound();
|
|
}
|
|
|
|
[HttpPut("{opportunityId}/details")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesDefaultResponseType]
|
|
public async Task<ActionResult> UpdateGLDetails(long opportunityId, [FromBody] UpdateGLDetailsDto dto, CancellationToken cancellationToken)
|
|
{
|
|
if (dto == null || dto.Adjustments?.Any() != true || dto.Rows?.Any() != true)
|
|
return BadRequest();
|
|
|
|
await _strategicGLOpportunityDetailService.UpdateStrategicOpportunityGLDetailsData(opportunityId, dto.Adjustments, dto.Rows, cancellationToken);
|
|
return Ok();
|
|
}
|
|
}
|
|
}
|