示例#1
0
        public bool SalvarValeIngresso(EstruturaValeIngressoWizard dadosSalvar)
        {
            ValeIngresso      valeIngresso;
            CanalValeIngresso canalValeIngresso;
            bool novoVirTipo = false;
            BD   bdDelete    = new BD();

            try
            {
                //td deve estar dentro de transaction
                bd.IniciarTransacao();
                bdDelete.IniciarTransacao();
                novoVirTipo = dadosSalvar.ValeIngressoTipo.ID == 0;

                //TODO: Fazer a validação dos dados. Inclusive usuarioID


                //Popula o objeto para salvar no banco
                this.Nome.Valor  = dadosSalvar.ValeIngressoTipo.Nome;
                this.Valor.Valor = dadosSalvar.ValeIngressoTipo.Valor;
                this.ValidadeDiasImpressao.Valor = dadosSalvar.ValeIngressoTipo.ValidadeDiasImpressao;
                if (this.ValidadeDiasImpressao.Valor == 0)
                {
                    this.ValidadeData.Valor = dadosSalvar.ValeIngressoTipo.ValidadeData;
                }
                this.CodigoTrocaFixo.Valor    = dadosSalvar.ValeIngressoTipo.CodigoTrocaFixo;
                this.ClienteTipo.Valor        = ((char)dadosSalvar.ValeIngressoTipo.ClienteTipo).ToString();
                this.ProcedimentoTroca.Valor  = dadosSalvar.ValeIngressoTipo.ProcedimentoTroca;
                this.SaudacaoPadrao.Valor     = dadosSalvar.ValeIngressoTipo.SaudacaoPadrao;
                this.SaudacaoNominal.Valor    = dadosSalvar.ValeIngressoTipo.SaudacaoNominal;
                this.QuantidadeLimitada.Valor = dadosSalvar.ValeIngressoTipo.QuantidadeLimitada;
                this.EmpresaID.Valor          = dadosSalvar.ValeIngressoTipo.EmpresaID;
                this.Acumulativo.Valor        = dadosSalvar.ValeIngressoTipo.Acumulativo;
                this.PublicarInternet.Valor   = dadosSalvar.ValeIngressoTipo.PublicarInternet;
                this.ReleaseInternet.Valor    = dadosSalvar.ValeIngressoTipo.ReleaseInternet;
                this.TrocaConveniencia.Valor  = dadosSalvar.ValeIngressoTipo.TrocaConveniencia;
                this.TrocaIngresso.Valor      = dadosSalvar.ValeIngressoTipo.TrocaIngresso;
                this.TrocaEntrega.Valor       = dadosSalvar.ValeIngressoTipo.TrocaEntrega;
                this.ValorTipo.Valor          = ((char)dadosSalvar.ValeIngressoTipo.ValorTipo).ToString();
                this.ValorPagamento.Valor     = dadosSalvar.ValeIngressoTipo.ValorPagamento;

                if (novoVirTipo)
                {//Inserir
                    this.Inserir(bd);
                    //Insere na tValeIngressoTipo
                }
                else
                {//Atualizar
                    this.Control.ID = dadosSalvar.ValeIngressoTipo.ID;
                    this.Atualizar(bd);
                }

                //Verifica a necessidade de inserir registros na tValeIngresso
                if (dadosSalvar.ValeIngressoTipo.QuantidadeLimitada)
                { //Inserir na tValeIngresso
                    for (int i = 0; i < dadosSalvar.AdicionarQuantidade; i++)
                    {
                        try
                        {
                            valeIngresso = new ValeIngresso();
                            valeIngresso.ValeIngressoTipoID.Valor = this.Control.ID;
                            valeIngresso.DataCriacao.Valor        = DateTime.Now;
                            valeIngresso.Status.Valor             = ((char)ValeIngresso.enumStatus.Disponivel).ToString();

                            if (dadosSalvar.ValeIngressoTipo.CodigoTrocaFixo != String.Empty)
                            {
                                //Codigo fixo. Todos devem ter todos os códigos
                                valeIngresso.CodigoTroca.Valor = dadosSalvar.ValeIngressoTipo.CodigoTrocaFixo;
                            }
                            else
                            {
                                valeIngresso.CodigoTroca.Valor = string.Empty;
                            }

                            valeIngresso.Inserir(bd);
                        }
                        catch
                        {
                            throw;
                        }
                    }
                }

                int canalInternet = Canal.CANAL_INTERNET;
                int canalCC       = Canal.CANAL_CALL_CENTER;
                //Atualiza os canais
                string sql = string.Empty;
                if (!novoVirTipo)
                {
                    //Verifica se deve remover ou inserir os canais ir (tirando call center e internet)
                    if (dadosSalvar.acaoCanaisIR == EnumAcaoCanais.Distribuir)
                    {
                        //Inserre todos os canais IR. Tirando Call Center e Internet
                        sql = "INSERT INTO tCanalValeIngresso (CanalID,ValeIngressoTipoID) " +
                              " SELECT c.ID, " + this.Control.ID + " FROM tCanal c (NOLOCK) " +
                              " LEFT JOIN tCanalValeIngresso vi (NOLOCK) ON vi.CanalID = c.ID AND vi.ValeIngressoTipoID =" + this.Control.ID +
                              " INNER JOIN tEmpresa e (NOLOCK) ON e.ID = c.EmpresaID " +
                              " WHERE (e.EmpresaVende = 'T' AND e.EmpresaPromove = 'F') AND vi.ID IS NULL AND c.ID NOT IN (" + canalInternet + "," + canalCC + ")";
                    }
                    else if (dadosSalvar.acaoCanaisIR == EnumAcaoCanais.Remover) // Remove somente os canais que não forem IR
                    {
                        sql = "DELETE cvir FROM tCanalValeIngresso AS cvir " +
                              "LEFT JOIN tCanal ON tCanal.ID = cvir.CanalID " +
                              "INNER JOIN tEmpresa ON tCanal.EmpresaID = tEmpresa.ID AND (tEmpresa.EmpresaVende = 'T' AND tEmpresa.EmpresaPromove = 'F') " +
                              "WHERE ValeIngressoTipoID = " + dadosSalvar.ValeIngressoTipo.ID + " AND tCanal.ID NOT IN (" + canalInternet + "," + canalCC + ")";
                    }
                    if (dadosSalvar.acaoCanaisIR != EnumAcaoCanais.Manter)
                    {
                        bd.Executar(sql);
                    }
                }
                //Distribui os canais próprios + Call Center e Internet
                foreach (EstruturaCanalValeIngresso canal in dadosSalvar.Canais)
                {
                    if (canal.acao == CanalValeIngresso.EnumAcaoCanal.Inserir)
                    {
                        canalValeIngresso = new CanalValeIngresso(usuarioIDLogado);
                        canalValeIngresso.CanalID.Valor            = canal.CanalID;
                        canalValeIngresso.ValeIngressoTipoID.Valor = this.Control.ID;
                        canalValeIngresso.Inserir(bd);
                    }
                    else if (canal.acao == CanalValeIngresso.EnumAcaoCanal.Remover)
                    {
                        canalValeIngresso                          = new CanalValeIngresso(usuarioIDLogado);
                        canalValeIngresso.Control.ID               = canal.CanalValeIngressoID;
                        canalValeIngresso.CanalID.Valor            = canal.CanalID;
                        canalValeIngresso.ValeIngressoTipoID.Valor = canal.ValeIngressoTipoID;
                        //Call Center e Internet
                        if (canal.CanalValeIngressoID == 0 && (canal.CanalID == canalInternet || canal.CanalID == canalCC))
                        {
                            canalValeIngresso.Excluir(canal.CanalID, canal.ValeIngressoTipoID, bd);
                        }
                        else
                        {
                            canalValeIngresso.Excluir(canalValeIngresso.Control.ID, bd);
                        }
                    }
                }

                bd.FinalizarTransacao();
                bdDelete.FinalizarTransacao();
                return(true);
            }
            catch (Exception)
            {
                bdDelete.DesfazerTransacao();
                bd.DesfazerTransacao();
                throw;
            }
            finally
            {
                bd.Fechar();
            }
        }
示例#2
0
        /// <summary>
        /// Popula o objeto utilizado na ValeIngressoWizard.
        /// Esse objeto possui todas as informações necessárias para editar nessa tela, incluindo distribuição de canais.
        /// </summary>
        /// <param name="valeIngressoTipoID"></param>
        /// <returns></returns>
        public EstruturaValeIngressoWizard Carregar(int valeIngressoTipoID)
        {
            try
            {
                EstruturaValeIngressoWizard retorno          = new EstruturaValeIngressoWizard();
                EstruturaValeIngressoTipo   valeIngressoTipo = new EstruturaValeIngressoTipo();

                //Carrega as Informações do ValeIngressoTipo. Já com a quantidade de virs disponiveis desse tipo
                string sql = @"SELECT virTipo.ID, virTipo.Nome, virTipo.Valor, ValidadeDiasImpressao, ValidadeData, ClienteTipo, ProcedimentoTroca, 
	                           SaudacaoPadrao, SaudacaoNominal, QuantidadeLimitada, EmpresaID, CodigoTrocaFixo, Acumulativo, ISNULL(COUNT(vir.ID),0) AS QuantidadeDisponivel, PublicarInternet,ReleaseInternet,
                               virTipo.TrocaEntrega,virTipo.TrocaIngresso,virTipo.TrocaConveniencia, virTipo.ValorTipo, virTipo.ValorPagamento
                               FROM tValeIngressoTipo virTipo (NOLOCK)
                               LEFT JOIN tValeIngresso vir (NOLOCK) ON virTipo.ID = vir.ValeIngressoTipoID AND Status = '" + (char)ValeIngresso.enumStatus.Disponivel + @"'
                               WHERE virTipo.ID = " + valeIngressoTipoID + @" 
                               GROUP BY virTipo.ID, virTipo.Nome, virTipo.Valor, ValidadeDiasImpressao, ValidadeData, ClienteTipo, ProcedimentoTroca, 
	                           SaudacaoPadrao, SaudacaoNominal, QuantidadeLimitada, EmpresaID, CodigoTrocaFixo, Acumulativo,PublicarInternet,ReleaseInternet,virTipo.TrocaEntrega,virTipo.TrocaIngresso,virTipo.TrocaConveniencia, virTipo.ValorTipo, virTipo.ValorPagamento"    ;

                bd.Consulta(sql);
                while (bd.Consulta().Read())
                {
                    valeIngressoTipo.ID    = bd.LerInt("ID");
                    valeIngressoTipo.Nome  = bd.LerString("Nome");
                    valeIngressoTipo.Valor = bd.LerDecimal("Valor");
                    valeIngressoTipo.ValidadeDiasImpressao    = bd.LerInt("ValidadeDiasImpressao");
                    valeIngressoTipo.ValidadeData             = bd.LerDateTime("ValidadeData");
                    valeIngressoTipo.ClienteTipo              = (ValeIngressoTipo.EnumClienteTipo)(Convert.ToChar(bd.LerString("ClienteTipo")));
                    valeIngressoTipo.ProcedimentoTroca        = bd.LerString("ProcedimentoTroca");
                    valeIngressoTipo.SaudacaoPadrao           = bd.LerString("SaudacaoPadrao");
                    valeIngressoTipo.SaudacaoNominal          = bd.LerString("SaudacaoNominal");
                    valeIngressoTipo.QuantidadeLimitada       = bd.LerBoolean("QuantidadeLimitada");
                    valeIngressoTipo.EmpresaID                = bd.LerInt("EmpresaID");
                    valeIngressoTipo.CodigoTrocaFixo          = bd.LerString("CodigoTrocaFixo");
                    valeIngressoTipo.Acumulativo              = bd.LerBoolean("Acumulativo");
                    valeIngressoTipo.QuantidadeDisponivelTipo = bd.LerInt("QuantidadeDisponivel");
                    valeIngressoTipo.PublicarInternet         = bd.LerBoolean("PublicarInternet");
                    valeIngressoTipo.ReleaseInternet          = bd.LerString("ReleaseInternet");
                    valeIngressoTipo.TrocaEntrega             = bd.LerBoolean("TrocaEntrega");
                    valeIngressoTipo.TrocaIngresso            = bd.LerBoolean("TrocaIngresso");
                    valeIngressoTipo.TrocaConveniencia        = bd.LerBoolean("TrocaConveniencia");
                    valeIngressoTipo.ValorTipo                = Convert.ToChar(bd.LerString("ValorTipo"));
                    valeIngressoTipo.ValorPagamento           = bd.LerDecimal("ValorPagamento");
                }
                //preenche o objeto de retorno
                retorno.ValeIngressoTipo = valeIngressoTipo;
                //Preenche esse objeto
                this.Control.ID = valeIngressoTipo.ID;

                //preenche os canais IR
                sql = @"SELECT CASE WHEN vi.ValeIngressoTipoID IS NOT NULL THEN 'T' ELSE 'F' END AS Distribuido,c.ID AS CanalID
                        FROM tCanal c (NOLOCK)
                        LEFT JOIN tCanalValeIngresso vi (NOLOCK) ON vi.CanalID = c.ID AND vi.ValeIngressoTipoID = " + valeIngressoTipoID + @"
                        INNER JOIN tEmpresa e (NOLOCK) ON e.ID = c.EmpresaID
                        WHERE (e.EmpresaVende = 'T' AND e.EmpresaPromove = 'F')";

                bd.Consulta(sql);
                int  canalID = 0;
                bool distribuido;
                int  canalInternet = Canal.CANAL_INTERNET;
                int  canalCC       = Canal.CANAL_CALL_CENTER;
                while (bd.Consulta().Read())
                {
                    //verifica se o call center e internet estão distribuidos
                    canalID     = bd.LerInt("CanalID");
                    distribuido = bd.LerBoolean("Distribuido");
                    //call center
                    if (canalID == canalInternet)
                    {
                        retorno.DistribuidoCanalInternet = distribuido;
                    }
                    //internet
                    else if (canalID == canalCC)
                    {
                        retorno.DistribuidoCanalCallCenter = distribuido;
                    }
                    //faz a contagem dos canais próprios
                    else
                    {
                        if (distribuido)
                        {
                            retorno.QtdeCanaisIRDistribuidos++;
                        }
                        else
                        {
                            retorno.QtdeCanaisIRNaoDistribuidos++;
                        }
                    }
                }
                //preencher os canais próprios
                retorno.Canais = this.CanaisDistribuidosLista(valeIngressoTipo.EmpresaID);

                //Busca a quantidade disponivel para o vale ingresso
                sql = "SELECT COUNT(ID) AS Quantidade FROM tValeIngresso (NOLOCK) WHERE Status = '" + (char)ValeIngresso.enumStatus.Disponivel + "' AND ValeIngressoTipoID = " + valeIngressoTipoID;
                retorno.QtdeValeIngressoDisponivel = Convert.ToInt32(bd.ConsultaValor(sql));

                return(retorno);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            { bd.Fechar(); }
        }