Пример #1
0
        private void RegisterMessages()
        {
            _messenger.Register <TaskListItemViewModel>(
                this,
                $"{MessageType.NAVIGATIONVIEW_SELECTION_CHANGED}",
                (taskList) =>
            {
                _currentTaskList = taskList;
                _messenger.Send(false, $"{MessageType.OPEN_PANE}");
            });
            _messenger.Register <TaskItemViewModel>(
                this,
                $"{MessageType.NEW_TASK}",
                async(task) =>
            {
                await GetAllTaskListAsync();
                await InitView(task.TaskID);
                CurrentTask.Validator = i =>
                {
                    var u = i as TaskItemViewModel;
                    if (string.IsNullOrEmpty(u.Title) || u.Title.Length < 2)
                    {
                        u.Properties[nameof(u.Title)].Errors.Add("Title is required");
                    }

                    if (string.IsNullOrEmpty(u.Notes) || u.Notes.Length < 2)
                    {
                        u.Properties[nameof(u.Notes)].Errors.Add("Notes are required");
                    }
                };

                UpdateTaskOperationTitle(CurrentTask.IsNew, CurrentTask.HasParentTask);
                //IsCurrentTaskTitleFocused = true;
                CurrentTask.Validate();
            });
            _messenger.Register <string>(
                this,
                $"{MessageType.TASK_DELETED_FROM_CONTENT_FRAME}",
                OnTaskRemoved);
            _messenger.Register <bool>(
                this,
                $"{MessageType.SHOW_PANE_FRAME_PROGRESS_RING}",
                (show) => ShowTaskProgressRing = show);
            _messenger.Register <Tuple <TaskItemViewModel, bool> >(
                this,
                $"{MessageType.TASK_STATUS_CHANGED_FROM_CONTENT_FRAME}",
                (tuple) => OnTaskStatusChanged(tuple.Item1, tuple.Item2));
        }
Пример #2
0
        public async Task UpdateTaskListAsync(TaskListItemViewModel taskList)
        {
            int    index    = TaskLists.IndexOf(taskList);
            string newTitle = await _dialogService.ShowInputStringDialogAsync(
                "Type the new task list name",
                taskList.Title,
                "Update",
                "Cancel");

            if (string.IsNullOrEmpty(newTitle))
            {
                return;
            }

            _messenger.Send(true, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}");

            var dbResponse = await _dataService
                             .TaskListService
                             .FirstOrDefaultAsNoTrackingAsync(t => t.GoogleTaskListID == taskList.TaskListID);

            if (!dbResponse.Succeed)
            {
                await _dialogService.ShowMessageDialogAsync(
                    "Error",
                    $"An unknown error occurred while trying to retrieve the task list from db. Error = {dbResponse.Message}");

                return;
            }

            dbResponse.Result.Title      = newTitle;
            dbResponse.Result.UpdatedAt  = DateTimeOffset.UtcNow;
            dbResponse.Result.ToBeSynced = true;
            if (dbResponse.Result.LocalStatus != LocalStatus.CREATED)
            {
                dbResponse.Result.LocalStatus = LocalStatus.UPDATED;
            }

            var response = await _dataService
                           .TaskListService
                           .UpdateAsync(dbResponse.Result);

            if (!response.Succeed)
            {
                _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}");
                await _dialogService.ShowMessageDialogAsync(
                    "Error",
                    $"Coudln't update the task list {taskList.Title}. Error = {response.Message}");

                return;
            }

            TaskLists[index] = _mapper.Map <TaskListItemViewModel>(dbResponse.Result);

            _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}");
            //If the updated task is the same as the selected one
            //we update SelectedItem
            if (SelectedItem == taskList)
            {
                SelectedItem = TaskLists[index];
            }
        }
Пример #3
0
        public async Task DeleteTaskList(TaskListItemViewModel taskList)
        {
            bool deleteCurrentTaskList = await _dialogService.ShowConfirmationDialogAsync(
                "Confirmation",
                $"Are you sure you want to delete {taskList.Title}?",
                "Yes",
                "No");

            if (!deleteCurrentTaskList)
            {
                return;
            }

            _messenger.Send(true, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}");

            //If we are deleting the tasklist that is selected
            //lets close the panel to avoid creating new tasks
            //in the CurrentTaskList
            if (CurrentTaskList == taskList)
            {
                OpenPane(false);
            }

            var dbResponse = await _dataService
                             .TaskListService
                             .FirstOrDefaultAsNoTrackingAsync(tl => tl.GoogleTaskListID == taskList.TaskListID);

            if (!dbResponse.Succeed)
            {
                await _dialogService.ShowMessageDialogAsync(
                    "Error",
                    $"An unknown error occurred while trying to retrieve the task list from db. Error = {dbResponse.Message}");

                return;
            }

            EmptyResponseDto response;

            //if the task is created but wasnt synced, we remove it from the db
            if (dbResponse.Result.LocalStatus == LocalStatus.CREATED)
            {
                response = await _dataService
                           .TaskListService
                           .RemoveAsync(dbResponse.Result);
            }
            else
            {
                dbResponse.Result.LocalStatus = LocalStatus.DELETED;
                dbResponse.Result.ToBeSynced  = true;

                response = await _dataService
                           .TaskListService
                           .UpdateAsync(dbResponse.Result);
            }

            if (!response.Succeed)
            {
                _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}");
                await _dialogService.ShowMessageDialogAsync(
                    "Error",
                    $"Coudln't delete the task list {taskList.Title}. Error = {response.Message}");

                return;
            }

            //Here we select the previoues task list only if the
            //selected item = the task list to be removed
            if (SelectedItem == taskList)
            {
                int removedIndex = TaskLists.IndexOf(taskList);
                if (removedIndex != -1 && removedIndex > 0)
                {
                    var taskListToSelect = TaskLists[removedIndex - 1];
                    SelectedItem = taskListToSelect;
                    _appSettings.SelectedDbTaskListId = taskListToSelect.Id;
                }
                else
                {
                    OnNavigationViewSelectionChangeAsync(null);
                }
            }
            else if (TaskLists.Count == 1)
            {
                OnNavigationViewSelectionChangeAsync(null);
            }

            TaskLists.Remove(taskList);

            _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}");

            _messenger.Send(
                $"Sucessfully removed {taskList.Title} task list",
                $"{MessageType.SHOW_IN_APP_NOTIFICATION}");
        }
Пример #4
0
 public void OnTaskListAdded(TaskListItemViewModel taskList)
 {
     TaskLists.Add(taskList);
     SelectedItem = taskList;
     _appSettings.SelectedDbTaskListId = taskList.Id;
 }