Esempio n. 1
0
        public void ValidarLugarMarcadoInternet(EstruturaPrecoReservaSite preco, Setor.enumLugarMarcado tipoSetor,
                                                EstruturaCotasInfo cotaInfo, int serieID, EstruturaReservaInternet estruturaReserva)
        {
            int              cortesiaID                   = 0;
            Bilheteria       oBilheteria                  = new Bilheteria();
            CotaItem         oCotaItem                    = new CotaItem();
            CotaItemControle cotaItemControle             = new CotaItemControle();
            List <EstruturaCotaItemReserva> listaCotaItem = new List <EstruturaCotaItemReserva>();

            if (cotaInfo.CotaID_Apresentacao != 0 || cotaInfo.CotaID_ApresentacaoSetor != 0)
            {
                listaCotaItem = oCotaItem.getListaCotaItemReserva(cotaInfo.CotaID_Apresentacao, cotaInfo.CotaID_ApresentacaoSetor);
            }

            cotaInfo.ApresentacaoID      = this.ApresentacaoID.Valor;
            cotaInfo.ApresentacaoSetorID = this.ApresentacaoSetorID.Valor;

            oCotaItem.AtualizarInformacoesCota(listaCotaItem, preco, cotaInfo);

            if (listaCotaItem.Any() && cotaInfo.CotaItemID > 0)
            {
                cotaInfo.QuantidadeJaVendida = cotaItemControle.getQuantidadeNovo(cotaInfo.CotaItemID, cotaInfo.CotaItemID_APS, cotaInfo.ApresentacaoID, cotaInfo.ApresentacaoSetorID);
                var qtdReservar = preco.QuantidadeReservar();
                if (!cotaInfo.ValidaReserva(qtdReservar))
                {
                    throw new BilheteriaException(string.Format("Não será possível reservar o preço \"{0}\", o limite de venda foi excedido.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel);
                }
            }

            decimal precoValor = 0;

            // Verifica se existe quantidade do PrecoID disponivel para venda e retorna via referencia o valor do preço
            if (preco.Quantidade != oBilheteria.GetIngressosQPodeReservar(this.ClienteID.Valor, this.SessionID.Valor, preco.ID, preco.Quantidade, ref precoValor, false, serieID, estruturaReserva))
            {
                throw new BilheteriaException(string.Format("A quantidade disponivel para o preço \"{0}\" foi excedida.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel);
            }

            this.TxConv = oBilheteria.TaxaConveniencia(this.EventoID.Valor, preco.ID, estruturaReserva.CanalID);

            if (this.TxConv > 0)
            {
                this.TaxaProcessamentoValor = oBilheteria.ValorTaxaProcessamento(this.EventoID.Valor);
                if (this.TaxaProcessamentoValor > 0)
                {
                    this.TxConv = 0;
                }
            }
            //Aqui precisa fazer a validação, é cortesia??
            if (preco.Valor == 0 && TxConv == 0 && TaxaProcessamentoValor == 0)
            {
                cortesiaID = new Cortesia().CortesiaPadraoEvento(this.EventoID.Valor);
                if (cortesiaID <= 0)
                {
                    throw new Exception("Não possível encontrar a cortesia associada a este evento!");
                }

                this.CortesiaID.Valor = cortesiaID;
            }

            this.PrecoID.Valor = preco.ID;
            this.CotaItemID    = cotaInfo.CotaItemID;
            this.CotaItemIDAPS = cotaInfo.CotaItemID_APS;
            this.SerieID.Valor = serieID;
        }
Esempio n. 2
0
        public List <int> getQuantidadeQPodeReservarCota(List <EstruturaCotaItemReserva> listaCotaItem, EstruturaPrecoReservaSite preco, EstruturaCotasInfo cotaInfo)
        {
            try
            {
                List <int> retorno = new List <int>();

                #region Encontra Item da Apresentacao
                foreach (EstruturaCotaItemReserva itemEncontrado in listaCotaItem.Where(c => preco.PrecoNome.StartsWith(c.PrecoIniciaCom) && c.isApresentacao))
                {
                    retorno.Add(itemEncontrado.ID);
                    cotaInfo.CotaItemID               = itemEncontrado.ID;
                    cotaInfo.EncontrouCotaItem        = true;
                    cotaInfo.QuantidadeApresentacao   = itemEncontrado.QuantidadeApresentacao;
                    cotaInfo.QuantidadePorClienteCota = itemEncontrado.QuantidadePorCliente;
                    cotaInfo.QuantidadeCota           = itemEncontrado.Quantidade;
                    cotaInfo.ValidaBin  = itemEncontrado.ValidaBin;
                    cotaInfo.ParceiroID = itemEncontrado.ParceiroID;
                    cotaInfo.Nominal    = itemEncontrado.Nominal;
                    break;
                }

                if (retorno.Count.Equals(0))
                {
                    retorno.Add(0);
                }

                #endregion

                #region Encontra Item da Apresentacao Setor
                foreach (EstruturaCotaItemReserva itemEncontrado in listaCotaItem.Where(c => preco.PrecoNome.StartsWith(c.PrecoIniciaCom) && !c.isApresentacao))
                {
                    retorno.Add(itemEncontrado.ID);
                    cotaInfo.CotaItemID_APS              = itemEncontrado.ID;
                    cotaInfo.EncontrouCotaItemAPS        = true;
                    cotaInfo.QuantidadeCotaAPS           = itemEncontrado.Quantidade;
                    cotaInfo.QuantidadePorClienteCotaAPS = itemEncontrado.QuantidadePorCliente;
                    cotaInfo.ValidaBinAPS  = itemEncontrado.ValidaBin;
                    cotaInfo.ParceiroIDAPS = itemEncontrado.ParceiroID;
                    cotaInfo.Nominal       = itemEncontrado.Nominal;
                    break;
                }
                if (retorno.Count.Equals(1))
                {
                    retorno.Add(0);
                }

                #endregion


                if (cotaInfo.CotaItemID > 0 && cotaInfo.CotaItemID_APS > 0 && cotaInfo.CotaItemID_APS != cotaInfo.CotaItemID &&
                    (cotaInfo.ValidaBin != cotaInfo.ValidaBinAPS || cotaInfo.ParceiroID != cotaInfo.ParceiroIDAPS))
                {
                    throw new BilheteriaException("Não será possivel reservar o preço \"" + preco.PrecoNome + "\" pois ele não está mais disponível.");
                }


                //Validacao de Cotas
                if (cotaInfo.CotaItemID > 0 || cotaInfo.CotaItemID_APS > 0)
                {
                    cotaInfo.QuantidadeJaVendida = new CotaItemControle().getQuantidadeNovo(cotaInfo.CotaItemID, cotaInfo.CotaItemID_APS, cotaInfo.ApresentacaoID, cotaInfo.ApresentacaoSetorID);
                    //cotaInfo.sumQuantidadeVendidaReservar(qtdeJaReservadaCota, qtdeJaReservadaCotaItem);

                    //Fez a soma dos itens agora faz a validacao, se estiver incorreto retorna -1 na lista
                    if (!cotaInfo.ValidaReserva(preco.QuantidadeReservar()))
                    {
                        for (int i = 0; i < retorno.Count; i++)
                        {
                            retorno[i] = -1;
                        }
                    }
                }
                retorno.Add(cotaInfo.Nominal ? 1 : 0);
                return(retorno);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }