public ActionResult Cadastrar(EmpresaViewModel empresa)
        {
            if (StringFormatUtil.SemFormatacao(empresa.CNPJ).Length < 14)
            {
                ModelState.AddModelError("empresa.Invalida", "CNPJ inválido!");
            }
            if (ModelState.IsValid)
            {
                var novaEmpresa = new Empresa
                {
                    NomeFantasia = empresa.NomeFantasia,
                    CNPJ         = StringFormatUtil.SemFormatacao(empresa.CNPJ),
                    UF           = empresa.UF.GetDescription(),
                };

                using (var contexto = new ApplicationContext())
                {
                    contexto.Empresas.Add(novaEmpresa);
                    contexto.SaveChanges();
                }


                TempData["success"] = "Empresa cadastrada com sucesso!";

                return(RedirectToAction("Index", "Home"));
            }

            TempData["warning"] = "Não foi possível cadastrar a empresa!";
            return(View(empresa));
        }
        public ActionResult Cadastrar(FuncionarioViewModel funcionario, int Empresa, int recebeOpcao)
        {
            #region validações
            if (recebeOpcao == 1)
            {
                if (StringFormatUtil.SemFormatacao(funcionario.CpfCnpj).Length < 11)
                {
                    ModelState.AddModelError("funcionario.CpfInvalido", "CPF inválido!");
                }
                if (string.IsNullOrWhiteSpace(funcionario.Rg))
                {
                    ModelState.AddModelError("funcionario.Rg", "Para pessoa fisíca é necessário o RG");
                }
            }
            if (recebeOpcao == 2 && StringFormatUtil.SemFormatacao(funcionario.CpfCnpj).Length < 14)
            {
                ModelState.AddModelError("funcionario.CnpjInvalido", "CNPJ inválido!");
            }

            if (funcionario.DtNascimento.AddYears(18) > DateTime.Now)
            {
                using (var contexto = new ApplicationContext())
                {
                    var empresa = contexto.Empresas.SingleOrDefault(e => e.Id == Empresa);
                    if (empresa.UF.Equals("PR"))
                    {
                        ModelState.AddModelError("funcionario.Menor", "Para empresas do PR não é possível cadastrar um funcionário menor de idade!");
                    }
                }
            }
            #endregion

            if (ModelState.IsValid)
            {
                using (var contexto = new ApplicationContext())
                {
                    var novoFunc = new Funcionario
                    {
                        Nome         = funcionario.Nome,
                        CpfCnpj      = StringFormatUtil.SemFormatacao(funcionario.CpfCnpj),
                        DtCadastro   = DateTime.Now,
                        DtNascimento = funcionario.DtNascimento,
                        Telefone     = funcionario.Telefone,
                        Rg           = funcionario.Rg,
                        Empresa      = contexto.Empresas.SingleOrDefault(e => e.Id == Empresa)
                    };

                    contexto.Funcionarios.Add(novoFunc);
                    contexto.SaveChanges();
                }

                TempData["success"] = "Funcionário cadastrado com sucesso!";

                return(RedirectToAction("Index", "Home"));
            }

            TempData["warning"] = "Não foi possível cadastrar o funcionário!";
            using (var contexto = new ApplicationContext())
            {
                var empresas = contexto.Empresas.ToList();
                ViewBag.Empresa = new SelectList(
                    empresas,
                    "Id",
                    "NomeFantasia");

                return(View(funcionario));
            }
        }