public async Task TreatDownloadedMovie(MovieMagnet magnet) { try { await _localFileService.GenerateMovieFile(magnet); List <MovieMagnet> movieMagnets = new List <MovieMagnet>(); if (magnet.HasSub) { _logger.LogInformation("Movie {movieNumber} has downloaded sub version. Checking non-sub folder and delete it.", magnet.MovieNumber); movieMagnets = _movieMagnetService.FindMovieMagnetByStatus(MagnetStatus.Finished, magnet.IdMovie); foreach (MovieMagnet movieMagnet in movieMagnets) { await _localFileService.DeleteFolder(movieMagnet.SavePath); movieMagnet.IdStatus = MagnetStatus.Archived; } } movieMagnets.Add(magnet); _movieMagnetService.SaveMovieMagnetList(movieMagnets); await _qbittorrentService.DeleteTorrentAsync(magnet.Hash, false); Movie movie = _movieService.FindMovieById(magnet.IdMovie); _movieService.UpdateStatus(movie, magnet.HasSub ? MovieStatus.Finished : MovieStatus.Downloaded); _movieService.SaveMovie(movie); } catch (Exception ex) { _logger.LogError(ex, "Error occurred when generating the downloaded movie file - {movieNumber}", magnet.MovieNumber); magnet.IdStatus = MagnetStatus.InError; _movieMagnetService.SaveMovieMagnet(magnet); } }