/// <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(); } }