public static string SortearAmigosSecretos(AmigoSecretoContext db, bool IsTest) { var pessoas = GetPessoasForSorteio(db); AddAmigosPossiveisToPessoas(pessoas, db); SorteiaAmigoSecreto(pessoas); if (ExistPessoaSemAmigoSecreto(pessoas)) { return("Não foi possível sortear amigo secreto para todas as pessoas!"); } else { if (IsTest) { AtualizaMensagemAmigoSorteado(pessoas, db); } else { EnviaMensagensDeResultadoDoSorteio(pessoas, db); } } return("OK"); }
private static void AddAmigosPossiveisToPessoa(Pessoa pessoa, AmigoSecretoContext db) { if (pessoa == null) { return; } pessoa.AmigosPossiveis = new List <AmigoPossivel>(); pessoa.NAmigosPossiveis = 0; var amigos = db.Amigos.Where(a => a.ID != pessoa.Id).ToList(); if (amigos == null) { return; } foreach (var amigo in amigos) { if (!ExistsImpedimentoParaAmigo(pessoa.Impedimentos, amigo)) { pessoa.AmigosPossiveis.Add(new AmigoPossivel { Id = amigo.ID, Nome = amigo.Nome }); pessoa.NAmigosPossiveis++; } } }
private static void AtualizaMensagemAmigoSorteadoInPessoa(Pessoa pessoa, AmigoSecretoContext db) { if (pessoa == null || db == null) { return; } var amigo = db.Amigos.SingleOrDefault(a => a.ID == pessoa.Id); amigo.ResultadoUltimoEnvioSMS = "Amigo secreto sorteado em testes: " + (pessoa.AmigoSorteado == null? "" : pessoa.AmigoSorteado.Nome); db.Entry(amigo).State = EntityState.Modified; }
private static void AddAmigosPossiveisToPessoas(IList <Pessoa> pessoas, AmigoSecretoContext db) { if (pessoas == null) { return; } foreach (var pessoa in pessoas) { AddAmigosPossiveisToPessoa(pessoa, db); } }
private static void AtualizaMensagemAmigoSorteado(IList <Pessoa> pessoas, AmigoSecretoContext db) { if (pessoas == null || db == null) { return; } foreach (var pessoa in pessoas) { AtualizaMensagemAmigoSorteadoInPessoa(pessoa, db); } db.SaveChanges(); }
private static void AtualizaSMSResultInPessoa(string smsResult, int amigoId, AmigoSecretoContext db) { if (amigoId <= 0) { return; } var amigo = db.Amigos.SingleOrDefault(a => a.ID == amigoId); if (amigo == null) { return; } amigo.UltimoEnvioSMS = DateTime.Now; amigo.ResultadoUltimoEnvioSMS = smsResult; db.Entry(amigo).State = EntityState.Modified; }
private static IList <Pessoa> GetPessoasForSorteio(AmigoSecretoContext db) { var pessoas = new List <Pessoa>(); if (db == null) { return(pessoas); } var amigos = db.Amigos.ToList(); if (amigos == null) { return(pessoas); } foreach (var amigo in amigos) { pessoas.Add(GetPessoaFromAmigo(amigo)); } return(pessoas); }
public static void EnviaMensagensDeResultadoDoSorteio(IList <Pessoa> pessoas, AmigoSecretoContext db) { if (pessoas == null) { return; } string smsResult; foreach (var pessoa in pessoas) { if (pessoa.AmigoSorteado != null && pessoa.AmigoSorteado.Nome != null && pessoa.AmigoSorteado.Nome.Length > 0) { smsResult = SMSService.SendSMS(pessoa.Telemovel, GetMensagemAmigoSecreto(pessoa)); AtualizaSMSResultInPessoa(smsResult, pessoa.Id, db); } } db.SaveChanges(); }