Template
52 lines
2.6 KiB
C#
52 lines
2.6 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Strata.ContinuousImprovement.Biz.OpportunityRoleAssignment;
|
|
using Strata.ContinuousImprovement.Biz.StrategicOpportunities;
|
|
using Strata.CoreLib.Claims.Extensions;
|
|
using System.Collections.Generic;
|
|
using System;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Linq;
|
|
|
|
namespace Strata.ContinuousImprovement.Api.Controllers
|
|
{
|
|
[ApiController]
|
|
[ApiVersion("1.0")]
|
|
[Route("api/v{api-version:apiVersion}/[controller]")]
|
|
public class StrategicOpportunitySecurityController : ControllerBase
|
|
{
|
|
private readonly IStrategicOpportunityService _strategicOpportunityService;
|
|
private readonly IOpportunityRoleAssignmentService _opportunityRoleAssignmentService;
|
|
|
|
public StrategicOpportunitySecurityController(IStrategicOpportunityService strategicOpportunityService, IOpportunityRoleAssignmentService opportunityRoleAssignmentService)
|
|
{
|
|
_strategicOpportunityService = strategicOpportunityService;
|
|
_opportunityRoleAssignmentService = opportunityRoleAssignmentService;
|
|
}
|
|
|
|
[HttpGet("{lootId}")]
|
|
public async Task<RoleAssignmentView> GetUserPermissions(long lootId, CancellationToken cancellationToken)
|
|
=> await _opportunityRoleAssignmentService.GetUserRoleAssignmentsAsync(lootId, cancellationToken);
|
|
|
|
[HttpGet("{lootId}/[action]")]
|
|
public async Task<IEnumerable<OpportunityRoleAssignmentView>> GetSimpleSecurities(long lootId, CancellationToken cancellationToken)
|
|
=> await _opportunityRoleAssignmentService.GetRoleAssignmentsAsync(lootId, cancellationToken);
|
|
|
|
[HttpPut("{lootId}/[action]")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
public async Task<ActionResult<bool>> SetSimpleSecurities(long lootId, [FromBody] List<OpportunityRoleAssignmentView> permissionSettings, CancellationToken cancellationToken)
|
|
{
|
|
if (permissionSettings.Any(ps => ps.LootId != lootId)) { return BadRequest(); }
|
|
|
|
var roleAssignments = await _opportunityRoleAssignmentService.GetUserRoleAssignmentsAsync(lootId, cancellationToken);
|
|
var isSecurable = roleAssignments.CanSecure;
|
|
var userGuid = User?.GetUserGuid() ?? Guid.NewGuid();
|
|
if (!User.IsSdtEmployee() && !isSecurable) return Ok(false);
|
|
await _opportunityRoleAssignmentService.SaveRoleAssignmentsAsync(lootId, permissionSettings, cancellationToken);
|
|
return Ok(true);
|
|
}
|
|
}
|
|
}
|