using CPRNIMS.Domain.Contracts.Reports; using CPRNIMS.Domain.UIContracts.Account; using CPRNIMS.Domain.UIContracts.Inventory; using CPRNIMS.Infrastructure.Dto.Inventory.Request; using CPRNIMS.Infrastructure.Helper; using CPRNIMS.WebApps.Controllers.Base; using Microsoft.AspNetCore.Mvc; namespace CPRNIMS.WebApps.Controllers.Inventory { public class RISMgmtController : BaseMethod { private readonly IRIS _ris; private readonly IReportBuilder _builder; private readonly IWebHostEnvironment _env; public RISMgmtController(ErrorLogHelper errorMessageService, IWebHostEnvironment webHostEnvironment, TokenHelper tokenHelper , IRIS ris, IAccount account, IReportBuilder builder) : base(errorMessageService, webHostEnvironment, tokenHelper, account) { _ris = ris; _builder = builder; _env = webHostEnvironment; } [HttpPost] public async Task CreateRIS([FromBody] CreateRISRequest request,CancellationToken ct) { GetUser(); var result = await _ris.CreateRIS(request,ct); if (!result.success) return BadRequest(new { success = false, message = result.message }); return Ok(new { success = true, message = result.message }); } [HttpPost] public async Task ApproveRIS([FromBody] ApproveRISRequest request,CancellationToken ct) { GetUser(); var result = await _ris.ApproveRIS(request, ct); if (!result.success) return BadRequest(new { success = false, message = result.message }); return Ok(new { success = true, message = result.message }); } [HttpPost] public async Task CancelRIS([FromBody] CancelRISRequest request,CancellationToken ct) { GetUser(); if (string.IsNullOrWhiteSpace(request.Reason)) return BadRequest(new{success = false,message = "A reason for cancellation is required."}); var result = await _ris.CancelRIS(request, ct); if (!result.success) return BadRequest(new { success = false, message = result.message }); return Ok(new { success = true, message = result.message }); } [HttpGet] public async Task GetRIS( [FromQuery] string? searchRISNo,string? searchItemName,string? searchIssuedTo,string? discipline,string? status, int pageNumber = 1,int pageSize = 12,CancellationToken ct = default) { short? statusCode = status switch { "0" => 0, "1" => 1, "2" => 2, _ => null }; GetUser(); var result = await _ris.GetRISPaged(new RISPagedRequest { SearchRISNo = searchRISNo, SearchItemName = searchItemName, SearchIssuedTo = searchIssuedTo, Discipline = discipline, Status = statusCode, PageNumber = pageNumber, PageSize = pageSize }, ct); return Json(new { data = result.Data, recordsTotal = result.RecordsTotal, departmentList = result.DepartmentList, disciplineList = result.DisciplineList }); } } }