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));
        }
예제 #2
0
        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);
 }