using CPRNIMS.Domain.UIContracts.Account; using CPRNIMS.Domain.UIContracts.Inventory; using CPRNIMS.Infrastructure.Dto.Inventory.Request; using CPRNIMS.Infrastructure.Helper; using CPRNIMS.Infrastructure.ViewModel.Inventory; using CPRNIMS.WebApps.Controllers.Base; using Microsoft.AspNetCore.Mvc; namespace CPRNIMS.WebApps.Controllers.Inventory { public class InventoryMgmtController : BaseMethod { List? response; private readonly IInventory _inventory; public InventoryMgmtController(ErrorLogHelper errorMessageService, IWebHostEnvironment webHostEnvironment, TokenHelper tokenHelper , IInventory inventory,IAccount account) : base(errorMessageService, webHostEnvironment, tokenHelper, account) { _inventory = inventory; } #region Get public async Task GetTransactContext(int inventoryId) { var response = await _inventory.GetTransactContextAsync(inventoryId); return GetResponse(response); } public async Task GetLotQtyByItem(InventoryVM viewModels) { response = await _inventory.GetLotQtyByItem(GetUser(), viewModels); return GetResponse(response); } public async Task GetLotNo(InventoryVM viewModels) { response = await _inventory.GetLotNo(GetUser(), viewModels); return GetResponse(response); } public async Task GetLotNoById(InventoryVM viewModels) { response = await _inventory.GetLotNoById(GetUser(), viewModels); return GetResponse(response); } public async Task GetInventoryById(InventoryVM viewModels) { response = await _inventory.GetInventoryById(GetUser(), viewModels); return GetResponse(response); } public async Task GetInventoryByUserId(InventoryVM viewModels) { response = await _inventory.GetInventoryByUserId(GetUser(), viewModels); return GetResponse(response); } public async Task GetRequestedItemByUserId(InventoryVM viewModels) { response = await _inventory.GetRequestedItemByUserId(GetUser(), viewModels); return GetResponse(response); } [HttpGet] public async Task GetInventory(string searchPRNo = "", string searchItemNo = "",string searchItemName = "", string searchDept = "",string searchProjectCode="", int pageNumber = 1, int pageSize = 10) { var request = new InventoryRequest { SearchPRNo = searchPRNo, SearchItemNo = searchItemNo, SearchItemName = searchItemName, SearchDept = searchDept, SearchProjectCode = searchProjectCode, PageNumber = pageNumber, PageSize = pageSize }; var result = await _inventory.GetInventory(GetUser(), request); int draw = int.TryParse(Request.Query["draw"], out int d) ? d : 1; return Json(new { draw = draw, recordsTotal = result.TotalCount, recordsFiltered = result.TotalCount, data = result.Data, departmentList=result.DepartmentList, }); } #endregion #region POST PUT public async Task PostPutLotNo(InventoryVM viewModel) { var postPutItem = await _inventory.PostPutLotNo(GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } public async Task PostPutLotBin(InventoryVM viewModel) { var postPutItem = await _inventory.PostPutLotBin(GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } public async Task PostPutReqApproval(InventoryVM viewModel) { var postPutItem = await _inventory.PostPutReqApproval(GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } public async Task PostPutReqItems(InventoryVM viewModel) { var postPutItem = await _inventory.PostPutReqItems(GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } #endregion #region Views public IActionResult GetInventoryTabPage(int id) { return ViewComponent("InventoryTabPage", new { inventoryTabPageId = id }); } public async Task Inventory() { return await IsAuthenTicated(); } public async Task Lot() { return await IsAuthenTicated(); } public async Task RequestItem() { return await IsAuthenTicated(); } #endregion } }