public async Task <IActionResult> Edit(Guid id, RegionViewModel vm) { if (ModelState.IsValid) { var getOperation = await _bo.ReadAsync(id); if (!getOperation.Success) { return(OperationErrorBackToIndex(getOperation.Exception)); } if (getOperation.Result == null) { return(RecordNotFound()); } var result = getOperation.Result; if (!vm.CompareToModel(result)) { result = vm.ToModel(result); var updateOperation = await _bo.UpdateAsync(result); if (!updateOperation.Success) { TempData["Alert"] = AlertFactory.GenerateAlert(NotificationType.Danger, updateOperation.Exception); getOperation = await _bo.ReadAsync((Guid)id); if (!getOperation.Success) { return(OperationErrorBackToIndex(getOperation.Exception)); } if (getOperation.Result == null) { return(RecordNotFound()); } vm = RegionViewModel.Parse(getOperation.Result); ViewData["Title"] = "Edit Region"; var crumbs = GetCrumbs(); crumbs.Add(new BreadCrumb() { Action = "Edit", Controller = "Regions", Icon = "fa-search", Text = "Edit" }); ViewData["BreadCrumbs"] = crumbs; return(View(vm)); } if (!updateOperation.Result) { TempData["Alert"] = AlertFactory.GenerateAlert(NotificationType.Danger, updateOperation.Message); getOperation = await _bo.ReadAsync((Guid)id); if (!getOperation.Success) { return(OperationErrorBackToIndex(getOperation.Exception)); } if (getOperation.Result == null) { return(RecordNotFound()); } vm = RegionViewModel.Parse(getOperation.Result); ViewData["Title"] = "Edit Region"; var crumbs = GetCrumbs(); crumbs.Add(new BreadCrumb() { Action = "Edit", Controller = "Regions", Icon = "fa-search", Text = "Edit" }); ViewData["BreadCrumbs"] = crumbs; return(View(vm)); } else { return(OperationSuccess("The record was successfuly updated")); } } } return(RedirectToAction(nameof(Index))); }