Пример #1
0
 private async Task FinishJob()
 {
     _logger.LogInformation("Completed {JobName}", JobName);
     _jobStatus  = JobStage.Done;
     _itemStatus = new Dictionary <string, JobStage>();
     await UpdateJobStatus(_jobStatus);
 }
Пример #2
0
        private async Task <bool> BelongsToUser(JobStage jobStage)
        {
            var job = await _context.Jobs.Where(x => x.JobId == jobStage.JobId && x.UserId == userId).FirstOrDefaultAsync();

            var stage = await _context.Stages.Where(x => x.StageId == jobStage.StageId && x.UserId == userId).FirstOrDefaultAsync();

            return(!(job == null || stage == null));
        }
Пример #3
0
 private async Task UpdateAllItemsStatus(JobStage stage, IEnumerable <PinnedRepo> repos)
 {
     foreach (var repo in repos)
     {
         _itemStatus[repo.DatabaseId] = stage;
     }
     await UpdateJobStatus(stage);
 }
Пример #4
0
        public async Task <JobStage> UpdateWorkHours(int id)
        {
            List <ScheduleEntry> entries = await _scheduleEntryService.GetByJobStageId(id, true);

            JobStage js = await GetById(id);

            js.WorkHours = entries.Count;

            return(await Update(js));
        }
 public async Task PushDeleteTagJobStatusUpdate(string uniqueKey, string tagId,
                                                JobStage jobStage)
 {
     await _hubContext.Clients.All.PushDeleteTagJobStatusUpdate(
         new DeleteTagJobStatus()
     {
         Item      = tagId,
         JobStage  = jobStage,
         UniqueKey = uniqueKey
     });
 }
Пример #6
0
        public async Task <JobStage> Update(JobStage jobStage)
        {
            if (!await BelongsToUser(jobStage))
            {
                return(null);
            }
            _context.Entry(jobStage).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(jobStage);
        }
Пример #7
0
        public async Task <JobStage> Create(JobStage jobStage)
        {
            if (!await BelongsToUser(jobStage))
            {
                return(null);
            }
            jobStage.JobStageId = 0;
            _context.JobStages.Add(jobStage);
            await _context.SaveChangesAsync();

            return(jobStage);
        }
Пример #8
0
 public JobProgress(JobProgressType jobProgressType, JobStage jobStage, ProgressValue totalProgress, ProgressValue?stageProgress = null,
                    IDownloadJob?downloadJob = null, SongTarget?songTarget = null, DownloadResult?downloadResult = null, TargetResult?targetResult = null)
 {
     JobProgressType = jobProgressType;
     JobStage        = jobStage;
     StageProgress   = stageProgress;
     TotalProgress   = totalProgress;
     DownloadJob     = downloadJob;
     SongTarget      = songTarget;
     DownloadResult  = downloadResult;
     TargetResult    = targetResult;
 }
 public async Task PushGithubRepoFetcherJobStatusUpdate(
     Dictionary <string, JobStage> itemStatus,
     JobStage jobStage
     )
 {
     await _hubContext.Clients.All.PushGithubRepoFetcherJobStatusUpdate(
         new GithubRepoFetcherJobStatus
     {
         Item     = itemStatus,
         JobStage = jobStage
     }
         );
 }
Пример #10
0
        public async Task <JobStage> UpdateJobHours(int id, int jobHours)
        {
            JobStage jobstage = new JobStage()
            {
                JobStageId = id, JobHours = jobHours
            };

            _context.JobStages.Attach(jobstage);
            _context.Entry(jobstage).Property(js => js.JobHours).IsModified = true;
            await _context.SaveChangesAsync();

            return(await GetById(id));
        }
Пример #11
0
        public MapTagJobStatus(string tagId, JobStage jobStage)
        {
            switch (jobStage)
            {
            case JobStage.None:
                break;

            case JobStage.PreparingDatabase:
                break;

            case JobStage.FetchingFromGithub:
                break;

            case JobStage.CountingTagged:
                break;

            case JobStage.UploadingToDatabase:
                break;

            case JobStage.InProgress:
                break;

            case JobStage.Done:
                break;

            case JobStage.Warning:
                break;

            case JobStage.Error:
            {
                JobStage = jobStage;
                Item     = new TagResult
                {
                    Data = new Tag {
                        TagId = tagId
                    },
                    Details = new ResultDetails
                    {
                        Message      = $"There was a problem mapping {tagId}",
                        ResultStatus = ResultStatus.Failure
                    }
                };
            }
            break;

            default:
                throw new ArgumentOutOfRangeException(nameof(jobStage), jobStage, null);
            }
        }
Пример #12
0
        public async Task <JobStage> Delete(JobStage jobStage)
        {
            if (!await BelongsToUser(jobStage))
            {
                return(null);
            }
            try
            {
                _context.JobStages.Remove(jobStage);
                await _context.SaveChangesAsync();

                return(jobStage);
            }
            catch
            {
                return(null);
            }
        }
Пример #13
0
    private void Update()
    {
        if (stage == JobStage.Open && hasTransitionedStageVisual == false)
        {
            // switch to open
            hasTransitionedStageVisual = true;
            concealmentImage.gameObject.SetActive(false);
        }
        else if (stage == JobStage.Closed && isWorkerOnItem)
        {
            // show graphic for working
            currentHealth -= healthWorkFactor * Time.deltaTime;
            UpdateHealthImage();

            if (currentHealth <= 0)
            {
                isWorkerOnItem = false;
                stage          = JobStage.Open;
                GameManager.Instance.ReleaseWorker();
            }
        }

        // else nothing is happneing?
    }
Пример #14
0
 private async Task UpdateItemStatus(JobStage stage, PinnedRepo pinnedRepo)
 {
     _itemStatus[pinnedRepo.DatabaseId] = stage;
     await _jobStatusNotifier.PushGithubRepoFetcherJobStatusUpdate(_itemStatus, _jobStatus);
 }
Пример #15
0
 private async Task UpdateJobStatus(JobStage stage)
 {
     _jobStatus = stage;
     await _jobStatusNotifier.PushGithubRepoFetcherJobStatusUpdate(_itemStatus, _jobStatus);
 }
 public async Task PushCalculateTagCountsJobStatusUpdate(JobStage jobStage)
 {
     await _hubContext.Clients.All.PushCalculateTagCountsJobStatusUpdate(
         new CalculateTagCountsJobStatus { JobStage = jobStage }
         );
 }
 public async Task PushRenameTagJobStatusUpdate(string uniqueKey, TagResult tagResult, JobStage jobStage)
 {
     await _hubContext.Clients.All.PushRenameTagJobStatusUpdate(
         new RenameTagJobStatus
     {
         UniqueKey = uniqueKey,
         Item      = tagResult,
         JobStage  = jobStage
     }
         );
 }
Пример #18
0
		private void DoTask(ISkyDoxUploadTask task, JobStage nextStage, bool saveStatus, CancellationToken token, string defaultErrorMessage)
		{
			if (!ShouldDoWork())
			{
				return;
			}

			Exception exception = null;
			if (task != null)
			{
				try
				{
					token.ThrowIfCancellationRequested();
					task.Run();
				}
				catch (OperationCanceledException)
				{
				    Caption = Resources.SkyDoxUploadJob_Stop_Paused;
					JobStatus = JobStatus.Paused;
					return;
				}
				catch (InvalidResponseException ex)
				{
					Logger.LogError(ex);
					exception = ex;
				}
				catch (WebException ex)
				{
					LogWebException(ex);
					Logger.LogError(ex);
					exception = ex;
				}
				catch( IOException ex)
				{
					Logger.LogError(ex);
					exception = ex;
				}
				catch (Exception ex)
				{
					JobStatus = JobStatus.Failed;
					Logger.LogError("Caught unhandled exception");
					Logger.LogError(ex);
					throw;
				}

				if (!task.Succeeded)
				{
					_errors++;
                    if (task.PendingUserActivation)
                    {
                        Caption = Resources.SkyDoxUploadJob_DoTask_Waiting_for_account_authentication__Please_check_your_email_;
                        JobStatus = JobStatus.Authenticating;
                    }
					else if (!task.ShouldRetry || _errors >= 3)
					{
                        JobStatus = JobStatus.Failed;
						string message = !string.IsNullOrEmpty(task.ErrorMessage) ? task.ErrorMessage : defaultErrorMessage;
                        HandleError(message, exception);
					}
					return;
				}
			}

			if (saveStatus)
			{
				_jobInfo.CurrentStage = nextStage;
				JobInfo.WriteJobInfo(_jobInfo, _jobXmlPath);
				JobInfo.WriteJobInfo(_jobInfo, _jobBackupXmlPath);
			}

			if (OnJobStageChanged != null)
			{
				OnJobStageChanged(this, EventArgs.Empty);
			}
		}
Пример #19
0
 public static JobProgress CreateFromFault(JobProgressType progressType, JobStage jobStage, ProgressValue totalProgress)
 {
     return(new JobProgress(progressType, jobStage, totalProgress));
 }