From 5f4e8c6c220ed42d8bb0e1a2a18170ed0d6d3690 Mon Sep 17 00:00:00 2001 From: ameerulrasyid Date: Wed, 19 Feb 2025 14:08:16 +0800 Subject: [PATCH] initial itemmovement and initial itemrequest --- .../Admin/InventoryMasterController.cs | 10 + .../Views/InventoryMaster/ItemMovement.cshtml | 1204 +++++++++++++++++ .../Views/InventoryMaster/ItemRequest.cshtml | 1204 +++++++++++++++++ .../Inventory/Views/_InventoryPartial.cshtml | 26 + Controllers/API/Inventory/InvMainAPI.cs | 109 ++ Views/PublicInventory/ItemInformation.cshtml | 37 + 6 files changed, 2590 insertions(+) create mode 100644 Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml create mode 100644 Areas/Inventory/Views/InventoryMaster/ItemRequest.cshtml diff --git a/Areas/Inventory/Controllers/Admin/InventoryMasterController.cs b/Areas/Inventory/Controllers/Admin/InventoryMasterController.cs index ac4d3a1..e95a2e1 100644 --- a/Areas/Inventory/Controllers/Admin/InventoryMasterController.cs +++ b/Areas/Inventory/Controllers/Admin/InventoryMasterController.cs @@ -17,6 +17,16 @@ namespace PSTW_CentralSystem.Areas.Inventory.Controllers.Admin return View(); } + public IActionResult ItemMovement() + { + return View(); + } + + public IActionResult ItemRequest() + { + return View(); + } + public IActionResult ProductRegistration() { return View(); diff --git a/Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml b/Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml new file mode 100644 index 0000000..48c5027 --- /dev/null +++ b/Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml @@ -0,0 +1,1204 @@ + +@{ + ViewData["Title"] = "Item Movement"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} + +@await Html.PartialAsync("~/Areas/Inventory/Views/_InventoryPartial.cshtml"); +
+
+
+ +
+
+ @*
+
+ Loading... +
+
*@ +
+
+
+ + +
+ +@section Scripts { +@{ + await Html.RenderPartialAsync("_ValidationScriptsPartial"); +} + +} \ No newline at end of file diff --git a/Areas/Inventory/Views/InventoryMaster/ItemRequest.cshtml b/Areas/Inventory/Views/InventoryMaster/ItemRequest.cshtml new file mode 100644 index 0000000..93559de --- /dev/null +++ b/Areas/Inventory/Views/InventoryMaster/ItemRequest.cshtml @@ -0,0 +1,1204 @@ + +@{ + ViewData["Title"] = "Item Request"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} + +@await Html.PartialAsync("~/Areas/Inventory/Views/_InventoryPartial.cshtml"); +
+
+
+ +
+
+ @*
+
+ Loading... +
+
*@ +
+
+
+ + +
+ +@section Scripts { +@{ + await Html.RenderPartialAsync("_ValidationScriptsPartial"); +} + +} \ No newline at end of file diff --git a/Areas/Inventory/Views/_InventoryPartial.cshtml b/Areas/Inventory/Views/_InventoryPartial.cshtml index 3d6b01b..0de8bd5 100644 --- a/Areas/Inventory/Views/_InventoryPartial.cshtml +++ b/Areas/Inventory/Views/_InventoryPartial.cshtml @@ -48,4 +48,30 @@ + +
+ +
+ +
+ +
\ No newline at end of file diff --git a/Controllers/API/Inventory/InvMainAPI.cs b/Controllers/API/Inventory/InvMainAPI.cs index 940b8f9..c852c2d 100644 --- a/Controllers/API/Inventory/InvMainAPI.cs +++ b/Controllers/API/Inventory/InvMainAPI.cs @@ -518,6 +518,115 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory #endregion Item + #region ItemMovement + + [HttpPost("ItemMovementList")] + public async Task ItemMovementList() + { + + var itemMovementList = await _centralDbContext.ItemMovements.ToListAsync(); + Console.WriteLine(Json(itemMovementList)); + return Json(itemMovementList); + + + //try + //{ + // var user = await _userManager.GetUserAsync(User); + // if (user == null) + // { + // return BadRequest("User not found"); + // } + // else + // { + // user.departmentId = user.departmentId != null ? user.departmentId : 0; + // } + + // var userRole = await _userManager.GetRolesAsync(user); + // var isAdmin = userRole.Contains("SystemAdmin") || userRole.Contains("SuperAdmin") || userRole.Contains("Finance"); + // List itemList = new List(); + // // Get the item list + // if (isAdmin) + // { + // itemList = await _centralDbContext.Items + // .AsNoTracking() + // .Include("CreatedBy") + // .Include("Department") + // .Include("Product") + // .Include(i => i.Movement) + // .ThenInclude(m => m!.FromStore) + // .Include(i => i.Movement) + // .ThenInclude(m => m!.FromStation) + // .Include(i => i.Movement) + // .ThenInclude(m => m!.FromUser) + // .ToListAsync(); + // } + // else + // { + // itemList = await _centralDbContext.Items + // .AsNoTracking() + // .Include("CreatedBy") + // .Include("Department") + // .Include("Product") + // .Include(i => i.Movement) + // .ThenInclude(m => m!.FromStore) + // .Include(i => i.Movement) + // .ThenInclude(m => m!.FromStation) + // .Include(i => i.Movement) + // .ThenInclude(m => m!.FromUser) + // .Where(i => i.DepartmentId == user.departmentId) + // .ToListAsync(); + // } + + // // Get the departments list (DepartmentId references Departments) + // var departments = await _centralDbContext.Departments.ToListAsync(); + + // // Now join items with users and departments manually + // var itemListWithDetails = itemList.Select(item => new + // { + // item.ItemID, + // item.UniqueID, + // item.CompanyId, + // item.DepartmentId, + // item.ProductId, + // item.SerialNumber, + // item.Quantity, + // item.Supplier, + // PurchaseDate = item.PurchaseDate.ToString("dd/MM/yyyy"), + // item.PONo, + // item.Currency, + // item.DefaultPrice, + // item.CurrencyRate, + // item.ConvertPrice, + // item.DODate, + // item.Warranty, + // item.PartNumber, + // EndWDate = item.EndWDate.ToString("dd/MM/yyyy"), + // InvoiceDate = item.InvoiceDate?.ToString("dd/MM/yyyy"), + // item.Department?.DepartmentName, + // CreatedBy = item.CreatedBy!.UserName, + // item.Product!.ProductName, + // item.Product!.ProductShortName, + // item.Product!.Category, + // //CurrentUser = item.Movement?.FromUser?.UserName, + // CurrentUser = item.Movement?.FromUser?.UserName, + // CurrentStore = item.Movement?.FromStore?.StoreName, + // CurrentStation = item.Movement?.FromStation?.StationName, + + // QRString = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.Value}/I/{item.UniqueID}" // Generate QR String + // }).ToList(); + + // return Json(itemListWithDetails); + //} + //catch (Exception ex) + //{ + // return BadRequest(ex.Message); + //} + + + } + + #endregion ItemMovement + #region ItemReport [HttpPost("GetInventoryReport/{deptId}")] diff --git a/Views/PublicInventory/ItemInformation.cshtml b/Views/PublicInventory/ItemInformation.cshtml index 0cfbc1c..b725499 100644 --- a/Views/PublicInventory/ItemInformation.cshtml +++ b/Views/PublicInventory/ItemInformation.cshtml @@ -145,6 +145,12 @@ + +
+

Welcome, Admin! You have full access.

+

Welcome, User! You have limited access.

+

Guest View: Please log in.

+
@@ -187,11 +193,13 @@ return { thisItem: null, itemId: '@itemId', + isAdmin: false, } }, mounted() { // Fetch companies, depts, and products from the API this.fetchItem(); + this.fetchUser(); }, methods: { async fetchItem() { @@ -210,6 +218,35 @@ console.error('Error fetching item information:', error); } }, + async fetchUser() { + try { + // var isAdmin = userRole.Contains("SystemAdmin") || userRole.Contains("SuperAdmin") || userRole.Contains("Finance"); + + const adminRoles = ["SystemAdmin", "SuperAdmin", "Finance"]; + + + const response = await fetch(`/IdentityAPI/GetUserInformation/`, { + method: 'POST', + }); + if (response.ok) { + const data = await response.json(); + + this.currentUser = data?.userInfo || null; + const companyDeptData = await this.currentUser.department; + this.currentUserCompanyDept = companyDeptData; + this.selectedCompany = companyDeptData?.companyId || ""; + this.selectedDepartment = companyDeptData?.departmentId || ""; + this.isAdmin = adminRoles.some(role => this.currentUser.role.includes(role)); + + } + else { + console.error(`Failed to fetch user: ${response.statusText}`); + } + } + catch (error) { + console.error('There was a problem with the fetch operation:', error); + } + }, } });