diff --git a/Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml b/Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml index 77e7f63..29686f4 100644 --- a/Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml +++ b/Areas/Inventory/Views/InventoryMaster/ItemMovement.cshtml @@ -342,6 +342,31 @@ { "title": "Note", "data": "item.consignmentNote", + "render": function (data, type, full, meta) { + if (!data) { + return "No Document"; + } + + // Check if the document is an image based on file extension + var isImage = /\.(jpeg|jpg|png|gif)$/i.test(data); + var isPdf = /\.pdf$/i.test(data); + + if (isImage) { + return ` + Image + `; + } else if (isPdf) { + return ` + PDF Document +
View PDF +
`; + } else { + return `Download File`; + } + }, + }, { "title": "Send Date", diff --git a/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml b/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml index e9a53eb..1858b90 100644 --- a/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml +++ b/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml @@ -201,8 +201,6 @@ this.fetchRequest(); - // Reset the form - this.resetForm(); } else { throw new Error('Failed to submit form.'); } @@ -625,31 +623,6 @@ // Your currency conversion logic here console.log('Selected currency:', this.currency); }, - resetForm() { - // this.company = ''; - // this.Dept = null; - // this.productName = null; - // this.imageProduct = null; - // this.serialNumber = ''; - // this.quantity = 1; - // this.supplierName = null; - // this.purchaseDate = null; - // this.PO = null; - // this.currency = 'MYR'; - // this.DefaultPrice = 0.01; - // this.currencyRate = 1; - // this.convertPrice = 0.01; - // this.DODate = null; - // this.warranty = 0; - // this.EndWDate = null; - // this.invoiceDate = null; - // this.selectedProduct = ''; - // this.selectedSupplier = ''; - // this.selectedCompany = this.currentUserCompanyDept.companyId; - // this.selectedDepartment = ''; - // this.selectedTeamType = ''; - // this.partNumber = null; - }, // FRONT END FUNCTIONS //----------------------// diff --git a/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml b/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml index 3914b15..f43def4 100644 --- a/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml +++ b/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml @@ -351,19 +351,19 @@ selectedOther: "", remark: "", document: null, - companies: [ - { - companyId: 1, - companyName: "PSTW", - departments: [{ departmentId: 1, departmentName: "Air" }, { departmentId: 2, departmentName: "Marine" }, { departmentId: 3, departmentName: "River" }] - }, - { - companyId: 2, - companyName: "TES", - departments: [{ departmentId: 1, departmentName: "Air" }], - }, - ], - company: "", + // companies: [ + // { + // companyId: 1, + // companyName: "PSTW", + // departments: [{ departmentId: 1, departmentName: "Air" }, { departmentId: 2, departmentName: "Marine" }, { departmentId: 3, departmentName: "River" }] + // }, + // { + // companyId: 2, + // companyName: "TES", + // departments: [{ departmentId: 1, departmentName: "Air" }], + // }, + // ], + // company: "", currentUser: null, currentUserCompanyDept: null, } @@ -419,37 +419,20 @@ const now = new Date(); const formData = { - ...(this.selectedAction === 'user' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedUser, } : {}), - ...(this.selectedAction === 'store' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedStore} : {}), - ...(this.selectedAction === 'supplier' ? { toUser: this.currentUser.id, toOther: this.selectedOther, SendDate: this.assigndate, Remark: this.remark + '. Item sent to ' + this.selectedSupplier + ' for ' + this.selectedOther,lastUser: this.currentUser.id, } : {}), - ...(this.selectedAction === 'faulty' ? { toUser: this.currentUser.id,toOther: 'Faulty', Date: new Date(now.getTime() + 8 * 60 * 60 * 1000).toISOString(), Remark: this.remark, ConsignmentNote: this.document } : {}), + ...(this.selectedAction === 'user' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedUser, MovementComplete: false, } : {}), + ...(this.selectedAction === 'store' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedStore, MovementComplete: false,} : {}), + ...(this.selectedAction === 'supplier' ? { toUser: this.currentUser.id, toOther: this.selectedOther, SendDate: this.assigndate, Remark: this.remark + '. Item sent to ' + this.selectedSupplier + ' for ' + this.selectedOther,lastUser: this.currentUser.id, MovementComplete: false, } : {}), + ...(this.selectedAction === 'faulty' ? { toUser: this.currentUser.id,toOther: 'Faulty', Date: new Date(now.getTime() + 8 * 60 * 60 * 1000).toISOString(), Remark: this.remark, ConsignmentNote: this.document, MovementComplete: true, } : {}), ItemId: this.thisItem.itemID, Action: 'Stock Out', Quantity: 1, - MovementComplete: false, }; try { - // Additional specific checks - // if (this.showSerialNumber) { - // this.quantity = 0; - // if (this.serialNumber === null || this.serialNumber === '') { - // alert('Serial Number Error', 'Serial Number must be filled when selecting Item or Part.', 'warning'); - // return; - // } - // } - // else { - // this.serialNumber = null; - // if (this.quantity === 0 || this.quantity === null || this.quantity === '') { - // alert('quantity Error', 'Quantity is required when selecting Disposable.', 'warning'); - // return; - // } - // } - // Proceed to send the data to the API const response = await fetch('/InvMainAPI/AddItemMovement', { method: 'POST', @@ -462,8 +445,9 @@ if (response.ok) { // If the form submission was successful, display a success message alert('Success!', 'Item form has been successfully submitted.', 'success'); - const updatedItem = await response.json(); + // const updatedItem = await response.json(); // this.items.push(updatedItem); + // console.log(updatedItem); // Reset the form this.resetForm(); @@ -552,6 +536,7 @@ resetForm() { this.selectedUser = ""; this.selectedStore = ""; + this.selectedSupplier = ""; this.remark = ""; this.assigndate = ""; this.selectedStore = ""; @@ -585,28 +570,6 @@ console.error('There was a problem with the fetch operation:', error); } }, - async fetchStoreId() { - try { - 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 || ""; - - } - else { - console.error(`Failed to fetch user: ${response.statusText}`); - } - } - catch (error) { - console.error('There was a problem with the fetch operation:', error); - } - }, async fetchUsers() { try { // const token = localStorage.getItem('token'); // Get the token from localStorage diff --git a/Controllers/API/Inventory/InvMainAPI.cs b/Controllers/API/Inventory/InvMainAPI.cs index d12c803..6078e77 100644 --- a/Controllers/API/Inventory/InvMainAPI.cs +++ b/Controllers/API/Inventory/InvMainAPI.cs @@ -663,8 +663,6 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory public async Task AddItemMovement([FromBody] ItemMovementModel itemmovement) { - - if (!ModelState.IsValid) { return BadRequest(ModelState); @@ -672,6 +670,18 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory try { + if (itemmovement.ToUser == null) + { + throw new Exception("itemmovement.ToUser is null"); + } + + //var inventoryMaster = await _centralDbContext.InventoryMasters.Include("User").FirstOrDefaultAsync(i => i.UserId == itemmovement.ToUser) ?? new InventoryMasterModel { UserId = itemmovement.ToUser }; + var inventoryMaster = await _centralDbContext.InventoryMasters.FirstOrDefaultAsync(i => i.UserId == itemmovement.ToUser); + if (inventoryMaster != null) + { + itemmovement.ToStore = inventoryMaster.StoreId; + } + if (!string.IsNullOrEmpty(itemmovement.ConsignmentNote)) { @@ -702,70 +712,33 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory await _centralDbContext.SaveChangesAsync(); // This generates the auto-incremented ItemID + var updateItem = await _centralDbContext.Items.FindAsync(itemmovement.ItemId); //only access after it have its own itemmovent - //ItemMovementModel itemMovement = new ItemMovementModel - //{ - // ItemId = item.ItemID, - // ToUser = inventoryMaster.UserId, - // ToStore = inventoryMaster.StoreId, - // LastStore = inventoryMaster.StoreId, - // LastUser = inventoryMaster.UserId, - // LatestStatus = "Ready To Deploy", - // Quantity = item.Quantity, - // Action = "Register", - // Date = DateTime.Now, - // MovementComplete = true, - //}; + if (updateItem != null) + { + if (itemmovement.ToOther == "On Delivery") + { + updateItem.ItemStatus = 2; + } + else if (itemmovement.ToOther == "Repair" || itemmovement.ToOther == "Calibration") + { + updateItem.ItemStatus = 4; + } + else if (itemmovement.ToOther == "Faulty") + { + updateItem.ItemStatus = 8; + } - //_centralDbContext.ItemMovements.Add(itemMovement); - //await _centralDbContext.SaveChangesAsync(); + Console.WriteLine("updateItem.MovementId" + updateItem.MovementId); + Console.WriteLine("itemmovement.Id" + itemmovement.Id); + + updateItem.MovementId = itemmovement.Id; + _centralDbContext.Items.Update(updateItem); + + } - // Fetch the generated ItemID - //var savedItem = await _centralDbContext.Items.FirstOrDefaultAsync(i => i.ItemID == item.ItemID); - //// Fetch the generated itemMovement - //var savedMovement = await _centralDbContext.ItemMovements.FirstOrDefaultAsync(i => i.Id == itemMovement.Id); + await _centralDbContext.SaveChangesAsync(); // save changes for table item - movementid - //if (savedItem != null) - //{ - // var companyDepartment = await GetDepartmentWithCompany(item.CompanyId, item.DepartmentId); - // var itemProduct = _centralDbContext.Products.Where(p => p.ProductId == item.ProductId).FirstOrDefault(); - - // string? companyInitial = companyDepartment!.CompanyName?.ToString().Substring(0, 1).ToUpper(); - // string? departmentInitial = companyDepartment!.DepartmentName?.ToString().Substring(0, 1).ToUpper(); - // string? deptCode = companyDepartment!.DepartmentCode?.ToString(); - // char? initialCategory = itemProduct!.Category.ToString().Substring(0, 1).ToUpper().FirstOrDefault(); - // string? productId = itemProduct!.ProductId.ToString("D3"); - // string? itemId = item.ItemID.ToString("D5"); - // var uniqueId = $"{deptCode}{initialCategory}{productId}{itemId}".ToUpper(); - // savedItem.UniqueID = uniqueId; - // savedItem.MovementId = savedMovement?.Id; - - // _centralDbContext.Items.Update(savedItem); - // await _centralDbContext.SaveChangesAsync(); - //} - - //var updatedItem = new - //{ - // savedItem!.ItemID, - // savedItem.UniqueID, - // savedItem.CompanyId, - // savedItem.DepartmentId, - // savedItem.ProductId, - // savedItem.SerialNumber, - // savedItem.Quantity, - // savedItem.Supplier, - // savedItem.PurchaseDate, - // savedItem.PONo, - // savedItem.Currency, - // savedItem.DefaultPrice, - // savedItem.CurrencyRate, - // savedItem.ConvertPrice, - // savedItem.DODate, - // savedItem.Warranty, - // savedItem.EndWDate, - // savedItem.InvoiceDate, - // savedItem.PartNumber, - //}; return Json(itemmovement); } catch (Exception ex) diff --git a/wwwroot/Media/Inventory/itemmovement/8_26f467f3-0567-4419-b39f-d9b9640382878_Request.jpg b/wwwroot/Media/Inventory/itemmovement/8_26f467f3-0567-4419-b39f-d9b9640382878_Request.jpg new file mode 100644 index 0000000..b4c8942 Binary files /dev/null and b/wwwroot/Media/Inventory/itemmovement/8_26f467f3-0567-4419-b39f-d9b9640382878_Request.jpg differ