public ActionResult AddAddresses(int id, WorkgroupAddress workgroupAddress) { ViewBag.StepNumber = 10; var workgroup = _workgroupRepository.GetNullableById(id); if (workgroup == null) { Message = "Workgroup not found."; this.RedirectToAction <WorkgroupController>(a => a.Index(false)); } workgroupAddress.Workgroup = workgroup; ModelState.Clear(); workgroupAddress.TransferValidationMessagesTo(ModelState); if (!ModelState.IsValid) { ErrorMessage = "Address not valid"; var viewModel = WorkgroupAddressViewModel.Create(workgroup, _stateRepository, true); viewModel.WorkgroupAddress = workgroupAddress; viewModel.WorkgroupAddress.Workgroup = workgroup; return(View(viewModel)); } var matchFound = 0; foreach (var address in workgroup.Addresses) { matchFound = _workgroupAddressService.CompareAddress(workgroupAddress, address); if (matchFound > 0) { break; } } if (matchFound > 0) { var matchedAddress = workgroup.Addresses.Single(a => a.Id == matchFound); if (!matchedAddress.IsActive) { Message = "Address created."; matchedAddress.IsActive = true; _workgroupRepository.EnsurePersistent(workgroup); } else { Message = "This Address already exists."; } } else { Message = "Address created"; workgroup.AddAddress(workgroupAddress); _workgroupRepository.EnsurePersistent(workgroup); } return(this.RedirectToAction(a => a.Addresses(id))); }