private void CheckForUpcomingEvent() { if (_calendarData == null || _calendarData.value == null) { return; } foreach (var item in _calendarData.value.Where(p => !p.isAllDay)) { var diff = item.start.dateTime - DateTime.UtcNow; if (diff.TotalMinutes < 11 && diff.TotalMinutes > -1) { if (!_formCache.ContainsKey(item.id)) { var rf = new ReminderForm(); _formCache.Add(item.id, rf); rf.Show(item.subject, item.location?.displayName, diff); } else { _formCache[item.id].EnsureShow(diff); } } else { if (_formCache.ContainsKey(item.id)) { _formCache[item.id].Close(); _formCache[item.id].Dispose(); _formCache.Remove(item.id); } } } }
public async Task AddReminderAsync(ReminderForm form) { if (!IsLoggedIn) { throw new NotLoggedInException(); } await PostAsync($"reminder", form); }
public ServiceResult Insert(ReminderForm s) { if (s == null) { return(ServiceResponse.Error("Invalid data sent.")); } string authToken = Request.Headers.Authorization?.Parameter; SessionManager sessionManager = new SessionManager(Globals.DBConnectionKey); UserSession us = sessionManager.GetSession(authToken); if (us == null) { return(ServiceResponse.Error("You must be logged in to access this function.")); } if (us.Captcha?.ToUpper() != s.Captcha?.ToUpper()) { return(ServiceResponse.Error("Invalid code.")); } if (CurrentUser == null) { return(ServiceResponse.Error("You must be logged in to access this function.")); } if (string.IsNullOrWhiteSpace(s.AccountUUID) || s.AccountUUID == SystemFlag.Default.Account) { s.AccountUUID = CurrentUser.AccountUUID; } if (string.IsNullOrWhiteSpace(s.CreatedBy)) { s.CreatedBy = CurrentUser.UUID; } if (s.DateCreated == DateTime.MinValue) { s.DateCreated = DateTime.UtcNow; } s.Active = true; s.Deleted = false; s.ReminderCount = 0; //its new, now reminders/notifications have taken place if (s.EventDateTime == null || s.EventDateTime == DateTime.MinValue) { return(ServiceResponse.Error("You must provide a valid event date.")); } if (string.IsNullOrWhiteSpace(s.Frequency)) { return(ServiceResponse.Error("You must provide a valid frequency.")); } if (s.RepeatForever == false && s.RepeatCount <= 0) { return(ServiceResponse.Error("You must set repeat count or repeat forver.")); } #region Convert to Reminder from ReminderForm because entity frameworks doesn't recognize casting. var config = new MapperConfiguration(cfg => { cfg.CreateMap <ReminderForm, Reminder>(); }); IMapper mapper = config.CreateMapper(); var dest = mapper.Map <ReminderForm, Reminder>(s); #endregion Convert to Reminder from ReminderForm because entity frameworks doesn't recognize casting. ReminderManager reminderManager = new ReminderManager(Globals.DBConnectionKey, this.GetAuthToken(Request)); ServiceResult sr = reminderManager.Insert(dest); if (sr.Code != 200) { return(sr); } StringBuilder ruleErrors = new StringBuilder(); int index = 1; foreach (ReminderRule r in s.ReminderRules) { DateTime dt; switch (r.RangeType?.ToUpper()) { case "DATE": if (!DateTime.TryParse(r.RangeStart, out dt)) { ruleErrors.AppendLine("Rule " + index + " is not a valid start date."); } if (!DateTime.TryParse(r.RangeEnd, out dt)) { ruleErrors.AppendLine("Rule " + index + " is not a valid end date."); } break; case "TIME": if (!DateTime.TryParse(r.RangeStart, out dt)) { ruleErrors.AppendLine("Rule " + index + " is not a valid start time."); } if (!DateTime.TryParse(r.RangeEnd, out dt)) { ruleErrors.AppendLine("Rule " + index + " is not a valid end time."); } break; } index++; Debug.Assert(false, "CHECK MAKE SURE UUID IS SET"); r.ReminderUUID = s.UUID; r.CreatedBy = CurrentUser.UUID; r.DateCreated = DateTime.UtcNow; } if (ruleErrors.Length > 0) { return(ServiceResponse.Error(ruleErrors.ToString())); } index = 1; foreach (ReminderRule r in s.ReminderRules) { ServiceResult srr = reminderManager.Insert(r); if (srr.Code != 200) { ruleErrors.AppendLine("Rule " + index + " failed to save."); } } if (ruleErrors.Length > 0) { return(ServiceResponse.Error(ruleErrors.ToString())); } return(sr); }