/// <summary>
        /// Inseri novo(a) CanalValeIngresso na lista
        /// </summary>
        /// <returns></returns>
        public override bool Inserir()
        {
            try
            {
                bool ok = canalValeIngresso.Inserir();
                if (ok)
                {
                    lista.Add(canalValeIngresso.Control.ID);
                    Indice = lista.Count - 1;
                }

                return(ok);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #2
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();
            }
        }