public async Task AddAsync(string userId, ReminderRequest request, ReminderRegistration registration) { var user = await context.Users.Where(v => v.Id == userId).SingleOrDefaultAsync(); var storedReminder = new StoredReminder() { ClientState = request.ClientState, Expires = registration.Expires, Id = registration.Id, Minutes = request.Minutes, NotificationUri = request.NotificationUri }; if (null == user) { user = new User() { Id = userId, Reminders = new List <StoredReminder>() { storedReminder } }; await context.Users.AddAsync(user); } else { if (null == user.Reminders) { user.Reminders = new List <StoredReminder>(); } user.Reminders.Add(storedReminder); } await context.SaveChangesAsync(); }
public async Task <ReminderRegistration> RegisterAsync(string userId, ReminderRequest request) { var registration = new ReminderRegistration() { Expires = DateTime.Now.AddMinutes(ExpirationMinutes), Id = Guid.NewGuid().ToString() }; await reminderRepository.AddAsync(userId, request, registration); await calendarService.InstallNotifications(userId); await MaintainReminderAsync(registration.Id); return(registration); }