async Task SetData(AsanaTask task)
        {
            Task         = task;
            IsForSync    = task.IsForSync;
            Status       = Statuses.FirstOrDefault(x => x.name == task.assignee_status);
            Name         = task.name;
            Notes        = task.notes;
            IsUseDueDate = task.due_on.HasValue;
            DueDate      = task.due_on.HasValue ? task.due_on.Value : DateTime.Today;
            IsUseDueDate = task.due_on.HasValue;
            IsCompleted  = task.completed;
            ProjectId    = task.projectid;
            if (task.assigneeid > 0)
            {
                UserId = task.assigneeid;
            }

            SelectedFollowers = Followers.Where(x => task.GetFollowers().Contains(x.id)).ToList();
            OldFollowersIds   = SelectedFollowers.Select(x => x.id).ToList();


            var tags = await new StorageService().GetTagsByTask(task.id);

            OldTagsIds   = tags.Select(x => x.id).ToList();
            SelectedTags = Tags.Where(x => OldTagsIds.Contains(x.id)).ToList();
        }
Esempio n. 2
0
        async Task SetTaskInfo(AsanaTask task)
        {
            var info = new TaskInfo();

            info.Name        = task.DisplayName;
            info.Notes       = task.notes;
            info.IsCompleted = task.completed;

            var project = await new StorageService().Find <AsanaProject>(task.projectid);

            string projectName = "";

            if (project != null)
            {
                projectName = project.name;
            }
            else
            {
                projectName = "Unknown";
            }
            info.ProjectName = string.Format(@"{0} / {1}", projectName, (await new StorageService().Find <AsanaWorkspace>(task.workspaceid)).name);
            if (task.assigneeid > 0)
            {
                info.HasAssignee = true;
                var assignee = await new StorageService().Find <AsanaUser>(task.assigneeid);
                info.AssigneeName = assignee != null ? assignee.name : "Unknown";
            }
            if (task.due_on.HasValue)
            {
                info.DueDate    = task.DueOn;
                info.HasDueDate = true;
            }

            info.HasStatus = !string.IsNullOrEmpty(task.assignee_status);
            info.Status    = task.assignee_status;
            info.IsForSync = task.IsForSync;
            info.IsOverdue = task.IsOverDue;

            if (task.parentId != null)
            {
                var parent = await new StorageService().Find <AsanaTask>(task.parentId.Value);
                if (parent != null)
                {
                    info.HasParent  = true;
                    info.ParentName = parent.DisplayName;
                }
            }

            var followersId = task.GetFollowers();

            info.HasFollowers = followersId.Any();
            info.Followers    = new List <AsanaUser>();

            foreach (var l in followersId)
            {
                var user = await new StorageService().Find <AsanaUser>(l);

                if (user != null)
                {
                    info.Followers.Add(user);
                }
                else
                {
                    info.Followers.Add(new AsanaUser()
                    {
                        name = "Unknown"
                    });
                }
            }

            info.NotifyFollowers();

            Task = info;
        }
Esempio n. 3
0
        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));
        }