public ActionResult Login()
        {
            var vm = new LoginViewModel();

            if (LoggedInUser != null)
            {
                if (LoggedInUser.Type == UserAuthenticationType.Board)
                {
                    var boardMember = _boardMemberRepository.GetBoardMember(LoggedInUser.BoardMemberId.Value);

                    if (boardMember == null)
                        return RedirectTo.BoardMember.New();

                    return RedirectTo.Search.NonProfits();
                    
                }
                else
                {
                    var loggedInCharity = _charityRepository.GetSpecificCharity(x => x.CharityId == LoggedInUser.CharityId);

                    if (loggedInCharity == null)
                        return RedirectTo.NonProfit.New();

                    return RedirectTo.Search.BoardMembers();
                }
            }

            return View(vm);
        }
        public ActionResult Login(LoginViewModel vm)
        {
            var encryptor = new Encryptor();
            if (!String.IsNullOrEmpty(vm.BoardPassword))
                vm.BoardPassword = encryptor.Encrypt(vm.BoardPassword);
            if (!String.IsNullOrWhiteSpace(vm.CharityPassword))
                vm.CharityPassword = encryptor.Encrypt(vm.CharityPassword);

            if (ModelState.IsValid)
            {
                ActionResult result = null;
                string ticket = null;

                if (vm.Type == "board")
                {
                    var boardMemberId = _boardMemberRepository.ValidateLogin(vm.BoardEmail, vm.BoardPassword);

                    if (!boardMemberId.HasValue)
                    {
                        ModelState.AddModelError("BoardPassword", "Invalid login.");
                        return View(vm);
                    }

                    ticket = _formsAuth.SignIn(vm.BoardEmail, UserAuthenticationType.Board, string.Empty, boardMemberId);

                    var boardMember = _boardMemberRepository.GetBoardMember(boardMemberId.Value);

                    if (boardMemberId == null)
                    {
                        result = RedirectTo.BoardMember.New();
                    }
                    else
                    {
                        result = RedirectTo.Search.NonProfits();
                    }
                }
                else
                {
                    var charityId = _charityRepository.ValidateLogin(vm.CharityUsername, vm.CharityPassword);

                    if (string.IsNullOrWhiteSpace(charityId))
                    {
                        ModelState.AddModelError("CharityPassword", "Invalid login.");
                        return View(vm);
                    }

                    if (vm.CharityUsername == "61903")
                        ticket = _formsAuth.SignIn(vm.CharityUsername, UserAuthenticationType.UberMegaSuperUltraUser, charityId, null);
                    else
                        ticket = _formsAuth.SignIn(vm.CharityUsername, UserAuthenticationType.Charity, charityId, null);

                    var charity = _charityRepository.GetSpecificCharity(x => x.CharityId == charityId);

                    if (charity == null)
                        result = RedirectTo.NonProfit.New();
                    else
                    {
                        result = RedirectTo.Search.BoardMembers();
                    }
                }

                var cookie = new HttpCookie(FormsAuthFacade.COOKIE_NAME, ticket);
                cookie.Expires = DateTime.Now.AddDays(30);
                Response.Cookies.Add(cookie);
                return result;
            }

            return View(vm);
        }