/// <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; }
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; }
internal bool GetTaskIsDone(Task task) { int score; return GetTaskIsDone(task, out score); }
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); }
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(); } }
/// <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; }