public ActionResult Create(CafeStatusModels cafeStatus) { if (ModelState.IsValid) { var lastStatus = db.Status.OrderByDescending(p => p.Data).FirstOrDefault(); if (lastStatus == null || (DateTime.Now - lastStatus.Data > TimeSpan.FromMinutes(1))) { cafeStatus.Data = DateTime.Now; cafeStatus.UserName = this.User.Identity.Name; db.Status.Add(cafeStatus); db.Status.RemoveRange(db.Status.OrderByDescending(p => p.Data).Skip(10).ToList()); db.SaveChanges(); if (cafeStatus.Pronto && (lastStatus == null || lastStatus.Pronto != cafeStatus.Pronto)) { PushService.Send(); } } return(RedirectToAction("Index")); } return(View(cafeStatus)); }
public static async Task SendPushReminder(Reservation reservation, IPushDbContext context, Notification notification) { var vapidSubject = Environment.GetEnvironmentVariable("VapidSubject", EnvironmentVariableTarget.Process); var vapidPublicKey = Environment.GetEnvironmentVariable("VapidPublicKey", EnvironmentVariableTarget.Process); var vapidPrivateKey = Environment.GetEnvironmentVariable("VapidPrivateKey", EnvironmentVariableTarget.Process); var pushService = new PushService(context, vapidSubject, vapidPublicKey, vapidPrivateKey, new Microsoft.ApplicationInsights.TelemetryClient()); try { await pushService.Send(reservation.UserId, notification); } catch (Exception e) { throw new Exception($"Failed to send push to user with id: {reservation.UserId}. See inner exception.", e); } }
public static async Task RunAsync([TimerTrigger("0 0 7 * * *")] TimerInfo myTimer, ILogger log) { log.LogInformation($"Notify function executed at: {DateTime.Now}"); var vapidSubject = Environment.GetEnvironmentVariable("VapidSubject", EnvironmentVariableTarget.Process); var vapidPublicKey = Environment.GetEnvironmentVariable("VapidPublicKey", EnvironmentVariableTarget.Process); var vapidPrivateKey = Environment.GetEnvironmentVariable("VapidPrivateKey", EnvironmentVariableTarget.Process); // Get subscriptions from SQL database var context = new DemoDbContext(); var subscriptions = await context.PushSubscription.ToListAsync(); if (subscriptions.Count == 0) { log.LogInformation("No subscriptions were found in the database. Exciting."); return; } log.LogInformation($"{subscriptions.Count} subscriptions was found in the database."); var pushService = new PushService(context, vapidSubject, vapidPublicKey, vapidPrivateKey); var pushMessage = TriviaList[DateTime.Today.DayOfYear % TriviaList.Length]; log.LogInformation($"Trivia of the day: {pushMessage}"); var notification = new Notification { Title = "Did you know?", Body = pushMessage, Tag = NotificationTag.Trivia, }; foreach (var subscription in subscriptions) { try { await pushService.Send(subscription.UserId, notification); } catch (Exception e) { throw new Exception($"Failed to send push to user with id: {subscription.UserId}. See inner exception.", e); } } log.LogInformation("All push notifications were sent successfully. Exciting."); }
public void ReceiveNotification(PushDto dto) { _pushService = new PushService(); _pushService.Send(dto); }