public ActionResult Create(FuncionarioVM model)
        {
            if (string.IsNullOrEmpty(model.Cidade.nome))
            {
                ModelState.AddModelError("Cidade.nome", "Selecione uma cidade");
            }
            if (model.flMensalista == "Não" && (model.comissao == null || model.comissao == 0))
            {
                ModelState.AddModelError("comissao", "Informe a comissão");
            }
            if (ModelState.IsValid)
            {
                try
                {
                    LogBLL.Insert(new LogDado("Create", "Funcionario", _idUsuario));
                    using (var db = new Context())
                    {
                        using (var trans = new RP.DataAccess.RPTransactionScope(db))
                        {
                            var _funcionario = model.GetFuncionario();

                            var _bll = new BLL.FuncionarioBLL(db, _idUsuario);

                            _bll.Insert(_funcionario);
                            _bll.SaveChanges();

                            trans.Complete();

                            this.AddFlashMessage(RP.Util.Resource.Message.INSERT_SUCCESS, FlashMessage.SUCCESS);
                            return RedirectToAction("Index");
                        }
                    }
                }
                catch (Exception ex)
                {
                    this.AddFlashMessage(RP.Util.Exception.Message.Get(ex), FlashMessage.ERROR); RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                    return RedirectToAction("Index");
                }
            }
            return View(model);
        }
        public static FuncionarioVM GetFuncionario(Sistema.Model.Entities.Funcionario model)
        {
            var _result = new FuncionarioVM
            {
                nome = model.nome,
                idFuncionario = model.idFuncionario,
                tipo = model.tipo,
                rg = model.rg,
                nrCargaHoraria = model.nrCargaHoraria,
                cpf = model.cpf,
                email = model.email,
                observacao = model.observacao,
                numero = model.numero,
                bairro = model.bairro,
                cep = model.cep,
                logradouro = model.logradouro,
                fone = model.fone,
                celular = model.celular,
                dtNascimento = model.dtNascimento,
                salario = model.salario,
                dtEntrada = model.dtEntrada,
                comissao = model.comissao,
                status = model.status,
                ctps = model.ctps,
                motivoSaida = model.motivoSaida,
                Cidade = Models.Cidade.Consultar.GetModel(model.Cidade),
                Usuario = Models.Usuario.Consultar.GetModel(model.Usuario),
                flMensalista = model.flMensalista
            };

            return _result;
        }
        public ActionResult Delete(FuncionarioVM model)
        {
            if (string.IsNullOrEmpty(model.motivoSaida))
            {
                ModelState.AddModelError("motivoSaida", "Informe o motivo");
            }
            if (ModelState.IsValid)
            {
                try
                {
                    LogBLL.Insert(new LogDado("Delete", "Funcionario", _idUsuario));
                    using (var db = new Context())
                    {
                        using (var trans = new RP.DataAccess.RPTransactionScope(db))
                        {
                            var _funcionario = model.GetFuncionario();

                            var _bll = new BLL.FuncionarioBLL(db, _idUsuario);

                            _bll.Desativar(_funcionario);
                            _bll.SaveChanges();

                            trans.Complete();

                            this.AddFlashMessage(RP.Util.Resource.Message.EDIT_SUCCESS, FlashMessage.SUCCESS);
                            return RedirectToAction("Index");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                    return RedirectToAction("Index", "Erro", new { area = string.Empty });
                }
            }
            return View(model);
        }