public void TestTransferValuesWhenKfsVendorHasNullState() { #region Arrange var vendors = new List <Vendor>(); vendors.Add(CreateValidEntities.Vendor(1)); vendors[0].SetIdTo("1"); new FakeVendors(0, VendorRepository, vendors, true); var vendorAddress = new List <VendorAddress>(); vendorAddress.Add(CreateValidEntities.VendorAddress(2)); vendorAddress[0].Vendor = VendorRepository.Queryable.Single(a => a.Id == "1"); vendorAddress[0].TypeCode = "2"; vendorAddress[0].State = null; new FakeVendorAddresses(0, VendorAddressRepository, vendorAddress, false); var source = CreateValidEntities.WorkgroupVendor(1); source.VendorId = "1"; source.VendorAddressTypeCode = "2"; var destination = new WorkgroupVendor(); Assert.AreNotEqual(destination.State, "XX"); #endregion Arrange #region Act WorkgroupService.TransferValues(source, ref destination); #endregion Act #region Assert Assert.AreEqual("XX", destination.State); #endregion Assert }
public JsonNetResult AddKfsVendor(int workgroupId, string vendorId, string addressTypeCode) { var workgroup = _repositoryFactory.WorkgroupRepository.GetById(workgroupId); var vendor = _vendorRepository.Queryable.Single(a => a.Id == vendorId); var vendorAddress = _vendorAddressRepository.Queryable.First(a => a.Vendor == vendor && a.TypeCode == addressTypeCode); var added = true; var duplicate = false; var wasInactive = false; string errorMessage = null; // just make sure user has access to the workgroup Check.Require(_securityService.HasWorkgroupAccess(workgroup), Resources.NoAccess_Workgroup); var workgroupVendor = new WorkgroupVendor { Workgroup = workgroup, VendorId = vendor.Id, VendorAddressTypeCode = vendorAddress.TypeCode //, //Name = vendor.Name, //Line1 = vendorAddress.Line1, //Line2 = vendorAddress.Line2, //Line3 = vendorAddress.Line3, //City = vendorAddress.City, //State = vendorAddress.State, //Zip = vendorAddress.Zip, //CountryCode = vendorAddress.CountryCode }; var workgroupVendorToCreate = new WorkgroupVendor(); _workgroupService.TransferValues(workgroupVendor, ref workgroupVendorToCreate); //Central location for values that get transferred (Fax, state, etc.) workgroupVendorToCreate.Workgroup = workgroup; if (!_repositoryFactory.WorkgroupVendorRepository.Queryable .Any(a => a.Workgroup.Id == workgroupId && a.VendorId == workgroupVendorToCreate.VendorId && a.VendorAddressTypeCode == workgroupVendorToCreate.VendorAddressTypeCode)) { //doesn't find any var tempModelState = new ModelStateDictionary(); workgroupVendorToCreate.TransferValidationMessagesTo(tempModelState); if (!tempModelState.IsValid) { if (tempModelState.ContainsKey("WorkgroupVendor.Email")) { workgroupVendorToCreate.Email = null; errorMessage = "Warning, Email removed. KFS Vendor's Email was invalid"; } } try { _repositoryFactory.WorkgroupVendorRepository.EnsurePersistent(workgroupVendorToCreate); } catch (Exception) { errorMessage = "An Error occurred while trying to add that vendor to your workgroup."; } added = true; duplicate = false; wasInactive = false; } else { //found one var inactiveVendor = _repositoryFactory.WorkgroupVendorRepository.Queryable .FirstOrDefault(a => a.Workgroup.Id == workgroupId && a.VendorId == workgroupVendorToCreate.VendorId && a.VendorAddressTypeCode == workgroupVendorToCreate.VendorAddressTypeCode && !a.IsActive); if (inactiveVendor != null) { // we found one this is disabled, activate it and return it inactiveVendor.IsActive = true; _repositoryFactory.WorkgroupVendorRepository.EnsurePersistent(inactiveVendor); added = false; duplicate = false; wasInactive = true; return(new JsonNetResult(new { id = inactiveVendor.Id, name = inactiveVendor.Name, added, duplicate, wasInactive, errorMessage })); } // there was an active duplicate, return the first one. workgroupVendorToCreate = _repositoryFactory.WorkgroupVendorRepository.Queryable .First(a => a.Workgroup.Id == workgroupId && a.VendorId == workgroupVendorToCreate.VendorId && a.VendorAddressTypeCode == workgroupVendorToCreate.VendorAddressTypeCode && a.IsActive); added = false; duplicate = true; wasInactive = false; } return(new JsonNetResult(new { id = workgroupVendorToCreate.Id, name = workgroupVendorToCreate.Name, added, duplicate, wasInactive, errorMessage })); }
public ActionResult AddKfsVendor(int id, WorkgroupVendor workgroupVendor) { ViewBag.StepNumber = 9; var workgroup = _workgroupRepository.GetNullableById(id); if (workgroup == null) { Message = "Workgroup not found."; this.RedirectToAction <WorkgroupController>(a => a.Index(false)); } var workgroupVendorToCreate = new WorkgroupVendor(); _workgroupService.TransferValues(workgroupVendor, ref workgroupVendorToCreate); workgroupVendorToCreate.Workgroup = workgroup; ModelState.Clear(); //workgroupVendorToCreate.TransferValidationMessagesTo(ModelState); if (string.IsNullOrWhiteSpace(workgroupVendorToCreate.VendorId)) { ModelState.AddModelError("WorkgroupVendor.VendorId", "Please select a Kfs Vendor"); } if (string.IsNullOrWhiteSpace(workgroupVendorToCreate.VendorAddressTypeCode)) { ModelState.AddModelError("WorkgroupVendor.VendorAddressTypeCode", "Please select a Vendor Address"); } if (ModelState.IsValid) { workgroupVendorToCreate.TransferValidationMessagesTo(ModelState); if (ModelState.ContainsKey("WorkgroupVendor.Email")) { //Message = "Vendor Email is invalid"; workgroupVendorToCreate.Email = null; ModelState.Clear(); //workgroupVendorToCreate.TransferValidationMessagesTo(ModelState); Note: Not checking this again so it *WILL* throw an exception that can be investigated. } } if (ModelState.IsValid) { if (_workgroupVendorRepository.Queryable .Any(a => a.Workgroup.Id == id && a.VendorId == workgroupVendorToCreate.VendorId && a.VendorAddressTypeCode == workgroupVendorToCreate.VendorAddressTypeCode && a.IsActive)) { Message = "KFS vendor has already been added"; return(this.RedirectToAction(a => a.Vendors(id))); } var inactiveKfsVendor = _workgroupVendorRepository.Queryable .FirstOrDefault(a => a.Workgroup.Id == id && a.VendorId == workgroupVendorToCreate.VendorId && a.VendorAddressTypeCode == workgroupVendorToCreate.VendorAddressTypeCode && !a.IsActive); if (inactiveKfsVendor != null) { inactiveKfsVendor.IsActive = true; _workgroupVendorRepository.EnsurePersistent(inactiveKfsVendor); Message = "KFS vendor added back. It was previously deleted from this workgroup."; return(this.RedirectToAction(a => a.Vendors(id))); } _workgroupVendorRepository.EnsurePersistent(workgroupVendorToCreate); Message = "WorkgroupVendor Created Successfully"; return(this.RedirectToAction(a => a.Vendors(id))); } ErrorMessage = "Please correct errors before continuing, of skip this step."; WorkgroupVendorViewModel viewModel; viewModel = WorkgroupVendorViewModel.Create(_vendorRepository, workgroupVendorToCreate, newVendor: true); return(View(viewModel)); }