// GET: InvIssues/Edit/5 public ActionResult Edit(long?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } InvIssue invIssue = db.InvIssues.Find(id); InvIssueDto invIssueDto = new InvIssueDto() { Id = invIssue.Id, Description = invIssue.Description, IssueBy = invIssue.IssueBy, IssueDate = Convert.ToDateTime(invIssue.IssueDate), IssueTo = invIssue.IssueTo, IssueNo = invIssue.IssueNo, IssuePlaceId = (int)Enum.Parse(typeof(IssuePlace), invIssue.IssuePlace), listUser = db.AspNetUsers.Select(x => new UserDto() { Email = x.Email, Id = x.Id }).ToList(), ObjectState = (int)ObjectState.Modified, listIssueDetail = GetIssueDetails(invIssue.Id), IssuePlaceList = IssuePlaceDto.ConvertEnum() }; if (invIssue == null) { return(HttpNotFound()); } return(View(invIssueDto)); }
public async Task <JsonResult> SaveAsync(InvIssueDto vm) { try { if (ModelState.IsValid) { if (vm.listIssueDetailsToDelete.Count() > 0) { foreach (var item in vm.listIssueDetailsToDelete) { var objdelete = db.InvIssueDetails.Find(item); if (objdelete != null) { db.Entry(objdelete).State = EntityState.Deleted; await db.SaveChangesAsync(); } } } var objsave = new InvIssue() { Id = vm.Id, Description = vm.Description, IssueBy = vm.IssueBy, IssueTo = vm.IssueTo, IssueDate = vm.IssueDate.ToString(), IssueNo = vm.IssueNo, IssuePlace = ((IssuePlace)vm.IssuePlaceId).ToString() }; if (objsave.Id > 0 && vm.ObjectState != (int)ObjectState.Deleted) { vm.ObjectState = (int)ObjectState.Modified; } if (objsave.Id <= 0 && vm.ObjectState != (int)ObjectState.Deleted) { vm.ObjectState = (int)ObjectState.Added; } switch (vm.ObjectState) { case (int)ObjectState.Added: db.InvIssues.Add(objsave); await db.SaveChangesAsync(); break; case (int)ObjectState.Modified: db.Entry(objsave).State = EntityState.Modified; await db.SaveChangesAsync(); break; case (int)ObjectState.Deleted: var details = db.InvIssueDetails.Where(x => x.InvIssueId == objsave.Id).ToList(); foreach (var item in details) { var invissuedetail = await db.InvIssueDetails.FindAsync(item.Id); db.Entry(invissuedetail).State = EntityState.Deleted; db.SaveChanges(); } db.Entry(objsave).State = EntityState.Deleted; await db.SaveChangesAsync(); break; } vm.Id = objsave.Id; vm.listIssueDetail = await SaveDetailAsync(vm); var result = new { result = vm }; return(Json(result)); } else { var result = new { result = false }; return(Json(result)); } } catch (Exception ex) { return(Json(null)); } }