Beispiel #1
0
            public async Task <IResult> Handle(TMDBSyncMovieCommand request, CancellationToken cancellationToken)
            {
                var lastSyncTMDBMovieId = GetStartMovieId(_movieRepository.Query().OrderByDescending(o => o.TMDBId).FirstOrDefault());
                int dbMovieCount        = await _movieRepository.GetCountAsync();

                if (IsMovieReachedMaximum(dbMovieCount, request.MaxMovieCount))
                {
                    _logger.Error("Senkronize Edilecek Film Sayısı Maximum Değere Ulaştı");
                    return(new ErrorResult("Senkronize Edilecek Film Sayısı Maximum Değere Ulaştı"));
                }
                if (dbMovieCount + request.OneTimeSyncCount > request.MaxMovieCount)
                {
                    request.OneTimeSyncCount = request.MaxMovieCount - dbMovieCount;
                }
                int savedCount = 0;

                while (savedCount != request.OneTimeSyncCount)
                {
                    var tmdbMovie = await _tmdbService.GetMovie(lastSyncTMDBMovieId + 1 + savedCount);

                    if (tmdbMovie != null)
                    {
                        var movie = _mapper.Map <Movie>(tmdbMovie);
                        _movieRepository.Add(movie);
                        savedCount++;
                    }
                }

                await _movieRepository.SaveChangesAsync();

                return(new SuccessResult(Messages.Added));
            }