Пример #1
0
        private async Task <SortingJobDto> UpdateSortingJobAsync(SortingJobDto sortingJob)
        {
            ValidateUpdatingSortingJob(sortingJob);

            var updatedSearchingJob = await _sortingJobRepository.UpdateSortingJobAsync(sortingJob);

            return(updatedSearchingJob);
        }
        private void ValidateHaveGottenSortingJob(int sortingJobId, SortingJobDto sortingJob)
        {
            if (sortingJob == null)
            {
                var errorMessage = $"SortingJob with Id {sortingJobId} has not been found, update failed!";

                _logger.LogError(errorMessage);

                throw new GetSortingJobException(errorMessage);
            }
        }
        public async Task <SortingJobDto> CreateSortingJobAsync(SortingJobDto sortingJob)
        {
            var sortingJobEntity = _mapper.Map <SortingJob>(sortingJob);

            _context.SortingJobs.Add(sortingJobEntity);

            await _context.SaveChangesAsync();

            var sortingJobDto = _mapper.Map <SortingJobDto>(sortingJobEntity);

            return(sortingJobDto);
        }
        public async Task <SortingJobDto> UpdateSortingJobAsync(SortingJobDto sortingJob)
        {
            var existingSortingJob = await GetSortingJobByIdAsync(sortingJob.Id);

            var sortingJobEntity = _mapper.Map(sortingJob, existingSortingJob);

            _context.SortingJobs.Update(sortingJobEntity);

            await _context.SaveChangesAsync();

            var updatedSortingJobDto = _mapper.Map <SortingJobDto>(sortingJobEntity);

            return(updatedSortingJobDto);
        }
Пример #5
0
        public async Task ProcessSortingJobAsync(SortingJobDto sortingJob)
        {
            sortingJob.TimeStamp = DateTime.UtcNow.ToUnixTimeSeconds();

            var stopwatch = Stopwatch.StartNew();

            var sortedSequence = SortSequence(sortingJob.Input);

            stopwatch.Stop();

            sortingJob.Output   = sortedSequence;
            sortingJob.Status   = Status.Completed.ToString();
            sortingJob.Duration = stopwatch.Elapsed.TotalMilliseconds;

            await UpdateSortingJobAsync(sortingJob);
        }
        public async Task <SortingJobStatusDto> CreateSortingJobAsync(IEnumerable <int> sortableSequence)
        {
            var enumeratedSortableSequence = ValidateCreatingSortingJob(sortableSequence);

            var sortingJobDto = new SortingJobDto
            {
                Input  = enumeratedSortableSequence,
                Status = Status.Pending.ToString()
            };

            var createdSortingJob = await _sortingJobRepository.CreateSortingJobAsync(sortingJobDto);

            SendSortingJobToProcess(createdSortingJob);

            var createdSortingJobStatus = _mapper.Map <SortingJobStatusDto>(createdSortingJob);

            return(createdSortingJobStatus);
        }
Пример #7
0
        private void ValidateUpdatingSortingJob(SortingJobDto sortingJob)
        {
            if (sortingJob == null)
            {
                var errorMessage = "SortingJob is null, update failed!";

                _logger.LogError(errorMessage);

                throw new UpdateSortingJobException(errorMessage);
            }

            var existingSortingJob = _sortingJobRepository.GetSortingJobAsync(sortingJob.Id);

            if (existingSortingJob == null)
            {
                var errorMessage = $"SortingJob with Id {sortingJob.Id} has not been found, update failed!";

                _logger.LogError(errorMessage);

                throw new UpdateSortingJobException(errorMessage);
            }
        }
 private void SendSortingJobToProcess(SortingJobDto createdSortingJob)
 {
     _messageQueue.Enqueue(createdSortingJob);
 }