Ejemplo n.º 1
0
        /// <summary>
        /// Inserir um usuário num cargo. Caso o cargo informado seja Diretoria ou Gabinere
        /// e caso exista outro usuário neste cargo, remove o usuário e insere o novo,
        /// pois não permite mais de um usuário no mesmo cargo, na mesma UF, para diretor
        /// e chefe de gabinete.
        /// </summary>
        /// <param name="usuario">Usuário a assumir o cargo.</param>
        /// <param name="cargo">Cargo a ser assumido.</param>
        /// <param name="mover">Caso true, move o usuário mesmo nos cargos repetitíveis</param>
        public void Salvar(Usuario usuario, Cargo cargo, bool mover = false)
        {
            // Executa tudo numa transação para evitar operações feitas no banco pela metade.
            using (var transacao = _repositorio.session.BeginTransaction())
            {
                try
                {
                    // Verificar se o indivíduo está em algum cargo que pode repetir várias vezes, e,
                    // caso esteja, remove suas participações nesses outros cargos, pois ele está
                    // sendo movido.
                    var todosCargosSaoRepetiveis = usuario.ListaUsuarioCargo.All(x => x.Cargo.UsuarioPodeRepetirNoCargo());

                    if (mover || (todosCargosSaoRepetiveis == false && cargo.UsuarioPodeRepetirNoCargo() == false))
                    {
                        foreach (var usuarioCargo in usuario.ListaUsuarioCargo)
                        {
                            _repositorio.session.Delete(usuarioCargo);
                        }
                    }

                    // Só remove o atual caso seja Diretor ou Chefe de gabinete.
                    if (cargo.TipoCargo == EnumTipoCargo.Diretoria || cargo.TipoCargo == EnumTipoCargo.Gabinete)
                    {
                        var posseAtual = ObterPorCargo(cargo);

                        if (posseAtual != null)
                        {
                            // Se já for o próprio usuário em posse do cargo, não faz nada.
                            if (posseAtual.Usuario.ID == usuario.ID)
                            {
                                return;
                            }

                            // Caso já exista alguém no cargo, remove e insere antes de inserir a nova pessoa.
                            _repositorio.session.Delete(posseAtual);

                            cargo.UsuariosCargos.Remove(posseAtual);
                        }
                    }

                    var novaPosse = new UsuarioCargo
                    {
                        Usuario = usuario,
                        Cargo   = cargo
                    };

                    _repositorio.session.SaveOrUpdate(novaPosse);
                    transacao.Commit();
                }
                catch (Exception ex)
                {
                    transacao.Rollback();
                    throw ex;
                }
                finally
                {
                    _repositorio.LimparSessao();
                }
            }
        }
Ejemplo n.º 2
0
        public void Salvar(Turma turma, LogResponsavel logResponsavel = null, LogConsultorEducacional logConsultorEducacional = null)
        {
            ValidarTurmaInformada(turma);

            repositorio.LimparSessao();

            // Incluir log de Responsavel.
            if (logResponsavel != null)
            {
                new BMLogResponsavel().Cadastrar(logResponsavel);
            }

            // Incluir log de Consultor Educacional.
            if (logConsultorEducacional != null)
            {
                new BMLogConsultorEducacional().Cadastrar(logConsultorEducacional);
            }

            repositorio.Salvar(turma);
        }
Ejemplo n.º 3
0
        public void Salvar(UsuarioTrilhaMensagemGuia usuarioTrilhaMensagemGuia)
        {
            _repositorio.LimparSessao();

            try
            {
                using (_repositorio.ObterTransacao())
                {
                    _repositorio.SalvarSemCommit(usuarioTrilhaMensagemGuia);

                    _repositorio.Commit();
                }
            }
            catch (Exception)
            {
                _repositorio.RollbackTransaction();
            }
        }
Ejemplo n.º 4
0
 public void LimparSessao()
 {
     repositorio.LimparSessao();
 }
Ejemplo n.º 5
0
 public void Excluir(QuestionarioAssociacao pQuestionarioAssociacao)
 {
     repositorio.LimparSessao();
     repositorio.Excluir(pQuestionarioAssociacao);
 }