using CPRNIMS.Domain.UIContracts.Inventory; using CPRNIMS.Infrastructure.Helper; using CPRNIMS.Infrastructure.ViewModel.Account; using CPRNIMS.Infrastructure.ViewModel.Finance; using CPRNIMS.Infrastructure.ViewModel.Inventory; using CPRNIMS.WebApps.Controllers.Base; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; using static System.Runtime.InteropServices.JavaScript.JSType; namespace CPRNIMS.WebApps.Controllers.Inventory { public class InventoryMgmtController : BaseMethod { List? response; private readonly IInventory _inventory; public InventoryMgmtController(TokenHelper tokenHelper, ErrorLogHelper errorMessageService, IWebHostEnvironment webHostEnvironment , IInventory inventory) : base(tokenHelper, errorMessageService, webHostEnvironment) { _inventory = inventory; } #region Get public async Task GetLotQtyByItem(InventoryVM viewModels) { try { response = await _inventory.GetLotQtyByItem(await GetUser(), viewModels); return GetResponse(response); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task GetLotNo(InventoryVM viewModels) { try { response = await _inventory.GetLotNo(await GetUser(), viewModels); return GetResponse(response); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task GetLotNoById(InventoryVM viewModels) { try { response = await _inventory.GetLotNoById(await GetUser(), viewModels); return GetResponse(response); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task GetInventoryById(InventoryVM viewModels) { try { response = await _inventory.GetInventoryById(await GetUser(), viewModels); return GetResponse(response); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task GetInventoryByUserId(InventoryVM viewModels) { try { response = await _inventory.GetInventoryByUserId(await GetUser(), viewModels); return GetResponse(response); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task GetRequestedItemByUserId(InventoryVM viewModels) { try { response = await _inventory.GetRequestedItemByUserId(await GetUser(), viewModels); return GetResponse(response); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } #endregion #region POST PUT public async Task PostPutLotNo(InventoryVM viewModel) { try { var postPutItem = await _inventory.PostPutLotNo(await GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task PostPutLotBin(InventoryVM viewModel) { try { var postPutItem = await _inventory.PostPutLotBin(await GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task PostPutReqApproval(InventoryVM viewModel) { try { var postPutItem = await _inventory.PostPutReqApproval(await GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } public async Task PostPutReqItems(InventoryVM viewModel) { try { var postPutItem = await _inventory.PostPutReqItems(await GetUser(), viewModel); if (postPutItem.StatusResponse != "Error") { return Json(new { success = true }); } return Json(new { success = false, Response = postPutItem.Message }); } catch (Exception ex) { var message = ex.InnerException?.ToString() ?? ex.Message.ToString(); await PostErrorMessage(message, "WebApps"); throw; } } #endregion #region Views public async Task Inventory() { if (GetUser() == null) { RedirectToAction("Logout", "Home"); } await GetStoreCredAsync(await GetUser(), await _tokenHelper.GetJwtTokenAsync(await GetUser())); return View(); } public async Task Lot() { if (GetUser() == null) { RedirectToAction("Logout", "Home"); } await GetStoreCredAsync(await GetUser(), await _tokenHelper.GetJwtTokenAsync(await GetUser())); return View(); } public async Task RequestItem() { if (GetUser() == null) { RedirectToAction("Logout", "Home"); } await GetStoreCredAsync(await GetUser(), await _tokenHelper.GetJwtTokenAsync(await GetUser())); return View(); } #endregion } }