public async Task <ActionResult> Create(ClassificationDefectModel model) { if (!_permissionService.Authorize(PermissionProvider.ClassificationDefectManagement)) { return(AccessDeniedView()); } if (ModelState.IsValid) { if (_classificationDefectService.CheckNameHasExisted(model.Name).Result) { return(Content("Classification Defect Name has existed.")); } if (model.Materials.FirstOrDefault() == null) { model.Materials = null; } try { var classificationDefect = new ClassificationDefect() { Name = model.Name, Note = model.Note, DisplayOrder = model.DisplayOrder, Materials = ConvertMaterialModelsToStringMaterialIds(model.Materials) }; await _classificationDefectService.InsertAsync(classificationDefect); foreach (var supplier in model.Suppliers) { var supplierEntity = await _supplierService.GetByIdAsync(supplier.Id); if (supplierEntity == null) { await _classificationDefectService.UpdateAsync(classificationDefect); return(Content("Identity of Supplier Defect is invalid.")); } classificationDefect.Suppliers.Add(supplierEntity); } await _classificationDefectService.UpdateAsync(classificationDefect); } catch (Exception ex) { return(Content(ex.Message)); } return(Json(new { status = "success" })); } // If we got this far, something failed, redisplay form return(Content(GetErrorMessageFromModelState())); }
public async Task <ActionResult> Update(ClassificationDefectModel model) { if (!_permissionService.Authorize(PermissionProvider.ClassificationDefectManagement)) { return(AccessDeniedView()); } if (ModelState.IsValid) { if (model.Id <= 0) { return(Content("Identity of Classification Defect is invalid.")); } var classificationDefect = await _classificationDefectService.GetByIdAsync(model.Id); if (classificationDefect == null) { return(Content("Can not found Classification Defect.")); } var exiestedClassificationDefect = await _classificationDefectService.GetClassificationDefectByNameAsync(model.Name); if (exiestedClassificationDefect != null && exiestedClassificationDefect.Id != classificationDefect.Id) { return(Content("Classification Defect Name has existed.")); } try { classificationDefect.Name = model.Name; classificationDefect.Note = model.Note; classificationDefect.DisplayOrder = model.DisplayOrder; classificationDefect.Materials = ConvertMaterialModelsToStringMaterialIds(model.Materials); var listRemove = classificationDefect.Suppliers.Select(x => x.Id).Where(x => model.Suppliers.All(y => y.Id != x)).ToList(); foreach (var supplierId in listRemove) { var supplierEntity = await _supplierService.GetByIdAsync(supplierId); if (supplierEntity == null) { await _classificationDefectService.UpdateAsync(classificationDefect); return(Content("Identity of Supplier Defect is invalid.")); } classificationDefect.Suppliers.Remove(supplierEntity); } var listAdd = model.Suppliers.Where(x => classificationDefect.Suppliers.All(y => y.Id != x.Id)); foreach (var supplier in listAdd) { //get testing sample identity var supplierEntity = await _supplierService.GetByIdAsync(supplier.Id); //check if it not existed if (supplierEntity == null) { await _classificationDefectService.UpdateAsync(classificationDefect); return(Content("Identity of Supplier Defect is invalid.")); } classificationDefect.Suppliers.Add(supplierEntity); } await _classificationDefectService.UpdateAsync(classificationDefect); } catch (Exception ex) { return(Content(ex.Message)); } return(Json(new { status = "success" })); } // If we got this far, something failed, redisplay form return(Content(GetErrorMessageFromModelState())); }