public ActionResult SaveItem(ItemViewModel itemModel)
{
bool result = false;
try
{
// Step 1: Save Category
tblCategory objCategory = objRestaurantDBEntities.tblCategories
.SingleOrDefault(x => x.CategoryId == itemModel.CategoryId) ?? new tblCategory();
if (itemModel.CategoryId <= 0)
{
objCategory.CategoryName = itemModel.CategoryName;
objRestaurantDBEntities.tblCategories.Add(objCategory);
objRestaurantDBEntities.SaveChanges(); // Save to generate CategoryId
}
// Ensure objCategory has an ID
if (objCategory.CategoryId <= 0)
{
return Json(new { success = false, message = "Failed to save category." });
}
// Step 2: Save Item
tblItem objItem = objRestaurantDBEntities.tblItems
.SingleOrDefault(x => x.ItemId == itemModel.ItemId) ?? new tblItem();
objItem.PCode = itemModel.PCode;
objItem.ItemName = itemModel.ItemName;
objItem.CostPrice = itemModel.CostPrice;
objItem.ItemPrice = itemModel.ItemPrice;
objItem.Vat = itemModel.Vat;
objItem.ExpiringDate = itemModel.ExpiringDate;
objItem.Active = itemModel.Active;
objItem.CategoryId = objCategory.CategoryId; // Assign correct category ID
if (itemModel.ItemId <= 0) // New Item
{
objRestaurantDBEntities.tblItems.Add(objItem);
}
objRestaurantDBEntities.SaveChanges(); // Save Item
if (objItem.ItemId <= 0)
{
return Json(new { success = false, message = "Failed to save item. ItemId not generated." });
}
// Step 3: Save Quantity (Ensure itemModel.tblQuantities is not null)
if (itemModel.tblQuantities != null)
{
tblQuantity objQnty = objRestaurantDBEntities.tblQuantities
.SingleOrDefault(x => x.QuantityId == itemModel.tblQuantities.QuantityId) ?? new tblQuantity();
objQnty.InitialQty = itemModel.tblQuantities.InitialQty;
objQnty.Quantity = itemModel.tblQuantities.Quantity;
objQnty.ItemId = objItem.ItemId;
if (itemModel.tblQuantities.QuantityId <= 0) // New Quantity Entry
{
objRestaurantDBEntities.tblQuantities.Add(objQnty);
}
objRestaurantDBEntities.SaveChanges(); // Save Quantity Data
}
result = true;
}
catch (Exception ex)
{
// Log the error properly (Assuming you have a logging mechanism)
Console.WriteLine(ex.ToString());
return Json(new { success = false, message = "An error occurred: {ex.Message}" });
}
return Json(new { success = result, message = "Item saved successfully." });
}