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; }
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; } }