public bool Salvar(OutrasPenalidades outrasPenalidades)
        {
            if (outrasPenalidades.IsDigital == null)
            {
                Validacao.Add(Mensagem.OutrasPenalidadesMsg.DigitalOuBlocoObrigatorio);
            }
            else
            {
                if (outrasPenalidades.IsDigital == false)
                {
                    if (String.IsNullOrWhiteSpace(outrasPenalidades.NumeroIUF))
                    {
                        Validacao.Add(Mensagem.OutrasPenalidadesMsg.NumeroIUFObrigatorio);
                    }

                    if (outrasPenalidades.SerieId == null || outrasPenalidades.SerieId == 0)
                    {
                        Validacao.Add(Mensagem.OutrasPenalidadesMsg.SerieObrigatorio);
                    }

                    ValidacoesGenericasBus.DataMensagem(outrasPenalidades.DataLavratura, "OutrasPenalidades_DataLavratura", "lavratura do IUF");
                }

                if (String.IsNullOrWhiteSpace(outrasPenalidades.Descricao))
                {
                    Validacao.Add(Mensagem.OutrasPenalidadesMsg.DescricaoObrigatorio);
                }
            }

            return(Validacao.EhValido);
        }
        public OutrasPenalidades Criar(OutrasPenalidades outrasPenalidades, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"
                                    insert into {0}tab_fisc_outras_penalidades (id,
                                                                               fiscalizacao,
                                                                               iuf_digital,
                                                                               iuf_numero,
                                                                               iuf_data,
                                                                               serie,
                                                                               descricao,
                                                                               arquivo,
                                                                               tid)
                                    values ({0}seq_fisc_outras_penalidades.nextval,
                                            :fiscalizacao,
                                            :iuf_digital,
                                            :iuf_numero,
                                            :iuf_data,
                                            :serie,
                                            :descricao,
                                            :arquivo,
                                            :tid)
                                    returning id into :id", EsquemaBanco);

                comando.AdicionarParametroEntrada("fiscalizacao", outrasPenalidades.FiscalizacaoId, DbType.Int32);
                comando.AdicionarParametroEntrada("iuf_digital", outrasPenalidades.IsDigital, DbType.Boolean);
                comando.AdicionarParametroEntrada("iuf_numero", outrasPenalidades.NumeroIUF, DbType.String);
                comando.AdicionarParametroEntrada("iuf_data", outrasPenalidades.DataLavratura.Data, DbType.DateTime);
                comando.AdicionarParametroEntrada("serie", outrasPenalidades.SerieId, DbType.Int32);
                comando.AdicionarParametroEntrada("descricao", outrasPenalidades.Descricao, DbType.String);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                comando.AdicionarParametroSaida("id", DbType.Int32);

                if (outrasPenalidades.Arquivo == null)
                {
                    comando.AdicionarParametroEntrada("arquivo", DBNull.Value, DbType.Int32);
                }
                else
                {
                    comando.AdicionarParametroEntrada("arquivo", outrasPenalidades.Arquivo.Id, DbType.Int32);
                }

                bancoDeDados.ExecutarNonQuery(comando);

                outrasPenalidades.Id = Convert.ToInt32(comando.ObterValorParametro("id"));

                Historico.Gerar(outrasPenalidades.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, eHistoricoAcao.atualizar, bancoDeDados);

                Consulta.Gerar(outrasPenalidades.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, bancoDeDados);

                bancoDeDados.Commit();
            }
            return(outrasPenalidades);
        }
        public bool Salvar(OutrasPenalidades entidade)
        {
            try
            {
                if (_validar.Salvar(entidade))
                {
                    if (entidade.Id < 1)
                    {
                        entidade.Id = _da.ObterID(entidade.FiscalizacaoId);
                    }

                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                    {
                        bancoDeDados.IniciarTransacao();

                        #region Arquivo

                        if (entidade.Arquivo != null)
                        {
                            if (!string.IsNullOrWhiteSpace(entidade.Arquivo.Nome))
                            {
                                if (entidade.Arquivo.Id != null && entidade.Arquivo.Id == 0)
                                {
                                    ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno);
                                    entidade.Arquivo = _busArquivo.Copiar(entidade.Arquivo);
                                }

                                if (entidade.Arquivo.Id == 0)
                                {
                                    ArquivoDa _arquivoDa = new ArquivoDa();
                                    _arquivoDa.Salvar(entidade.Arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);
                                }
                            }
                            else
                            {
                                entidade.Arquivo.Id = null;
                            }
                        }

                        #endregion

                        _da.Salvar(entidade, bancoDeDados);

                        bancoDeDados.Commit();
                    }
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }

            return(Validacao.EhValido);
        }
        public OutrasPenalidades Obter(int fiscalizacaoId, BancoDeDados banco = null)
        {
            OutrasPenalidades entidade = new OutrasPenalidades();

            try
            {
                entidade = _da.Obter(fiscalizacaoId, banco);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(entidade);
        }
        public OutrasPenalidades Editar(OutrasPenalidades outrasPenalidades, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"
                                    update {0}tab_fisc_outras_penalidades t
                                    set t.fiscalizacao = :fiscalizacao,
                                        t.iuf_digital = :iuf_digital,
                                        t.iuf_numero = :iuf_numero,
                                        t.iuf_data = :iuf_data,
                                        t.serie = :serie,
                                        t.descricao = :descricao,
                                        t.arquivo = :arquivo,
                                        t.tid = :tid
                                    where t.id = :id", EsquemaBanco);

                comando.AdicionarParametroEntrada("id", outrasPenalidades.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("fiscalizacao", outrasPenalidades.FiscalizacaoId, DbType.Int32);
                comando.AdicionarParametroEntrada("iuf_digital", outrasPenalidades.IsDigital, DbType.Boolean);
                comando.AdicionarParametroEntrada("iuf_numero", outrasPenalidades.NumeroIUF, DbType.String);
                comando.AdicionarParametroEntrada("iuf_data", outrasPenalidades.DataLavratura.Data, DbType.DateTime);
                comando.AdicionarParametroEntrada("serie", outrasPenalidades.SerieId, DbType.Int32);
                comando.AdicionarParametroEntrada("descricao", outrasPenalidades.Descricao, DbType.String);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                if (outrasPenalidades.Arquivo == null)
                {
                    comando.AdicionarParametroEntrada("arquivo", DBNull.Value, DbType.Int32);
                }
                else
                {
                    comando.AdicionarParametroEntrada("arquivo", outrasPenalidades.Arquivo.Id, DbType.Int32);
                }

                bancoDeDados.ExecutarNonQuery(comando);

                Historico.Gerar(outrasPenalidades.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, eHistoricoAcao.atualizar, bancoDeDados);

                Consulta.Gerar(outrasPenalidades.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, bancoDeDados);

                bancoDeDados.Commit();
            }
            return(outrasPenalidades);
        }
        public OutrasPenalidades Salvar(OutrasPenalidades outrasPenalidades, BancoDeDados banco = null)
        {
            if (outrasPenalidades == null)
            {
                throw new Exception("Outras penalidades é nulo.");
            }

            if (outrasPenalidades.Id <= 0)
            {
                outrasPenalidades = Criar(outrasPenalidades, banco);
            }
            else
            {
                outrasPenalidades = Editar(outrasPenalidades, banco);
            }

            return(outrasPenalidades);
        }
        public OutrasPenalidades Obter(int fiscalizacaoId, BancoDeDados banco = null)
        {
            OutrasPenalidades outrasPenalidades = new OutrasPenalidades();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"
                                    select tfop.id,
                                           f.situacao situacao_id,
                                           tfop.iuf_digital,
                                           tfop.iuf_numero,
                                           tfop.iuf_data,
                                           tfop.serie,
                                           lfs.texto serie_texto,
                                           tfop.descricao,
                                           tfop.arquivo,
                                           a.nome arquivo_nome
                                    from {0}tab_fisc_outras_penalidades tfop,
                                         {0}tab_fiscalizacao f,
                                         {0}lov_fiscalizacao_serie lfs,
                                         {0}tab_arquivo a
                                    where tfop.arquivo = a.id(+)
                                          and tfop.fiscalizacao = :fiscalizacao
                                          and (tfop.serie is null or tfop.serie = lfs.id)
                                          and f.id = tfop.fiscalizacao", EsquemaBanco);

                comando.AdicionarParametroEntrada("fiscalizacao", fiscalizacaoId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        outrasPenalidades = new OutrasPenalidades
                        {
                            Id                     = reader.GetValue <int>("id"),
                            IsDigital              = reader.GetValue <bool>("iuf_digital"),
                            NumeroIUF              = reader.GetValue <string>("iuf_numero"),
                            SerieId                = reader.GetValue <int>("serie"),
                            SerieTexto             = reader.GetValue <string>("serie_texto"),
                            Descricao              = reader.GetValue <string>("descricao"),
                            FiscalizacaoSituacaoId = reader.GetValue <int>("situacao_id")
                        };

                        outrasPenalidades.Arquivo = new Arquivo
                        {
                            Id   = reader.GetValue <int>("arquivo"),
                            Nome = reader.GetValue <string>("arquivo_nome")
                        };

                        if (outrasPenalidades.IsDigital == true && outrasPenalidades.FiscalizacaoSituacaoId == (int)eFiscalizacaoSituacao.EmAndamento)
                        {
                            outrasPenalidades.NumeroIUF          = null;
                            outrasPenalidades.DataLavratura.Data = DateTime.MinValue;
                        }
                        else
                        {
                            outrasPenalidades.DataLavratura.Data = reader.GetValue <DateTime>("iuf_data");
                        }
                    }
                    reader.Close();
                }
            }

            return(outrasPenalidades);
        }