public ActionResult Create(string id, CustomField customField)
        {
            var org = string.IsNullOrWhiteSpace(id) ? null : _organizationRepository.GetNullableById(id);

            if (org == null)
            {
                Message = "Organization not found for custom field.";
                return(this.RedirectToAction <OrganizationController>(a => a.Index()));
            }

            var message = string.Empty;

            if (!_securityService.HasWorkgroupOrOrganizationAccess(null, org, out message))
            {
                Message = message;
                return(this.RedirectToAction <ErrorController>(a => a.NotAuthorized()));
            }

            var customFieldToCreate = new CustomField();

            customFieldToCreate.Organization = org;

            TransferValues(customField, customFieldToCreate);

            ModelState.Clear();
            customFieldToCreate.TransferValidationMessagesTo(ModelState);

            if (ModelState.IsValid)
            {
                _customFieldRepository.EnsurePersistent(customFieldToCreate);

                Message = "CustomField Created Successfully";

                //return RedirectToAction("Index", new {id=id});
                return(this.RedirectToAction(a => a.Index(id)));
            }
            else
            {
                var viewModel = CustomFieldViewModel.Create(Repository, org);
                viewModel.CustomField = customField;

                return(View(viewModel));
            }
        }
        public ActionResult Edit(int id, CustomField customField)
        {
            var customFieldToArchive = _customFieldRepository.GetNullableById(id);

            if (customFieldToArchive == null)
            {
                ErrorMessage = "Custom Field not found.";
                return(this.RedirectToAction <ErrorController>(a => a.Index()));
            }

            var message = string.Empty;

            if (!_securityService.HasWorkgroupOrOrganizationAccess(null, customFieldToArchive.Organization, out message))
            {
                Message = message;
                return(this.RedirectToAction <ErrorController>(a => a.NotAuthorized()));
            }

            var customFieldToEdit = new CustomField();

            customFieldToEdit.Organization = customFieldToArchive.Organization;

            TransferValues(customField, customFieldToEdit);

            ModelState.Clear();
            customFieldToEdit.TransferValidationMessagesTo(ModelState);

            if (ModelState.IsValid)
            {
                customFieldToArchive.IsActive = false;
                _customFieldRepository.EnsurePersistent(customFieldToArchive);
                _customFieldRepository.EnsurePersistent(customFieldToEdit);

                Message = "CustomField Edited Successfully";
                return(this.RedirectToAction(a => a.Index(customFieldToEdit.Organization.Id)));
            }
            else
            {
                var viewModel = CustomFieldViewModel.Create(Repository, customFieldToEdit.Organization, customFieldToEdit);

                return(View(viewModel));
            }
        }
        /// <summary>
        /// GET: /CustomField/Create
        /// </summary>
        /// <param name="id">Organization Id</param>
        /// <returns></returns>
        public ActionResult Create(string id)
        {
            var org = string.IsNullOrWhiteSpace(id) ? null : _organizationRepository.GetNullableById(id);

            if (org == null)
            {
                Message = "Organization not found for custom field.";
                return(this.RedirectToAction <OrganizationController>(a => a.Index()));
            }

            var message = string.Empty;

            if (!_securityService.HasWorkgroupOrOrganizationAccess(null, org, out message))
            {
                Message = message;
                return(this.RedirectToAction <ErrorController>(a => a.NotAuthorized()));
            }

            var viewModel = CustomFieldViewModel.Create(Repository, org);

            return(View(viewModel));
        }
        /// <summary>
        /// GET: /CustomField/Edit/5
        /// </summary>
        /// <param name="id">Custom Field Id</param>
        /// <returns></returns>
        public ActionResult Edit(int id)
        {
            var customField = _customFieldRepository.GetNullableById(id);

            if (customField == null)
            {
                ErrorMessage = "Custom Field not found.";
                return(this.RedirectToAction <ErrorController>(a => a.Index()));
            }

            var message = string.Empty;

            if (!_securityService.HasWorkgroupOrOrganizationAccess(null, customField.Organization, out message))
            {
                Message = message;
                return(this.RedirectToAction <ErrorController>(a => a.NotAuthorized()));
            }

            var viewModel = CustomFieldViewModel.Create(Repository, customField.Organization, customField);

            return(View(viewModel));
        }