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

                return(ok);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #2
0
        /// <summary>
        ///1.Reserva a quantidade que tiver disponível para o vale ingresso
        ///2. Verifica se a quantidade reservada foi suficiente
        ///  2.1. Se for suficiente: finaliza e retorna a informação
        ///  2.2. Se não for suficiente: Vale tem quantidade limitada?
        ///      2.2.1. Sim: Não tem vir suficiente para a reserva
        ///     2.2.2. Não: Cria a quantidade de virs restante e reserva novamente
        /// </summary>
        /// <param name="bd"></param>
        public BindingList <EstruturaRetornoReservaValeIngresso> Reservar(CTLib.BD bd, int valeIngressoTipoID, int quantidadeReservar, int clienteID, int canalID, int lojaID, int usuarioID, string sessionID)
        {
            BD bdInserirVir = new BD();

            try
            {
                int quantidadeReservada = 0, quantidadeNaoReservada = 0;
                BindingList <EstruturaRetornoReservaValeIngresso> reserva = new BindingList <EstruturaRetornoReservaValeIngresso>();
                BindingList <EstruturaRetornoReservaValeIngresso> reservados;

                ValeIngressoTipo valeIngressoTipo = new ValeIngressoTipo();
                ValeIngresso     valeIngresso;
                valeIngressoTipo.Ler(valeIngressoTipoID);//Preenche as informações do tipo
                if (valeIngressoTipo.Control.ID == 0)
                {
                    throw new Exception("ValeIngresso inexistente");
                }

                if (string.IsNullOrEmpty(sessionID))
                {
                    reserva = this.Reservar(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID);
                }
                else
                {
                    reserva = this.ReservarInternet(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID, sessionID);
                }

                quantidadeReservada    = reserva.Count;
                quantidadeNaoReservada = quantidadeReservar - quantidadeReservada;

                //Verifica se a quantidade reservada foi suficiente.
                if (quantidadeReservada == quantidadeReservar)
                {
                    return(reserva);
                }
                else//Não conseguiu reservar tudo
                {
                    //O vale ingresso tem quantidade limitada?
                    if (valeIngressoTipo.QuantidadeLimitada.Valor)
                    {
                        return(reserva);
                    }
                    else
                    {//Se não tem quantidade limitada deve criar os vale ingressos restante
                        for (int i = 0; i < quantidadeNaoReservada; i++)
                        {
                            //preenche o objeto
                            valeIngresso = new ValeIngresso();
                            valeIngresso.ValeIngressoTipoID.Valor = valeIngressoTipoID;
                            valeIngresso.DataCriacao.Valor        = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
                            valeIngresso.Status.Valor             = ((char)ValeIngresso.enumStatus.Disponivel).ToString();
                            valeIngresso.UsuarioID.Valor          = usuarioID;

                            if (valeIngressoTipo.CodigoTrocaFixo.Valor.Length > 0)
                            {
                                //Codigo fixo. Todos devem ter todos os códigos
                                valeIngresso.CodigoTroca.Valor = valeIngressoTipo.CodigoTrocaFixo.Valor;
                            }
                            else
                            {
                                valeIngresso.CodigoTroca.Valor = string.Empty;
                            }

                            //Se der algum erro joga exception. e desfaz a transação de reserva.
                            valeIngresso.Inserir(bdInserirVir);
                        }
                        //Após Inserir tenta reservar os vales restantes
                        if (string.IsNullOrEmpty(sessionID))
                        {
                            reservados = this.Reservar(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID);
                        }
                        else
                        {
                            reservados = this.ReservarInternet(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID, sessionID);
                        }

                        foreach (EstruturaRetornoReservaValeIngresso item in reservados)
                        {
                            reserva.Add(item);
                        }
                    }
                }

                return(reserva);
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #3
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();
            }
        }