protected void btnCadastro_Click(object sender, EventArgs e)
        {
            try
            {
                if(txtSenha.Text.Equals(txtConfirmSenha.Text))
                {
                    Funcionario f = new Funcionario();
                    f.Login = txtLogin.Text;
                    f.Senha = txtSenha.Text;
                    f.Nome = txtNome.Text;

                    FuncionarioDal d = new FuncionarioDal();
                    d.Insert(f);

                    lblMensagem.Text = "Funcionário " + f.Nome + ", cadastrado com sucesso.";

                    txtLogin.Text = string.Empty;
                    txtNome.Text = string.Empty;
                }
                else
                {
                    throw new Exception("As senhas não conferem, tente novamente.");
                }
                
            }
            catch (Exception ex)
            {

                lblMensagem.Text = ex.Message;
            }

        }
        public ActionResult CadastrarFuncionario(FuncionarioModelCadastro model)
        {
            try
            {
                if(ModelState.IsValid)
                {
                    Funcionario f = new Funcionario();
                    f.Nome = model.Nome;
                    f.Login = model.Login;
                    f.Senha = Criptografia.GetMD5Hash(model.Senha);
                    f.DataCadastro = DateTime.Now;
                    f.Foto = Guid.NewGuid().ToString() + ".jpg";

                    FuncionarioDal d = new FuncionarioDal();
                    d.Insert(f);

                    model.Foto.SaveAs(HttpContext.Server.MapPath("/Imagens/" + f.Foto));

                    ModelState.Clear();

                    ViewBag.Mensagem = "Funcionario " + f.Nome + ", cadastrado com sucesso.";
                }
            }
            catch (Exception e)
            {
                ViewBag.Mensagem = e.Message;
            }

            return View("Cadastro");
        }
        public ActionResult AutenticarFuncionario(FuncionarioModelLogin model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    FuncionarioDal d = new FuncionarioDal();
                    Funcionario f = d.Authenticate(model.Login, Criptografia.GetMD5Hash(model.Senha));

                    if(f != null)
                    {
                        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(f.Login, model.ManterConectado, 5);
                        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
                        Response.Cookies.Add(cookie);

                        Session.Add("funcionariologado", f);

                        return RedirectToAction("Index", "Default", new {area = "Admin"});
                    }
                    else
                    {
                        ViewBag.Mensagem = "Acesso Negado.";
                    }
                }
            }
            catch (Exception e)
            {
                ViewBag.Mensagem = e.Message;
            }
            return View("Login");
        }
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                FuncionarioDal d = new FuncionarioDal();

                Funcionario f = d.Authenticate(txtLogin.Text, txtSenha.Text);

                if(f != null)
                {
                    FormsAuthentication.SetAuthCookie(f.Login, checkLogin.Checked);
                    Session.Add("Funcionario", f);
                    Response.Redirect("/Admin/Default.aspx");
                }
                else
                {
                    throw new Exception("Acesso Negado, Tente novamente.");
                }
            }
            catch (Exception ex)
            {

                lblMensagem.Text = ex.Message;
            }
        }
 public override bool IsValid(object value)
 {
     try
     {
         string Login = (string)value;
         FuncionarioDal d = new FuncionarioDal();
         return !d.HasLogin(Login);
     }
     catch 
     {
         return false;
     }
 }