public ActionResult EditImport(int id) { var model = new EditMaterialImportViewModel(); try { // get import info var import = db.MaterialImports.Where(t => t.MaterialImportId == id).FirstOrDefault(); if (import == null) { throw new Exception("Không tìm thấy thông tin nhập nguyên liệu!"); } model.MaterialImportId = import.MaterialImportId; model.MaterialImportDate = import.MaterialImportDate.ToString("dd/MM/yyyy"); model.MaterialId = import.MaterialId; model.StockId = import.StockId ?? 0; model.Quantity = import.Quantity.ToString("#,###"); model.Price = import.Price.ToString("#,###"); model.Notes = import.Notes; } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } try { // assign view bag values var materials = db.Materials.OrderBy(t => t.MaterialName) .AsEnumerable() .Select(t => new SelectListItem { Value = t.MaterialId.ToString(), Text = t.MaterialName }) .ToList(); var stocks = db.Stocks.OrderBy(r => r.StockName) .AsEnumerable() .Select(r => new SelectListItem { Value = r.StockId.ToString(), Text = r.StockName }) .ToList(); ViewBag.Materials = materials; ViewBag.Stocks = stocks; } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } return(View(model)); }
public ActionResult EditImport(EditMaterialImportViewModel model) { try { // get import info var import = db.MaterialImports.Where(t => t.MaterialImportId == model.MaterialImportId).FirstOrDefault(); if (import == null) { throw new Exception("Không tìm thấy thông tin nhập nguyên liệu!"); } // get material info var material = db.Materials.Where(t => t.MaterialId == import.MaterialId).FirstOrDefault(); if (material == null) { throw new Exception("Không tìm thấy thông tin nguyên liệu!"); } // get quantity double quantity = 0; if (!double.TryParse(model.Quantity.Replace(",", ""), out quantity)) { throw new Exception("Số lượng nhập không hợp lệ!"); } // get price decimal price = 0; if (!decimal.TryParse(model.Price.Replace(",", ""), out price)) { throw new Exception("Giá nhập không hợp lệ!"); } // update material in stock var unitInstock = db.MaterialInStocks.Where(r => r.MaterialId == import.MaterialId && r.StockId == import.StockId).FirstOrDefault(); if (unitInstock != null) { unitInstock.Quantity = unitInstock.Quantity - import.Quantity + quantity; } else { var materialInStock = new MaterialInStock(); materialInStock.MaterialId = import.MaterialId; materialInStock.StockId = import.StockId ?? 0; materialInStock.Quantity = 0; db.MaterialInStocks.Add(materialInStock); } // update import info import.MaterialImportDate = DateTime.ParseExact(model.MaterialImportDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None) + new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second); import.MaterialId = model.MaterialId; import.StockId = model.StockId; import.Quantity = quantity; import.Price = (decimal)price; import.Notes = model.Notes; db.SaveChanges(); return(RedirectToAction("ListImports")); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } try { // assign view bag values var materials = db.Materials.OrderBy(t => t.MaterialName) .AsEnumerable() .Select(t => new SelectListItem { Value = t.MaterialId.ToString(), Text = t.MaterialName }) .ToList(); var stocks = db.Stocks.OrderBy(r => r.StockName) .AsEnumerable() .Select(r => new SelectListItem { Value = r.StockId.ToString(), Text = r.StockName }) .ToList(); ViewBag.Materials = materials; ViewBag.Stocks = stocks; } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } return(View(model)); }