예제 #1
0
        private void replace(ReminderItemDTO selected, ReminderItemDTO saved)
        {
            ReminderItemsReposidory.Instance.Replace(selected, saved);

            SelectedReminder = saved;
            NotifyOfPropertyChange(() => Reminders);
        }
예제 #2
0
        public ReminderItemDTO SaveReminder(Token token, ReminderItemDTO reminder)
        {
            var securityInfo = SecurityManager.EnsureAuthentication(token);
            var service      = new ReminderService(Session, securityInfo, Configuration);

            return(service.SaveReminder(reminder));
        }
예제 #3
0
        private ReminderItemDTO CreateReminder(DateTime dateTime, ReminderRepetitions pattern, DateTime?lastShown = null, TimeSpan?remindBefore = null)
        {
            ReminderItemDTO item = new ReminderItemDTO();

            item.DateTime     = dateTime;
            item.Repetitions  = pattern;
            item.LastShown    = lastShown;
            item.RemindBefore = remindBefore;
            return(item);
        }
예제 #4
0
        public void New()
        {
            var dlg = new EditDomainObjectWindow();

            var ctrl = new usrReminderDetails();

            dlg.SetControl(ctrl);
            var reminder = new ReminderItemDTO();

            ctrl.ReminderItem = reminder;
            if (dlg.ShowDialog() == true)
            {
                ReminderItemsReposidory.Instance.Add(ctrl.ReminderItem);
            }
        }
예제 #5
0
        public void SaveNewReminder()
        {
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            var reminder = new ReminderItemDTO();

            reminder.Name     = "name";
            reminder.DateTime = DateTime.UtcNow;
            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var res = service.SaveReminder(data.Token, reminder);
                Assert.AreNotEqual(Guid.Empty, res.GlobalId);
                reminder.ProfileId = res.ProfileId;
                UnitTestHelper.CompareObjects(res, reminder, true);
            });
            var dbItem = Session.QueryOver <ReminderItem>().SingleOrDefault();

            Assert.AreEqual(ReminderType.Custom, dbItem.Type);
        }
예제 #6
0
        public ReminderItemDTO SaveReminder(ReminderItemDTO reminder)
        {
            Log.WriteWarning("SaveReminder:Username={0},GlobalId={1}", SecurityInfo.SessionData.Profile.UserName, reminder.GlobalId);

            if (!SecurityInfo.Licence.IsPremium)
            {
                throw new LicenceException("This feature is allowed for Premium account");
            }

            var dbReminder = reminder.Map <ReminderItem>();

            using (var trans = Session.BeginSaveTransaction())
            {
                Profile dbProfile = Session.Load <Profile>(SecurityInfo.SessionData.Profile.GlobalId);

                ReminderItem db = Session.Get <ReminderItem>(reminder.GlobalId);
                if (db != null)
                {
                    if (SecurityInfo.SessionData.Profile.GlobalId != db.Profile.GlobalId)
                    {
                        throw new CrossProfileOperationException("Cannot modify Reminder for another user");
                    }
                }
                dbReminder.Profile = dbProfile;

                if (reminder.RemindBefore.HasValue && reminder.RemindBefore.Value.TotalDays > 7)
                {
                    throw new ArgumentOutOfRangeException("RemindBefore can be maximum 7 days");
                }
                int res = Session.QueryOver <ReminderItem>().Where(x => x.Name == dbReminder.Name && x.GlobalId != dbReminder.GlobalId && x.Profile == dbProfile).RowCount();
                if (res > 0)
                {
                    throw new UniqueException("Reminder with the same name is already exist");
                }

                dbReminder = Session.Merge(dbReminder);
                dbProfile.DataInfo.ReminderHash = Guid.NewGuid();
                trans.Commit();
                return(dbReminder.Map <ReminderItemDTO>());
            }
        }
예제 #7
0
        public void SaveReminder_Validation_UniqueName()
        {
            var         profile  = (ProfileDTO)profiles[0].Tag;
            SessionData data     = CreateNewSession(profile, ClientInformation);
            var         reminder = new ReminderItemDTO();

            reminder.Name     = "name";
            reminder.DateTime = DateTime.UtcNow.AddDays(2);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                service.SaveReminder(data.Token, reminder);
            });

            reminder      = new ReminderItemDTO();
            reminder.Name = "name";
            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                service.SaveReminder(data.Token, reminder);
            });
        }
예제 #8
0
        public void SaveNewReminder_DataInfo()
        {
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);
            var         oldHash = profiles[0].DataInfo.ReminderHash;

            var reminder = new ReminderItemDTO();

            reminder.Name     = "name";
            reminder.DateTime = DateTime.UtcNow;
            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var res = service.SaveReminder(data.Token, reminder);
                Assert.AreNotEqual(Guid.Empty, res.GlobalId);
                reminder.ProfileId = res.ProfileId;
                UnitTestHelper.CompareObjects(res, reminder, true);
            });
            var dbItem = Session.Get <Profile>(profile.GlobalId);

            Assert.AreNotEqual(dbItem, dbItem.DataInfo.ReminderHash);
        }
예제 #9
0
        public void SaveReminder_Validation_UniqueName_DifferentUser()
        {
            var profile  = (ProfileDTO)profiles[0].Tag;
            var profile1 = (ProfileDTO)profiles[1].Tag;

            SessionData data     = CreateNewSession(profile, ClientInformation);
            var         reminder = new ReminderItemDTO();

            reminder.Name     = "name";
            reminder.DateTime = DateTime.UtcNow;
            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                service.SaveReminder(data.Token, reminder);
            });
            data              = CreateNewSession(profile1, ClientInformation);
            reminder          = new ReminderItemDTO();
            reminder.Name     = "name";
            reminder.DateTime = DateTime.UtcNow;
            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                service.SaveReminder(data.Token, reminder);
            });
            Assert.AreEqual(2, Session.QueryOver <ReminderItem>().RowCount());
        }
예제 #10
0
        public ReminderItemDTO ReminderOperation(ReminderOperationParam remindersParam)
        {
            ReminderItemDTO res = null;

            using (var tx = Session.BeginSaveTransaction())
            {
                //DateTime now = Configuration.TimerService.UtcNow;
                Profile dbProfile  = Session.Load <Profile>(SecurityInfo.SessionData.Profile.GlobalId);
                var     dbReminder = Session.Get <ReminderItem>(remindersParam.ReminderItemId);

                if (dbReminder.Profile != dbProfile)
                {
                    throw new CrossProfileOperationException("Cannot change reminder from another user");
                }

                if (remindersParam.Operation == ReminderOperationType.Delete)
                {
                    deleteReminder(dbReminder, true);
                }
                else if (remindersParam.Operation == ReminderOperationType.CloseAfterShow)
                {
                    if (dbReminder.Repetitions == ReminderRepetitions.Once)
                    {
                        deleteReminder(dbReminder, true);
                    }
                    else
                    {
                        dbReminder.LastShown = Configuration.TimerService.UtcNow;
                        Session.Update(dbReminder);
                        res = dbReminder.Map <ReminderItemDTO>();
                    }
                }
                tx.Commit();
                return(res);
            }
        }
 public ReminderItemDTO SaveReminder(Token token, ReminderItemDTO reminder)
 {
     return(exceptionHandling(token, () => InternalService.SaveReminder(token, reminder)));
 }
 public ReminderOperationServiceCommand(ReminderItemDTO reminder, ReminderOperationType operation)
 {
     this.reminder  = reminder;
     this.operation = operation;
 }
 public void Delete(ReminderItemDTO reminder)
 {
     ServicePool.Add(new ReminderOperationServiceCommand(reminder, ReminderOperationType.CloseAfterShow));
     NotificationsReposidory.Instance.Remove(reminder.GlobalId);
 }
예제 #14
0
 public ReminderItemViewModel(ReminderItemDTO reminder)
 {
     this.Reminder = reminder;
 }