public async Task <Tuple <AsanaTask, bool> > SyncTask(AsanaTask task) { var dto = MapperService.CreateTaskDTO(0, task.name, task.notes, task.projectid, task.assignee_status, task.assigneeid, task.completed, task.due_on, task.GetFollowers()); var response = await new AsanaApiRepository().CreateTask(task.workspaceid, dto, task.parentId); if (AsanaClient.ProcessResponse(response, !_isUserActionRequest)) { MapperService.Map(response.Data, task.projectid, task.workspaceid); return(new Tuple <AsanaTask, bool>(response.Data, true)); } return(new Tuple <AsanaTask, bool>(null, false)); }
public async void AddNewSubTask() { if (String.IsNullOrEmpty(NewSubTaskText)) { return; } if (!CheckInternetConnection(true)) { return; } IsBusy = true; var task = await new StorageService().Find <AsanaTask>(Id); var dto = MapperService.CreateTaskDTO(0, NewSubTaskText, "", 0, "later", 0, false, null, null); var response = await new AsanaRespository().CreateTask(task.workspaceid, dto, Id); if (AsanaClient.ProcessResponse(response)) { MapperService.Map(response.Data, task.projectid, task.workspaceid); await new StorageService().Insert(response.Data); Subtasks.Add(response.Data); NewSubTaskText = ""; Container.Resolve <IMessagePublisher>().Publish(new FocusListMessage(this) { IsSubtasks = true }); } IsBusy = false; }
public async Task UpdateTask(long id, bool isCompleted, DateTime?dueOn, Action <AsanaTask> action) { if (IsBusy) { return; } ProgressText = "Syncing"; IsBusy = true; var task = await new StorageService().Find <AsanaTask>(id); if (!dueOn.HasValue) { dueOn = task.due_on; } var dto = MapperService.CreateTaskDTO(id, task.name, task.notes, task.projectid, task.assignee_status, task.assigneeid, isCompleted, dueOn, null); var response = await new AsanaApiRepository().UpdateTask(dto); if (AsanaClient.ProcessResponse(response)) { task.due_on = dueOn; task.completed = isCompleted; await new StorageService().Save(task); if (action != null) { action(task); } } IsBusy = false; SetDefaultProgressText(); }
async void SaveTask() { if (IsBusy || IsBlockingProgress) { return; } if (string.IsNullOrEmpty(Name)) { MessageBox.Show("Specify name"); return; } if (Project == null) { MessageBox.Show("Specify project"); return; } IsBlockingProgress = true; DateTime?dueDate = null; if (IsUseDueDate) { dueDate = DueDate; } var dto = MapperService.CreateTaskDTO(Id.GetValueOrDefault(0), Name, Notes, !IsEditMode ? Project.id : 0, Status.name, User != null && User.id > 0 ? User.id : -1, IsCompleted, dueDate, SelectedFollowers.Select(x => x.id).ToList()); //var task = new AsanaTaskDTO() { // name = model.Name, // notes = model.Notes, // completed = model.IsCompleted, // id = model.Id.GetValueOrDefault(0), // assignee = -1, // assignee_status = model.Status.name }; //if (model.IsUseDueDate) //{ // task.due_on = model.DueDate.ToString("yyyy-MM-dd"); //} //else //{ // task.due_on = "null"; //} //if (!model.IsEditMode) //{ // task.projects = model.Project.id; //} //if (model.User != null && model.User.id > 0) //{ // task.assignee = model.User.id; //} //save task for syncing later if (!CheckInternetConnection(false)) { if (IsForSync || !IsEditMode) { AsanaTask dbTask; if (IsEditMode) { dbTask = Task; } else { dbTask = new AsanaTask() { id = await new StorageService().GetLocalTaskId(), workspaceid = Project.workspaceid, modified_at = DateTime.Now, created_at = DateTime.Now, IsForSync = true }; } dbTask.name = dto.name; dbTask.notes = dto.notes; dbTask.completed = dto.completed; dbTask.assignee_status = dto.assignee_status; dbTask.assigneeid = dto.assignee == AsanaConstants.Utils.NULL_VALUE ? -1 : long.Parse(dto.assignee); dbTask.projectid = Project.id; dbTask.parentId = ParentId; dbTask.SetFollowers(dto.followers.Select(X => X.id).ToList()); if (IsUseDueDate) { dbTask.due_on = DueDate; } else { dbTask.due_on = null; } await new StorageService().Save(dbTask); if (!IsEditMode) { MessageBox.Show("Task saved for syncing when network will be available"); } IsBlockingProgress = false; NavigationManager.GoBack(); return; } } if (IsForSync && IsEditMode) { var task = await new StorageService().Find <AsanaTask>(Id.Value); await CheckSyncStatus(task); IsForSync = false; IsBlockingProgress = false; return; } //normal save var response = !IsEditMode ? await new AsanaRespository().CreateTask(WorkspaceId, dto, ParentId) : await new AsanaRespository().UpdateTask(dto); if (AsanaClient.ProcessResponse(response)) { if (IsEditMode && OldProjectId != Project.id) { var newResponse = await new AsanaRespository().ChangeTaskProject(Id.Value, OldProjectId, Project.id); if (AsanaClient.ProcessResponse(newResponse)) { await PrepareAndSaveTaskToDb(response.Data); await ProcessFollowers(response.Data); await ProcessTags(response.Data); } } else { await PrepareAndSaveTaskToDb(response.Data); if (IsEditMode) { await ProcessFollowers(response.Data); } await ProcessTags(response.Data); } NavigationManager.GoBack(); return; } IsBlockingProgress = false; }