public ActionResult DadosGerais(int id, int versao, string nome, string nif, int tipoFuncionario) { var criarNovoFuncionario = id == 0 && versao == 0; IEnumerable <TipoFuncionario> tipos = null; FuncionarioDto funcionario = null; MsgGravacao msg = null; var novo = true; using (var tran = _session.BeginTransaction()) { try { tipos = _session.QueryOver <TipoFuncionario>().List <TipoFuncionario>(); var tipo = tipos.FirstOrDefault(t => t.Id == tipoFuncionario); Contract.Assert(tipo != null, Msg.Tipo_funcionario_inexistente); if (!criarNovoFuncionario) { var comando = new ModificaDadosGeraisFuncionario(id, versao, nome, nif, tipo); msg = _processador.Trata(comando); } else { var comando = new CriaFuncionario(nome, nif, tipo); msg = _processador.Trata(comando); novo = !msg.GravadaComSucesso(); id = msg.Id; } tran.Commit(); } catch (Exception ex) { ModelState.AddModelError("total", ex.Message); } } return(View("Funcionario", new DadosFormularioFuncionario { Funcionario = !criarNovoFuncionario || !novo ? _session.Load <FuncionarioDto>(id) : CriaFuncionarioDtoVazio(tipos), Novo = criarNovoFuncionario && novo, TiposFuncionario = tipos })); }
private static bool Novo(FuncionarioDto funcionario) { return(funcionario != null && funcionario.Id == 0 && funcionario.Versao == 0); }