Пример #1
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(); }
        }