Example #1
0
        /// <summary>
        /// Konstruktor.
        /// </summary>
        /// <param name="task">Der Task als Datenquelle des ViewModels.</param>
        internal TaskPreviewViewModel(DataManager dataManager, Task task)
        {
            this.task = task;
            this.dataManager = dataManager;

            LoadCreatorIfNotUser();

            this.dataManager.PropertyChanged += dataManager_PropertyChanged;
            this.task.PropertyChanged += AllPropertiesChanged;
        }
Example #2
0
        internal bool GetTaskIsDone(Task task, out int score)
        {
            var taskAssignedTo = this.data.TaskAssignedToRelationship.FirstOrDefault(p => p.TaskId == task.TaskId && p.PersonUserId == this.data.User.UserId);

            if (taskAssignedTo == null)
            {
                //Fehlerfall Silent lösen, sollte eigentlich nie vorkommen, außer wenn eine einem Nutzer zugewiesene Aufgabe sich verändert und
                //die App über Push gestartet wird.
                if (System.Diagnostics.Debugger.IsAttached)
                    System.Diagnostics.Debugger.Break();

                taskAssignedTo = new TaskAssignedTo() { TaskId = task.TaskId, IsDone = false, PersonUserId = this.data.User.UserId, Score = 200 };
            }

            score = taskAssignedTo.Score;
            return taskAssignedTo.IsDone;
        }
Example #3
0
 internal bool GetTaskIsDone(Task task)
 {
     int score;
     return GetTaskIsDone(task, out score);
 }
Example #4
0
        internal static DataManager CreateNew()
        {
            Data data = new Data();

            //Ein paar Anweisungen für die App erstellen.
            var task1 = new Task(0, Guid.NewGuid().ToString(), Localization.Strings.DataNewCreatedTask1, data.User.UserId, DateTime.Now - TimeSpan.FromDays(1),
                DateTime.Today - TimeSpan.FromDays(1), false, DateTime.Now);
            var task2 = new Task(0, Guid.NewGuid().ToString(),
                Localization.Strings.DataNewCreatedTask2,
                data.User.UserId, DateTime.Now,
                DateTime.Today, false, DateTime.Now);
            var task3 = new Task(0, Guid.NewGuid().ToString(),
                Localization.Strings.DataNewCreatedTask3,
                data.User.UserId, DateTime.Now,
                DateTime.Today.AddDays(1), false, DateTime.Now);

            data.TaskAssignedToRelationship.Add(new TaskAssignedTo() { Score = 200, IsDone = false, PersonUserId = data.User.UserId, TaskId = task1.TaskId });
            data.TaskAssignedToRelationship.Add(new TaskAssignedTo() { Score = 100, IsDone = false, PersonUserId = data.User.UserId, TaskId = task2.TaskId });
            data.TaskAssignedToRelationship.Add(new TaskAssignedTo() { Score = 50, IsDone = false, PersonUserId = data.User.UserId, TaskId = task3.TaskId });
            data.Tasks.Add(task1);
            data.Tasks.Add(task2);
            data.Tasks.Add(task3);

            return new DataManager(data);
        }
Example #5
0
        private async void LoadTaskAssignedTo(Task task)
        {
            try
            {
                this.Creator = new PersonViewModel(await dataManager.GetFriendData(task.CreatorUserId, true));
                NotifyPropertyChanged("Creator");

                if (this.dataManager.LoggedIn)
                {
                    oldTaskAssignedTo = await dataManager.GetTaskAssignedTo(task.TaskId);

                    IEnumerable<FriendTaskAssignedToViewModel> friendsTaskAssignedTo;
                    if (this.IsEditable)
                    {
                        friendsTaskAssignedTo = (await dataManager.GetFriends()).Select(p =>
                        {
                            //Aus TaskAssignedTo Relationship alles nötige lesen
                            var taskAssignedTo = oldTaskAssignedTo.Where(q => q.PersonUserId == p.UserId).FirstOrDefault();

                            bool isIncluded = false;
                            bool isDone = false;

                            if (taskAssignedTo != null)
                            {
                                isIncluded = true;
                                isDone = taskAssignedTo.IsDone;
                            }

                            return new FriendTaskAssignedToViewModel(p, isIncluded, isDone);
                        });
                    }
                    else
                    {
                        //Lade nur ne Liste an Leuten zum anschauen.
                        var list = new List<FriendTaskAssignedToViewModel>();
                        foreach (var taskAssignedTo in oldTaskAssignedTo) //Nicht mit LINQ Select wegen den async Problemen.
                            list.Add(new FriendTaskAssignedToViewModel(await dataManager.GetFriendData(taskAssignedTo.PersonUserId, true), true, taskAssignedTo.IsDone));
                        friendsTaskAssignedTo = list;
                    }
                    this.FriendsTaskAssignedToAlphabetical = Controls.FriendsByLetterGroup<FriendTaskAssignedToViewModel>.Group(friendsTaskAssignedTo);
                    NotifyPropertyChanged("FriendsTaskAssignedToAlphabetical");
                    NotifyPropertyChanged("FriendsListEmptyString");
                }
            }
            catch
            {
                //Keiner Verbindugn etc. Silent behandeln.
                if (System.Diagnostics.Debugger.IsAttached)
                    System.Diagnostics.Debugger.Break();
            }
        }
Example #6
0
        /// <summary>
        /// Konstruktor.
        /// </summary>
        /// <param name="dataManager">Daten für das ViewModel.</param>
        /// <param name="task">Aktueller Task für das ViewModel.</param>
        internal TaskPageViewModel(DataManager dataManager, Task task)
        {
            this.dataManager = dataManager;
            this.taskId = task.TaskId;
            this.isFromUser = task.IsFromUser(dataManager.User);

            //IsDone und Score
            this.IsDone = this.dataManager.GetTaskIsDone(task, out this.oldScore);
            this.IsDoneChangeable = !this.IsDone;
            this.Score = this.oldScore;

            //Sonstige Eigenschaften
            this.Description = task.Description;
            this.dueDate = task.DueDate;
            this.oldDueDate = task.DueDate;
            this.IsDueTimeSet = task.IsDueTimeSet;
            this.DueTime = task.DueTime;

            //TaskAssigned To
            LoadTaskAssignedTo(task);

            //Reminder
            var reminder = ScheduledActionService.Find(this.GetReminderName()) as Reminder;
            if (reminder != null)
            {
                this.IsReminderSet = true;
                this.ReminderDateTime = reminder.BeginTime;
                ScheduledActionService.Remove(this.GetReminderName());
            }
            else if (this.isDueTimeSet)
                this.ReminderDateTime = this.DueDate.Date + this.DueTime.TimeOfDay;
            else
                this.ReminderDateTime = this.DueDate.Date + DateTime.Now.TimeOfDay;

            //Events
            task.PropertyChanged += AllPropertiesChanged;
            dataManager.PropertyChanged += dataManager_PropertyChanged;
        }