public Gerenciamento.Precos getPreco(int precoID, int apresentacaoID) { Gerenciamento.Precos preco = new Gerenciamento.Precos(); var item = (from a in Apresentacoes join p in Precos on a.ApresentacaoID equals p.ApresentacaoID where a.ApresentacaoID == apresentacaoID && p.PrecoID == precoID select new { PrecoID = p.PrecoID, Valor = p.Valor, SetorID = p.SetorID, PrecoTipoID = p.PrecoTipoID, Nome = p.Nome, Label = p.Label, Horario = p.Horario, ApresentacaoID = p.ApresentacaoID, GerenciamentoIngressoID = p.GerenciamentoIngressoID, QuantidadeDisponivel = p.QuantidadeDisponivel, QuantidadeMaxima = p.QuantidadeMaxima, EventoID = p.EventoID, DataApresentacao = p.DataApresentacao, Evento = p.Evento }).FirstOrDefault(); if (item != null) { preco = new Gerenciamento.Precos() { PrecoID = item.PrecoID, Valor = item.Valor, SetorID = item.SetorID, PrecoTipoID = item.PrecoTipoID, Nome = item.Nome, Label = item.Label, Horario = item.Horario, ApresentacaoID = item.ApresentacaoID, GerenciamentoIngressoID = item.GerenciamentoIngressoID, QuantidadeDisponivel = item.QuantidadeDisponivel, QuantidadeMaxima = item.QuantidadeMaxima, EventoID = item.EventoID, DataApresentacao = item.DataApresentacao, Evento = item.Evento } } ; return(preco); }
/// <summary> /// Metodo que libera a reserva apartir do PrecoID /// TODO:DEVE LOCKAR A Aplicação /// </summary> /// <param name="PrecoID"></param> public void LiberarReserva(int PrecoID) { try { lock (this.Precos) { Gerenciamento.Precos preco = this.Precos.Where(c => c.PrecoID == PrecoID && c.QuantidadeDisponivel + 1 <= c.QuantidadeMaxima).FirstOrDefault(); if (preco != null) { preco.QuantidadeDisponivel++; } } } catch (Exception ex) { throw ex; } }
/// <summary> /// Metodo de decrementar, /// deve dar Lock na aplicação para através de concorrencia não seja possível reservar o PrecoID ao mesmo tempo com qtd <= 0 /// TODO: Dar LOCK /// </summary> /// <param name="precoID"></param> /// <returns></returns> public bool DecrementarPrecoID(int precoID, int gerenciamentoIngressoID) { try { lock (this.Precos) { Gerenciamento.Precos preco = this.Precos.Where(c => c.PrecoID == precoID && c.GerenciamentoIngressoID == gerenciamentoIngressoID).FirstOrDefault(); if (preco == null || preco.QuantidadeDisponivel <= 0) { return(false); } preco.QuantidadeDisponivel--; } return(true); } catch (Exception) { throw; } }