Пример #1
0
        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);
        }
Пример #3
0
        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);
        }