Exemplo n.º 1
0
        public ActionResult Incluir(AcessoModelView model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Transforma em visitante a modelView dos acessos
            Visitante visitante = VisitanteFactory.BuildModel(model);


            //Cria um controle de Acesso com base na modelView
            ControleDeAcesso acesso = ControleDeAcessoFactory.BuildModel(model);

            acesso.DataEntrada = DateTime.Now;

            //Adiciona o visitante no controle de acesso
            acesso.Visitante = visitante;

            //Grava quem fez o registro
            Usuario user = (Usuario)Session["usuario"];

            acesso.Usuario      = user;
            acesso.DataInclusao = DateTime.Now;

            //Verifica se o visitante já está na base antes de persisti-lo
            Visitante visita = visitanteDAO.GetByDocumento(visitante.Documento);

            if (visita == null)
            {
                visitante.Nome    = visitante.Nome.ToUpper();
                visitante.Empresa = visitante.Empresa.ToUpper();
                visitante.FotoId  = visitante.FotoBase64.GetHashMD5();
                //Persiste o Visitante
                visitanteDAO.Add(visitante);

                //Persiste o acesso
                acessoDAO.Add(acesso);

                return(RedirectToAction("Index"));
            }

            //verifica se o visitante não está bloqueado antes de persistir o acesso
            if (visita.Bloqueado)
            {
                ModelState.AddModelError("BLQ", "Visitante bloqueado!");
                return(View(model));
            }

            //Altera o visitante com a nova Foto
            visita.FotoBase64 = model.Foto;
            visita.FotoId     = model.Foto.GetHashMD5();


            visitanteDAO.Alter(visita);

            //Persiste o acesso
            acesso.Visitante = visita;
            acessoDAO.Add(acesso);

            return(RedirectToAction("Index"));
        }