Exemple #1
0
        public async Task <IHttpActionResult> CancelJob([FromBody] JobCancellationRequest request)
        {
            if (request == null)
            {
                return(BadRequest("null request encountered"));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var currentUser = new ReferenceUser(this.User.Identity.GetUserId(), this.User.Identity.GetUserName())
            {
                Name = this.User.Identity.GetUserFullName()
            };

            var job = await repository.GetJob(request.JobId);

            var result = await repository.CancelJob(job, request.Reason);

            Task.Factory.StartNew(() =>
            {
                var activity = new JobActivity(job, JobActivityOperationNames.Cancel, currentUser);
                activitySubject.OnNext(activity);
            });
            return(Ok(result));
        }
Exemple #2
0
        public async Task<UpdateResult<Job>> CancelJob(JobCancellationRequest request)
        {
            var job = await GetJob(request.JobId);
            job.State = JobState.CANCELLED;
            job.CancellationReason = request.Reason ?? request.Reason;

            var jobTaskToCancel = job.Tasks.LastOrDefault(x => x.State >= JobTaskState.IN_PROGRESS);

            jobTaskToCancel = jobTaskToCancel ?? job.Tasks.First();

            jobTaskToCancel.State = JobTaskState.CANCELLED;
            var result = await UpdateJob(job);
            return new UpdateResult<Job>(result.MatchedCount, result.ModifiedCount, job);
        }