private async Task <bool> ChangeTaskStatus(TaskItemViewModel task, GoogleTaskStatus newStatus)
        {
            Messenger.Publish(new ShowProgressOverlayMsg(this));

            var response = await _dataService
                           .TaskService
                           .ChangeTaskStatusAsync(task.GoogleId, newStatus);

            Messenger.Publish(new ShowProgressOverlayMsg(this, false));

            if (!response.Succeed)
            {
                Logger.Error(
                    $"{nameof(ChangeTaskStatus)}: An error occurred while trying to mark {task.Title} as {GetStatusMsgToUse(newStatus)}." +
                    $"Error = {response.Message}");
                return(false);
            }

            task.Status      = response.Result.Status;
            task.CompletedOn = response.Result.CompletedOn;
            task.UpdatedAt   = response.Result.UpdatedAt;

            Messenger.Publish(new TaskStatusChangedMsg(
                                  this,
                                  task.GoogleId,
                                  task.ParentTask,
                                  task.CompletedOn,
                                  task.UpdatedAt,
                                  task.Status));
            return(true);
        }
Exemplo n.º 2
0
 public ChangeTaskStatusRequestMsg(
     object sender,
     TaskItemViewModel task,
     GoogleTaskStatus newStatus = GoogleTaskStatus.COMPLETED)
     : base(sender)
 {
     Task      = task;
     NewStatus = newStatus;
 }
Exemplo n.º 3
0
        /// <summary>
        /// Gets the google status string associated to <paramref name="status"/>
        /// </summary>
        /// <param name="status"></param>
        /// <returns>Returns the google status string</returns>
        public static string GetString(this GoogleTaskStatus status)
        {
            switch (status)
            {
            case GoogleTaskStatus.NEEDS_ACTION:
                return(NEEDS_ACTION_STATUS);

            case GoogleTaskStatus.COMPLETED:
                return(COMPLETED_STATUS);

            default:
                throw new ArgumentNullException($"The provided status {status} doesnt exists");
            }
        }
Exemplo n.º 4
0
        public async Task ChangeTaskStatusAsync(TaskItemViewModel task, GoogleTaskStatus taskStatus)
        {
            string statusMessage =
                $"{(taskStatus == GoogleTaskStatus.COMPLETED ? "completed" : "incompleted")}";

            bool changeStatus = await _dialogService.ShowConfirmationDialogAsync(
                "Confirmation",
                $"Mark {task.Title} as {statusMessage}?",
                "Yes",
                "No");

            if (!changeStatus)
            {
                return;
            }

            ShowTaskProgressRing = true;

            var response = await _dataService
                           .TaskService
                           .ChangeTaskStatusAsync(task.TaskID, taskStatus);

            ShowTaskProgressRing = false;

            if (!response.Succeed)
            {
                await _dialogService.ShowMessageDialogAsync(
                    $"Error",
                    $"An error occurred while trying to mark {task.Title} as {statusMessage}. " +
                    $"Error = {response.Message}.");

                return;
            }

            task.Status      = response.Result.Status;
            task.CompletedOn = response.Result.CompletedOn;
            task.UpdatedAt   = response.Result.UpdatedAt;

            _messenger.Send(
                new Tuple <TaskItemViewModel, bool>(task, task.HasParentTask),
                $"{MessageType.TASK_STATUS_CHANGED_FROM_PANE_FRAME}");

            _messenger.Send(
                $"{task.Title} was marked as {statusMessage}.",
                $"{MessageType.SHOW_IN_APP_NOTIFICATION}");
        }
 private string GetStatusMsgToUse(GoogleTaskStatus newStatus)
 => $"{(newStatus == GoogleTaskStatus.COMPLETED ? GetText("Completed") : GetText("Incompleted"))}";
Exemplo n.º 6
0
        public async Task <ResponseDto <GoogleTask> > ChangeTaskStatusAsync(string taskID, GoogleTaskStatus taskStatus)
        {
            return(await Task.Run(async() =>
            {
                _logger.Information($"ChangeTaskStatusAsync: Trying to change the status of taskID = {taskID} to {taskStatus}");
                var response = new ResponseDto <GoogleTask>
                {
                    Message = string.Empty,
                    Succeed = false
                };
                using (var context = new MiraiNotesContext())
                {
                    try
                    {
                        var taskToUpdate = await context
                                           .Tasks
                                           .FirstOrDefaultAsync(t => t.GoogleTaskID == taskID);

                        if (taskToUpdate == null)
                        {
                            response.Message = $"Could not find the task with taskID = {taskID} to change their status";
                            _logger.Warning($"ChangeTaskStatusAsync: Could not find a task with taskID = {taskID}");
                            return response;
                        }

                        taskToUpdate.CompletedOn = taskStatus == GoogleTaskStatus.COMPLETED ?
                                                   DateTimeOffset.UtcNow : (DateTimeOffset?)null;
                        taskToUpdate.Status = taskStatus.GetString();
                        taskToUpdate.UpdatedAt = DateTimeOffset.UtcNow;
                        if (taskToUpdate.LocalStatus != LocalStatus.CREATED)
                        {
                            taskToUpdate.LocalStatus = LocalStatus.UPDATED;
                        }
                        taskToUpdate.ToBeSynced = true;

                        context.Tasks.Update(taskToUpdate);

                        response.Succeed = await context.SaveChangesAsync() > 0;
                        response.Result = taskToUpdate;
                        _logger.Information("ChangeTaskStatusAsync: Completed successfully");
                    }
                    catch (Exception e)
                    {
                        _logger.Error(e, "ChangeTaskStatusAsync: An unknown error occurred");
                        response.Message = GetExceptionMessage(e);
                    }
                }
                return response;
            }).ConfigureAwait(false));
        }