public ActionResult New(CharityContainerViewModel vm)
        {
            vm.Charity.CharityId = LoggedInUser.CharityId;

            if (string.IsNullOrWhiteSpace(vm.Charity.Password))
            {
                ModelState.AddModelError("Charity.Password", "You must select a password");
            }

            if (ModelState.IsValid)
            {
                var encryptor = new Encryptor();
                vm.Charity.Password = encryptor.Encrypt(vm.Charity.Password);
                var result = _charityUpdater.Update(vm.Charity, vm.SelectedSkills, vm.SelectedAreas);

                switch (result)
                {
                    case UpdateResult.Successful:
                        return RedirectTo.Search.BoardMembers();
                    case UpdateResult.ItemAlreadyExists:
                        ModelState.AddModelError("OrganizationName", "An organization with that name already exists.");
                        break;
                }
            }

            vm.SelectedSkills = Enum.GetValues(typeof(Skill)).OfType<Skill>().ToList();
            vm.SelectedAreas = Enum.GetValues(typeof(ServiceArea)).OfType<ServiceArea>().ToList();
            vm.CurrentAreas = new List<ServiceAreaEntity>();
            vm.CurrentSkills = new List<SkillEntity>();

            return View(vm);
        }
        public ActionResult New()
        {
            var vm = new CharityContainerViewModel()
            {
                Charity = new Charity() ,
                SelectedSkills = Enum.GetValues(typeof(Skill)).OfType<Skill>().ToList(),
                SelectedAreas = Enum.GetValues(typeof(ServiceArea)).OfType<ServiceArea>().ToList(),
                CurrentAreas = new List<ServiceAreaEntity>(),
                CurrentSkills = new List<SkillEntity>()
            };

            return View(vm);
        }
        public ActionResult Edit()
        {
            var charity = _charityProvider.GetCharityFor(LoggedInUser.CharityId);
            RemoveDefaultValues(charity);

            var vm = new CharityContainerViewModel
            {
                Charity = charity,
                SelectedSkills = Enum.GetValues(typeof(Skill)).OfType<Skill>().ToList(),
                SelectedAreas = Enum.GetValues(typeof(ServiceArea)).OfType<ServiceArea>().ToList()
            };

            vm.CurrentSkills = _skillRepository.GetSkillsFor(LoggedInUser.CharityId).ToList();
            vm.CurrentAreas = _serviceAreaRepository.GetServiceAreasFor(LoggedInUser.CharityId).ToList();
            return View(vm);
        }
        public ActionResult Edit(CharityContainerViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var charity = vm.Charity;
                charity.CharityId = LoggedInUser.CharityId;

                var encryptor = new Encryptor();
                charity.Password = encryptor.Encrypt(charity.Password);
                var result = _charityUpdater.Update(charity, vm.SelectedSkills, vm.SelectedAreas);

                switch (result)
                {
                    case UpdateResult.Successful:
                        return RedirectTo.Search.BoardMembers();
                    case UpdateResult.ItemAlreadyExists:
                        ModelState.AddModelError("OrganizationName", "An organization with that name already exists.");
                        break;
                }
            }

            return View(vm);
        }