public void Adicionar(int eventoID, string evento, int apresentacaoID, string apresentacao, int quantidadeNormais, int quantidadePromocionais) { Grupo = Grupos.First; int quantidadeTotal = 0; int quantidadeRestante = quantidadeTotal = quantidadeNormais + quantidadePromocionais; while (quantidadeRestante > 0) { if (Grupos.Count == 0) { Grupos.AddFirst(new EstruturaSerieGrupo()); Grupo = Grupos.First; } else if (Grupo.Next == null && quantidadeRestante != quantidadeTotal) { Grupos.AddAfter(Grupo, new EstruturaSerieGrupo()); Grupo = Grupo.Next; } else if (quantidadeRestante != quantidadeTotal) { Grupo = Grupo.Next; } int q = quantidadeRestante - QuantidadeMaximaIngressosPorApresentacao; if (q <= 0) { Grupo.Value.Adicionar(eventoID, evento, apresentacaoID, apresentacao, quantidadeRestante, q); } else { Grupo.Value.Adicionar(eventoID, evento, apresentacaoID, apresentacao, QuantidadeMaximaIngressosPorApresentacao, 0); } quantidadeRestante = q; } }