NonInventPurchasingSystem/CPRNIMS.WebApi/Controllers/Inventory/MRSMgmtController.cs
2026-06-18 16:51:31 +08:00

64 lines
2.4 KiB
C#

using CPRNIMS.Domain.Contracts.Inventory;
using CPRNIMS.Infrastructure.Dto.Inventory;
using CPRNIMS.Infrastructure.Dto.Inventory.Request;
using CPRNIMS.WebApi.Security;
using Microsoft.AspNetCore.Mvc;
namespace CPRNIMS.WebApi.Controllers.Inventory
{
[Route("api/[controller]")]
[ApiController]
public partial class MRSMgmtController : ControllerBase
{
private readonly IMRS _mrs;
public MRSMgmtController(IMRS mrs) => _mrs = mrs;
[HttpGet]
public async Task<IActionResult> GetMRS([FromQuery] MRSFilterDto filter, CancellationToken ct)
{
var currentUser = User.ToUserClaims();
if (currentUser == null)
return BadRequest();
var result = await _mrs.GetPagedAsync(filter, ct, currentUser.DepartmentId, currentUser.UserName);
return Ok(result);
}
[HttpPost()]
public async Task<IActionResult> CreateMRS([FromBody] CreateMRSRequest request, CancellationToken ct)
{
var currentUser = User.ToUserClaims();
if (currentUser == null)
return BadRequest();
var result = await _mrs.CreateAsync(request, currentUser.UserName, ct);
return Ok(new { success = true, message = $"MRS# {result.MRSNo} created successfully." });
}
[HttpPost("Approve")]
public async Task<IActionResult> ApproveMRS([FromBody] ApproveMRSRequest request, CancellationToken ct)
{
var currentUser = User.ToUserClaims();
if (currentUser == null)
return BadRequest();
await _mrs.ApproveAsync(request.MRSId, currentUser.UserName, ct);
return Ok(new { success = true, message = "MRS approved successfully." });
}
[HttpPost("Cancel")]
public async Task<IActionResult> CancelMRS([FromBody] CancelMRSRequest request, CancellationToken ct)
{
if (string.IsNullOrWhiteSpace(request.Reason))
return BadRequest(new { success = false, message = "A reason for cancellation is required." });
var currentUser = User.ToUserClaims();
if (currentUser == null)
return BadRequest();
await _mrs.CancelAsync(request, currentUser.UserName, ct);
return Ok(new {success = true,message = "MRS cancelled and inventory adjusted."});
}
}
}