public void Inserir(IProcessoDeMarca processoDeMarca)
        {
            ServerUtils.setCredencial(_Credencial);

            var mapeadorDeMarca = FabricaGenerica.GetInstancia().CrieObjeto<IMapeadorDeMarcas>();
            var mapeadorDeProcessoDeMarca = FabricaGenerica.GetInstancia().CrieObjeto<IMapeadorDeProcessoDeMarca>();

            try
            {
                ServerUtils.BeginTransaction();
                VerifiqueSeDespachoDesativaProcesso(processoDeMarca);
                mapeadorDeMarca.Inserir(processoDeMarca.Marca);
                mapeadorDeProcessoDeMarca.Inserir(processoDeMarca);
                ServerUtils.CommitTransaction();
            }
            catch
            {
                ServerUtils.RollbackTransaction();
                throw;
            }
            finally
            {
                ServerUtils.libereRecursos();
            }
        }
        public void Inserir(IProcessoDeMarca processoDeMarca)
        {
            var sql = new StringBuilder();
            IDBHelper DBHelper;
            DBHelper = ServerUtils.getDBHelper();

            processoDeMarca.IdProcessoDeMarca = GeradorDeID.getInstancia().getProximoID();

            sql.Append("INSERT INTO MP_PROCESSOMARCA (");
            sql.Append("IDPROCESSO, IDMARCA, PROCESSO,");
            sql.Append("DATADECADASTRO, DATADODEPOSITO,  DATACONCESSAO, PROCESSOEHTERCEIRO, IDDESPACHO,");
            sql.Append("TXTCOMPLDESPACHO, APOSTILA, ATIVO, IDPROCURADOR)");
            sql.Append("VALUES (");
            sql.Append(String.Concat(processoDeMarca.IdProcessoDeMarca.Value, ", "));
            sql.Append(String.Concat(processoDeMarca.Marca.IdMarca.Value, ", "));
            sql.Append(String.Concat(processoDeMarca.Processo, ", "));
            sql.Append(String.Concat(processoDeMarca.DataDoCadastro.ToString("yyyyMMdd"), ", "));
            sql.Append(processoDeMarca.DataDoDeposito.HasValue
                           ? String.Concat(processoDeMarca.DataDoDeposito.Value.ToString("yyyyMMdd"), ", ")
                           : "NULL, ");
            sql.Append(processoDeMarca.DataDeConcessao.HasValue
                           ? String.Concat(processoDeMarca.DataDeConcessao.Value.ToString("yyyyMMdd"), ", ")
                           : "NULL, ");
            sql.Append(processoDeMarca.ProcessoEhDeTerceiro ? "'1', " : "'0', ");

            sql.Append(processoDeMarca.Despacho != null
                           ? String.Concat(processoDeMarca.Despacho.IdDespacho, ", ")
                           : "NULL, ");
            sql.Append(!String.IsNullOrEmpty(processoDeMarca.TextoComplementarDoDespacho)
                          ? String.Concat("'",UtilidadesDePersistencia.FiltraApostrofe(processoDeMarca.TextoComplementarDoDespacho), "', ")
                          : "NULL, ");
            sql.Append(!String.IsNullOrEmpty(processoDeMarca.Apostila)
                         ? String.Concat("'", UtilidadesDePersistencia.FiltraApostrofe(processoDeMarca.Apostila), "', ")
                         : "NULL, ");

            sql.Append(processoDeMarca.Ativo ? "'1', " : "'0', ");

            sql.Append(String.Concat(processoDeMarca.Procurador != null ? processoDeMarca.Procurador.Pessoa.ID.Value.ToString() + ")" : "NULL)"));

            DBHelper.ExecuteNonQuery(sql.ToString());
        }
        public void Modificar(IProcessoDeMarca processoDeMarca)
        {
            var sql = new StringBuilder();
            IDBHelper DBHelper;

            DBHelper = ServerUtils.getDBHelper();

            sql.Append("UPDATE MP_PROCESSOMARCA ");
            sql.Append("SET IDMARCA = " + processoDeMarca.Marca.IdMarca + ", ");
            sql.Append(String.Concat("PROCESSO = ", processoDeMarca.Processo, ", "));
            sql.Append(processoDeMarca.DataDeConcessao.HasValue
                           ? String.Concat("DATACONCESSAO = ", processoDeMarca.DataDeConcessao.Value.ToString("yyyyMMdd"), ", ")
                           : "DATACONCESSAO = NULL, ");
            sql.Append(processoDeMarca.DataDoDeposito.HasValue
                           ? String.Concat("DATADODEPOSITO = ", processoDeMarca.DataDoDeposito.Value.ToString("yyyyMMdd"), ", ")
                           : "DATADODEPOSITO = NULL, ");

            sql.Append("PROCESSOEHTERCEIRO = " + (processoDeMarca.ProcessoEhDeTerceiro ? "1, " : "0, "));

            sql.Append(processoDeMarca.Despacho != null
                           ? String.Concat("IDDESPACHO = ", processoDeMarca.Despacho.IdDespacho, ", ")
                           : "IDDESPACHO = NULL, ");

            sql.Append(!String.IsNullOrEmpty(processoDeMarca.TextoComplementarDoDespacho)
                           ? String.Concat("TXTCOMPLDESPACHO = '", UtilidadesDePersistencia.FiltraApostrofe(processoDeMarca.TextoComplementarDoDespacho), "', ")
                           : "TXTCOMPLDESPACHO = NULL, ");
            sql.Append(!String.IsNullOrEmpty(processoDeMarca.Apostila)
                         ? String.Concat("APOSTILA = '", UtilidadesDePersistencia.FiltraApostrofe(processoDeMarca.Apostila), "', ")
                         : "APOSTILA = NULL, ");

            sql.Append(processoDeMarca.Ativo ? "ATIVO = '1', " : "ATIVO = '0', ");

            sql.Append(String.Concat("IDPROCURADOR = ", processoDeMarca.Procurador != null ? processoDeMarca.Procurador.Pessoa.ID.Value.ToString() : "NULL"));

            sql.Append(" WHERE IDPROCESSO = " + processoDeMarca.IdProcessoDeMarca);

            DBHelper.ExecuteNonQuery(sql.ToString());
        }
        public void Excluir(IProcessoDeMarca processoDeMarca)
        {
            ServerUtils.setCredencial(_Credencial);

            var mapeadorDeMarca = FabricaGenerica.GetInstancia().CrieObjeto<IMapeadorDeMarcas>();
            var mapeadorDeProcessoDeMarca = FabricaGenerica.GetInstancia().CrieObjeto<IMapeadorDeProcessoDeMarca>();

            try
            {
                ServerUtils.BeginTransaction();
                mapeadorDeProcessoDeMarca.Excluir(processoDeMarca.IdProcessoDeMarca.Value);
                mapeadorDeMarca.Excluir(processoDeMarca.Marca.IdMarca.Value);
                ServerUtils.CommitTransaction();
            }
            catch
            {
                ServerUtils.RollbackTransaction();
                throw;
            }
            finally
            {
                ServerUtils.libereRecursos();
            }
        }
        private void VerifiqueSeDespachoDesativaProcesso(IProcessoDeMarca processo)
        {
            if (processo.Despacho == null) return;

            if (processo.Despacho.DesativaProcesso)
                processo.Ativo = false;
        }
        private void MostreProcessoDeMarca(IProcessoDeMarca processoDeMarca)
        {
            ViewState[CHAVE_ID_PROCESSO_DE_MARCA] = processoDeMarca.IdProcessoDeMarca;
            txtProcesso.Text = processoDeMarca.Processo.ToString();
            rblEstaAtivo.SelectedValue = processoDeMarca.Ativo ? "1" : "0";
            txtDataDeCadastro.SelectedDate = processoDeMarca.DataDoCadastro;
            txtDataDeDeposito.SelectedDate = processoDeMarca.DataDoDeposito;
            txtDataDeConcessao.SelectedDate = processoDeMarca.DataDeConcessao;
            txtDataDeVigencia.SelectedDate = processoDeMarca.DataDaVigencia;
            rblProcessoEhDeTerceiro.SelectedValue = processoDeMarca.ProcessoEhDeTerceiro ? "1" : "0";

            if (processoDeMarca.Despacho != null)
                MostreDespacho(processoDeMarca.Despacho);

            txtTextoComplementarDoDespacho.Text = processoDeMarca.TextoComplementarDoDespacho;

            if (processoDeMarca.Procurador != null)
            {
                ctrlProcurador.ProcuradorSelecionado = processoDeMarca.Procurador;
                ctrlProcurador.Nome = processoDeMarca.Procurador.Pessoa.Nome;
            }

            txtApostila.Text = processoDeMarca.Apostila;

            MostreMarcas(processoDeMarca.Marca);
        }
        private void AtualizeDespachoNoProcesso(string codigoDoDespacho, IProcessoDeMarca processoDeMarca)
        {
            if (string.IsNullOrEmpty(codigoDoDespacho)) return;

            IDespachoDeMarcas despacho;

            using (var servicoDespacho = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeDespachoDeMarcas>())
                despacho = servicoDespacho.ObtenhaDespachoPorCodigo(codigoDoDespacho);

            if (despacho != null)
                processoDeMarca.Despacho = despacho;
        }
        private PdfPTable ObtenhaTabelaDadosDoProcesso(IProcessoDeMarca processoDeMarca)
        {
            float[] larguraColunas = { 20, 20, 20, 20, 20, 20, 20 };
            var tabelaCliente = new PdfPTable(larguraColunas);
            tabelaCliente.DefaultCell.Border = Rectangle.NO_BORDER;

            var celulaProcesso = new PdfPCell(new Phrase(processoDeMarca.Processo.ToString(), _Fonte2));
            celulaProcesso.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaProcesso.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaProcesso.Border = 0;
            tabelaCliente.AddCell(celulaProcesso);

            var celulaMarca = new PdfPCell(new Phrase(processoDeMarca.Marca.DescricaoDaMarca, _Fonte2));
            celulaMarca.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaMarca.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaMarca.Border = 0;
            tabelaCliente.AddCell(celulaMarca);

            var celulaClase = new PdfPCell(new Phrase(processoDeMarca.Marca.NCL.Codigo, _Fonte2));
            celulaClase.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaClase.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaClase.Border = 0;
            tabelaCliente.AddCell(celulaClase);

            var celulaDeposito = new PdfPCell(new Phrase(processoDeMarca.DataDoDeposito.HasValue ? processoDeMarca.DataDoDeposito.Value.ToString("dd/MM/yyyy") : "",  _Fonte2));
            celulaDeposito.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaDeposito.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaDeposito.Border = 0;
            tabelaCliente.AddCell(celulaDeposito);

            var celulaApresentacao = new PdfPCell(new Phrase(processoDeMarca.Marca.Apresentacao.Nome, _Fonte2));
            celulaApresentacao.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaApresentacao.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaApresentacao.Border = 0;
            tabelaCliente.AddCell(celulaApresentacao);

            var celulaNatureza = new PdfPCell(new Phrase(processoDeMarca.Marca.Natureza.Nome, _Fonte2));
            celulaNatureza.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaNatureza.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaNatureza.Border = 0;
            tabelaCliente.AddCell(celulaNatureza);

            var celulaCliente = new PdfPCell(new Phrase(ObtenhaReferenciaFormatada(processoDeMarca.Marca.Cliente.Pessoa.Nome), _Fonte2));
            celulaCliente.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaCliente.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaCliente.Border = 0;
            tabelaCliente.AddCell(celulaCliente);

            return tabelaCliente;
        }
        private PdfPTable ObtenhaTabelaDadosDaMarca(IProcessoDeMarca processoDeMarca, string nomeDoCliente)
        {
            float[] larguraColunas = { 30, 15, 25, 10, 10, 10 };
            var tabelaCliente = new PdfPTable(larguraColunas);
            tabelaCliente.DefaultCell.Border = Rectangle.NO_BORDER;

            var celulaCliente = new PdfPCell(new Phrase(nomeDoCliente, _Fonte1));
            celulaCliente.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaCliente.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaCliente.Border = 0;
            tabelaCliente.AddCell(celulaCliente);

            var celulaProcesso = new PdfPCell(new Phrase(processoDeMarca.Processo.ToString(), _Fonte1));
            celulaProcesso.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaProcesso.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaProcesso.Border = 0;
            tabelaCliente.AddCell(celulaProcesso);

            var celulaDescricaoDaMarca = new PdfPCell(new Phrase(ObtenhaReferenciaFormatada(processoDeMarca.Marca.DescricaoDaMarca), _Fonte1));
            celulaDescricaoDaMarca.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaDescricaoDaMarca.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaDescricaoDaMarca.Border = 0;
            tabelaCliente.AddCell(celulaDescricaoDaMarca);

            var celulaDeposito = new PdfPCell(new Phrase(processoDeMarca.DataDoDeposito.HasValue ? processoDeMarca.DataDoDeposito.Value.ToString("dd/MM/yyyy") : "", _Fonte1));
            celulaDeposito.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaDeposito.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaDeposito.Border = 0;
            tabelaCliente.AddCell(celulaDeposito);

            var celulaDataDoVencimento = new PdfPCell(new Phrase(processoDeMarca.Marca.Manutencao.DataDaProximaManutencao.HasValue ?
                                                          processoDeMarca.Marca.Manutencao.DataDaProximaManutencao.Value.ToString("dd/MM/yyyy") : "", _Fonte1));
            celulaDataDoVencimento.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaDataDoVencimento.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaDataDoVencimento.Border = 0;
            tabelaCliente.AddCell(celulaDataDoVencimento);

            var celulaValor = new PdfPCell(new Phrase("R$ " + string.Format("{0:N2}", processoDeMarca.Marca.Manutencao.ObtenhaValorRealEmEspecie()), _Fonte1));
            celulaValor.HorizontalAlignment = Cell.ALIGN_CENTER;
            celulaValor.VerticalAlignment = Cell.ALIGN_CENTER;
            celulaValor.Border = 0;
            tabelaCliente.AddCell(celulaValor);

            return tabelaCliente;
        }