public void UpdateAlert(Alert alert, bool disable) { if (disable) { _alertService.DisableAlert(alert); DependencyService.Get <INotificationService>().RemoveTimeNotification(alert); DependencyService.Get <IToastService>().ShortMessage("Alert disabled"); Refresh.Execute(null); } else { alert.State = AlertState.Pending; _alertService.ActivateAlert(alert); var notification = new TimeNotification { Id = alert.Id, Body = alert.Description, Title = alert.Title, Date = alert.Date, Time = alert.Time }; DependencyService.Get <INotificationService>().ScheduleTimeNotification(notification); DependencyService.Get <IToastService>().ShortMessage("Alert reactivated"); Refresh.Execute(null); } }
public Models.TimeNotification ScheduleTimeNotification(TimeNotification timeNotification) { try { Intent intent = new Intent(Android.App.Application.Context, typeof(NotificationSender)); intent.PutExtra("ID", timeNotification.Id); intent.PutExtra("Title", timeNotification.Title); intent.PutExtra("Body", timeNotification.Body); intent.PutExtra("Type", "TimeNotification"); PendingIntent broadcast = PendingIntent.GetBroadcast(Android.App.Application.Context, timeNotification.Id, intent, PendingIntentFlags.UpdateCurrent); AlarmManager alarmManager = (AlarmManager)Android.App.Application.Context.GetSystemService(AlarmService); var date = timeNotification.Date; var time = timeNotification.Time; Calendar calendar = Calendar.Instance; calendar.TimeInMillis = Java.Lang.JavaSystem.CurrentTimeMillis(); calendar.Set(CalendarField.Year, date.Year); calendar.Set(CalendarField.Month, date.Month - 1); calendar.Set(CalendarField.DayOfMonth, date.Day); calendar.Set(CalendarField.HourOfDay, time.Hours); calendar.Set(CalendarField.Minute, time.Minutes); calendar.Set(CalendarField.Second, 0); alarmManager.SetExact(AlarmType.RtcWakeup, calendar.TimeInMillis, broadcast); return(timeNotification); } catch (Exception) { return(null); } }