private ChapterInfo GetNextChapter() { var waitingList = new List<ChapterInfo>(); foreach (var item in DownloadItems) { var chapters = item.SelectedChapters.Where(p=>p.Status == DownloadStatus.Waiting); waitingList.AddRange(chapters); } var groups = waitingList.GroupBy(p => p.Priority).Select(p => p); foreach (var group in groups.OrderByDescending(p=>p.Key)) { return group.OrderByDescending(p => p.Sequence).FirstOrDefault(); break; } return null; }
public static void EnviarCorreoPostergarcionFuncion(int codFuncion) { Funcion funcion = db.Funcion.Where(c => c.codFuncion == codFuncion).First(); Eventos evento = db.Eventos.Find(funcion.codEvento); MailMessage mail = new MailMessage(); mail.From = new MailAddress(MagicHelpers.CorreoVentas); //quienes compraron o reservaron la funcion List<DetalleVenta> detalles = db.DetalleVenta.Where(c => c.codFuncion == codFuncion).ToList(); //saco del detalle las ordenes de venta List<Ventas> ventas = new List<Ventas>(); foreach (DetalleVenta detalle in detalles) { Ventas venta = db.Ventas.Find(detalle.codVen); ventas.Add(venta); } //con las ordenes de venta puedo saber quienes han comprado List<CuentaUsuario> compradores = new List<CuentaUsuario>(); foreach (Ventas venta in ventas) { CuentaUsuario comprador = db.CuentaUsuario.Find(venta.CuentaUsuario.correo); //agregamos a compradores que no sean anonimos o null if (comprador != null) compradores.Add(comprador); } //nadie compro entradas al evento aun o todos son anonimos if (compradores.Count != 0) { compradores = compradores.GroupBy(c => c.correo).Select(s => s.First()).ToList(); //una vez que tengo la lista de compradores les mando un correo a cada uno foreach (CuentaUsuario cliente in compradores) { try { mail.To.Add(cliente.correo); mail.Subject = "Postegarcion de Funcion del Evento '" + evento.nombre + "'"; mail.IsBodyHtml = true; string htmlBody = "<p>Estimado " + cliente.nombre + " " + cliente.apellido + ", </p>"; htmlBody += "<p>Le informamos que la funcion del evento al que va asistir se ha postergado para el dia " + String.Format("{0:d}", funcion.fecha) + " a la hora " + String.Format("{0:t}", funcion.horaIni) + "</p>"; //htmlBody += "<p>Por el siguiente motivo:</p><p>" + funcion.motivoCambio + ".</p>"; htmlBody += "<br><p>Esperamos su compresion,</p><p>TickNet</p>"; mail.Body = htmlBody; SmtpServer.Send(mail); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } //para enviar indivualmente a cada cliente en vez de englobar a todos mail.To.Clear(); } } }