public ActionResult AddNewVendor(int id, WorkgroupVendor workgroupVendor, bool skipAddress)
        {
            ViewBag.StepNumber = 9;
            var workgroup = _workgroupRepository.GetNullableById(id);

            if (workgroup == null)
            {
                Message = "Workgroup not found.";
                this.RedirectToAction <WorkgroupController>(a => a.Index(false));
            }

            if (skipAddress)
            {
                workgroupVendor.Line1       = "N/A";
                workgroupVendor.City        = "N/A";
                workgroupVendor.State       = "CA";
                workgroupVendor.Zip         = "95616";
                workgroupVendor.CountryCode = "US";
            }

            var workgroupVendorToCreate = new WorkgroupVendor();

            _workgroupService.TransferValues(workgroupVendor, ref workgroupVendorToCreate);

            workgroupVendorToCreate.Workgroup = workgroup;

            ModelState.Clear();
            workgroupVendorToCreate.TransferValidationMessagesTo(ModelState);

            if (ModelState.IsValid)
            {
                _workgroupVendorRepository.EnsurePersistent(workgroupVendorToCreate);

                Message = "WorkgroupVendor Created Successfully";

                return(this.RedirectToAction(a => a.Vendors(id)));
            }

            WorkgroupVendorViewModel viewModel;


            //var vendor = _vendorRepository.GetNullableById(workgroupVendor.VendorId);
            //var vendorAddress = _vendorAddressRepository.Queryable.FirstOrDefault(a => a.Vendor == vendor && a.TypeCode == workgroupVendor.VendorAddressTypeCode);
            viewModel = WorkgroupVendorViewModel.Create(_vendorRepository, workgroupVendorToCreate, null, null, true);



            return(View(viewModel));
        }
        public ActionResult AddNewVendor(int id)
        {
            ViewBag.StepNumber = 9;
            var workgroup = _workgroupRepository.GetNullableById(id);

            if (workgroup == null)
            {
                Message = "Workgroup not found.";
                this.RedirectToAction <WorkgroupController>(a => a.Index(false));
            }
            if (workgroup.Administrative)
            {
                return(this.RedirectToAction <WorkgroupController>(a => a.Index(false)));
            }
            var viewModel = WorkgroupVendorViewModel.Create(_vendorRepository, new WorkgroupVendor {
                Workgroup = workgroup
            });

            return(View(viewModel));
        }
        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));
        }