private static bool TryGetItemWithOverriddenAnalysisScope(
                    WorkItem item,
                    ImmutableArray <IIncrementalAnalyzer> allAnalyzers,
                    OptionSet options,
                    BackgroundAnalysisScope analysisScope,
                    IAsynchronousOperationListener listener,
                    [NotNullWhen(returnValue: true)] out WorkItem?newWorkItem
                    )
                {
                    var analyzersToExecute = item.GetApplicableAnalyzers(allAnalyzers);

                    var analyzersWithOverriddenAnalysisScope = analyzersToExecute
                                                               .Where(
                        a =>
                        a.GetOverriddenBackgroundAnalysisScope(options, analysisScope)
                        != analysisScope
                        )
                                                               .ToImmutableHashSet();

                    if (!analyzersWithOverriddenAnalysisScope.IsEmpty)
                    {
                        newWorkItem = item.With(
                            analyzersWithOverriddenAnalysisScope,
                            listener.BeginAsyncOperation("WorkItem")
                            );
                        return(true);
                    }

                    newWorkItem = null;
                    return(false);
                }
示例#2
0
        public Task <WorkItem?> GetAsync(string projectCode, string id)
        {
            WorkItem?result = null;

            _data.TryGetValue(GetKey(projectCode, id), out result);

            return(Task.FromResult <WorkItem?>(result));
        }
示例#3
0
        public WorkItem?ProcessNextHighestPriority()
        {
            WorkItem?workItem =
                _workItems.Where(work => !work.IsCompleted)
                .OrderByDescending(work => work.Priority)
                .FirstOrDefault();

            return(workItem switch
            {
                not null when _workItems.Remove(workItem) => workItem.MarkAsComplete(),
                _ => default
            });
        public async Task <string> Update(string companyId, UpdateTaskVm vm)
        {
            var company = await _companyRepository.GetFirstOrDefault(companyId) ?? throw new Exception($"No Company found against id:'{companyId}'");

            var      project  = company.GetProject(vm.ProjectId) ?? throw new Exception($"No Project found against id:'{vm.ProjectId}'");
            WorkItem?workItem = null;

            if (vm.ParentId is not null)
            {
                workItem = project.GetWorkItem(vm.ParentId);
            }
            var task = project.GetTask(vm.Id);

            task.Update(vm.Name, vm.Description, vm.Tags, vm.Discussion, vm.Priority, vm.Status, vm.Activity, vm.EstimatedHours, vm.RemainingHours, vm.CompletedHours, workItem, "");

            await _companyRepository.SaveChanges();

            return(task.Id);
        }
示例#5
0
 public WorkItemUpdatedResult(bool success, WorkItem?changedWorkItem, IEnumerable <ErrorMessage> errors)
 {
     Success         = success;
     UpdatedWorkItem = changedWorkItem;
     Errors          = errors;
 }
 public int CompareTo(WorkItem?other) => DueTime.CompareTo(other !.DueTime);
示例#7
0
 public int CompareTo(WorkItem?other) => Comparer <DateTimeOffset> .Default.Compare(DueTime, other !.DueTime);
示例#8
0
 public void Update(string name, string description, string tags, string discussion, byte priority, Status status, Activity activity, byte estimatedHours, byte remainingHours, byte completedHours, WorkItem?parent, string history)
 {
     Name           = name;
     Description    = description;
     Tags           = tags;
     Discussion     = discussion;
     Priority       = priority;
     Activity       = activity;
     EstimatedHours = estimatedHours;
     RemainingHours = remainingHours;
     CompletedHours = completedHours;
     Status         = status;
     UpdateHistory  = history;
     if (parent is not null)
     {
         ParentId = parent.Id;
     }
 }
示例#9
0
 public WorkItemCreatedResult(bool success, WorkItem?createdWorkItem, IEnumerable <ErrorMessage> errors)
 {
     Success         = success;
     CreatedWorkItem = createdWorkItem;
     Errors          = errors;
 }