refactor(controller, engine, sync, checker) Additional nullable checks

This commit is contained in:
lainon 2022-08-30 11:29:41 +03:00
commit 14e0219101
17 changed files with 31 additions and 31 deletions

View file

@ -99,7 +99,7 @@ namespace Ombi.Core.Engine
{
return new RequestEngineResult
{
ErrorMessage = ruleResults.FirstOrDefault(x => x.Message.HasValue()).Message
ErrorMessage = ruleResults.FirstOrDefault(x => x.Message.HasValue())?.Message
};
}

View file

@ -89,7 +89,7 @@ namespace Ombi.Core.Engine
{
return new RequestEngineResult
{
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message)).Message
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message))?.Message
};
}
@ -198,7 +198,7 @@ namespace Ombi.Core.Engine
{
return new RequestEngineResult
{
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message)).Message
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message))?.Message
};
}

View file

@ -61,7 +61,7 @@ namespace Ombi.Core
if (images?.backdrops?.Any() ?? false)
{
return images.backdrops.Select(x => x.file_path).FirstOrDefault();
return images?.backdrops.Select(x => x.file_path).FirstOrDefault();
}
if (images?.posters?.Any() ?? false)
{
@ -85,7 +85,7 @@ namespace Ombi.Core
}
else
{
return images.posters.Select(x => x.file_path).First();
return images?.posters.Select(x => x.file_path).First();
}
}

View file

@ -524,7 +524,7 @@ namespace Ombi.Core.Senders
if (pathId == 0)
{
return rootFoldersResult.FirstOrDefault().path;
return rootFoldersResult.FirstOrDefault()?.path;
}
foreach (var r in rootFoldersResult.Where(r => r.id == pathId))

View file

@ -21,7 +21,7 @@ namespace Ombi.Mapping.Profiles
.ForMember(dest => dest.ImdbId, opts => opts.MapFrom(src => src.ExternalIds.ImdbId))
.ForMember(dest => dest.TheTvDbId, opts => opts.MapFrom(src => src.ExternalIds.TvDbId))
.ForMember(dest => dest.Network, opts => opts.MapFrom(src => src.networks.FirstOrDefault()))
.ForMember(dest => dest.NetworkId, opts => opts.MapFrom(src => src.networks.FirstOrDefault().id))
.ForMember(dest => dest.NetworkId, opts => opts.MapFrom(src => src.networks.FirstOrDefault()?.id))
.ForMember(dest => dest.Overview, opts => opts.MapFrom(src => src.overview))
.ForMember(dest => dest.Rating,
opts => opts.MapFrom(src => src.vote_average.ToString(CultureInfo.CurrentUICulture)))

View file

@ -167,7 +167,7 @@ namespace Ombi.Notifications
if (Alias.IsNullOrEmpty())
{
Alias = req?.RequestedUser?.Alias.HasValue() ?? false
? req.RequestedUser?.Alias
? req?.RequestedUser?.Alias
: req?.RequestedUser?.UserName;
}

View file

@ -64,7 +64,7 @@ namespace Ombi.Schedule.Jobs.Emby
{
var has4kRequest = movie.Has4KRequest;
EmbyContent embyContent = null;
if (movie.TheMovieDbId > 0)
if (movie?.TheMovieDbId > 0)
{
embyContent = await _repo.GetByTheMovieDbId(movie.TheMovieDbId.ToString());
}

View file

@ -179,7 +179,7 @@ namespace Ombi.Schedule.Jobs.Emby
Title = tvShow.Name,
Type = MediaType.Series,
EmbyId = tvShow.Id,
Url = EmbyHelper.GetEmbyMediaUrl(tvShow.Id, server?.ServerId, server.ServerHostname),
Url = EmbyHelper.GetEmbyMediaUrl(tvShow.Id, server?.ServerId, server?.ServerHostname),
AddedAt = DateTime.UtcNow,
});
}
@ -284,7 +284,7 @@ namespace Ombi.Schedule.Jobs.Emby
else
{
var movieHasChanged = false;
if (existingMovie.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
if (existingMovie?.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie?.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
{
_logger.LogDebug($"Updating existing movie '{movieInfo.Name}'");
MapEmbyContent(existingMovie, movieInfo, server, has4K, quality);
@ -315,12 +315,12 @@ namespace Ombi.Schedule.Jobs.Emby
}
private void MapEmbyContent(EmbyContent content, EmbyMovie movieInfo, EmbyServers server, bool has4K, string quality){
content.ImdbId = movieInfo.ProviderIds.Imdb;
content.ImdbId = movieInfo.ProviderIds?.Imdb;
content.TheMovieDbId = movieInfo.ProviderIds?.Tmdb;
content.Title = movieInfo.Name;
content.Type = MediaType.Movie;
content.EmbyId = movieInfo.Id;
content.Url = EmbyHelper.GetEmbyMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname);
content.Url = EmbyHelper.GetEmbyMediaUrl(movieInfo.Id, server?.ServerId, server?.ServerHostname);
content.Quality = has4K ? null : quality;
content.Has4K = has4K;
}

View file

@ -89,7 +89,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin
{
var has4kRequest = movie.Has4KRequest;
JellyfinContent jellyfinContent = null;
if (movie.TheMovieDbId > 0)
if (movie?.TheMovieDbId > 0)
{
jellyfinContent = await _repo.GetByTheMovieDbId(movie.TheMovieDbId.ToString());
}

View file

@ -154,7 +154,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin
Title = tvShow.Name,
Type = MediaType.Series,
JellyfinId = tvShow.Id,
Url = JellyfinHelper.GetJellyfinMediaUrl(tvShow.Id, server?.ServerId, server.ServerHostname),
Url = JellyfinHelper.GetJellyfinMediaUrl(tvShow.Id, server?.ServerId, server?.ServerHostname),
AddedAt = DateTime.UtcNow
});
}
@ -249,7 +249,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin
else
{
var movieHasChanged = false;
if (existingMovie.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
if (existingMovie?.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie?.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
{
_logger.LogDebug($"Updating existing movie '{movieInfo.Name}'");
MapJellyfinMovie(existingMovie, movieInfo, server, has4K, quality);
@ -282,12 +282,12 @@ namespace Ombi.Schedule.Jobs.Jellyfin
private void MapJellyfinMovie(JellyfinContent content, JellyfinMovie movieInfo, JellyfinServers server, bool has4K, string quality)
{
content.ImdbId = movieInfo.ProviderIds.Imdb;
content.ImdbId = movieInfo.ProviderIds?.Imdb;
content.TheMovieDbId = movieInfo.ProviderIds?.Tmdb;
content.Title = movieInfo.Name;
content.Type = MediaType.Movie;
content.JellyfinId = movieInfo.Id;
content.Url = JellyfinHelper.GetJellyfinMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname);
content.Url = JellyfinHelper.GetJellyfinMediaUrl(movieInfo.Id, server?.ServerId, server?.ServerHostname);
content.Quality = has4K ? null : quality;
content.Has4K = has4K;
}

View file

@ -19,7 +19,7 @@ namespace Ombi.Schedule.Jobs.Ombi
{
sb.Append("<tr>");
sb.Append("<td class=\"poster-container\" width=\"150\" height=\"225\" valign=\"top\" style=\"ont-family: sans-serif; font-size: 14px; vertical-align: top; width: 150px; min-width: 150px; height: 225px; max-height: 225px; min-height: 225px; \">");
sb.AppendFormat("<table class=\"poster-img\" width=\"100%\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; \">", url);
sb.Append("<table class=\"poster-img\" width=\"100%\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; \">");
}
protected virtual void AddMediaServerUrl(string mediaurl, string url)

View file

@ -115,7 +115,7 @@ namespace Ombi.Schedule.Jobs.Plex
var resultCount = settings.EpisodeBatchSize == 0 ? 150 : settings.EpisodeBatchSize;
var currentEpisodes = _repo.GetAllEpisodes().Cast<PlexEpisode>();
var episodes = await _api.GetAllEpisodes(settings.PlexAuthToken, settings.FullUri, section.key, currentPosition, resultCount);
_log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes.MediaContainer.librarySectionTitle} = {episodes.MediaContainer.totalSize}");
_log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes?.MediaContainer?.librarySectionTitle} = {episodes?.MediaContainer?.totalSize}");
// Delete all the episodes because we cannot uniquly match an episode to series every time,
// see comment below.

View file

@ -99,8 +99,8 @@ namespace Ombi.Schedule.Jobs.Plex
var newUser = new OmbiUser
{
UserType = UserType.PlexUser,
UserName = plexUser?.Username ?? plexUser.Id,
ProviderUserId = plexUser.Id,
UserName = plexUser?.Username ?? plexUser?.Id,
ProviderUserId = plexUser?.Id,
Email = plexUser?.Email ?? string.Empty,
Alias = string.Empty,
MovieRequestLimit = userManagementSettings.MovieRequestLimit,

View file

@ -108,8 +108,8 @@ namespace Ombi.Controllers.V1.External
{
var toAdd = new MediaFolders
{
Name = folder.Name,
Id = folder.ItemId,
Name = folder?.Name,
Id = folder?.ItemId,
ServerId = server.ServerId
};

View file

@ -82,8 +82,8 @@ namespace Ombi.Controllers.V1.External
{
var toAdd = new MediaFolders
{
Name = folder.Name,
Id = folder.ItemId,
Name = folder?.Name,
Id = folder?.ItemId,
ServerId = server.ServerId
};

View file

@ -528,7 +528,7 @@ namespace Ombi.Controllers.V1.External
var status = await LidarrApi.Status(settings.ApiKey, settings.FullUri);
return new TesterResultModel
{
IsValid = status?.urlBase == settings.SubDir || string.IsNullOrEmpty(status.urlBase) && string.IsNullOrEmpty(settings.SubDir),
IsValid = status?.urlBase == settings.SubDir || string.IsNullOrEmpty(status?.urlBase) && string.IsNullOrEmpty(settings.SubDir),
ExpectedSubDir = status?.urlBase
};
}
@ -551,7 +551,7 @@ namespace Ombi.Controllers.V1.External
var status = await WhatsAppApi.SendMessage(new WhatsAppModel {
From = settings.From,
Message = "This is a test from Ombi!",
To = user.UserNotificationPreferences.FirstOrDefault(x => x.Agent == NotificationAgent.WhatsApp).Value
To = user.UserNotificationPreferences.FirstOrDefault(x => x.Agent == NotificationAgent.WhatsApp)?.Value
}, settings.AccountSid, settings.AuthToken);
if (status.HasValue())
{

View file

@ -317,10 +317,10 @@ namespace Ombi.Controllers.V1
? issue.UserReported.Email
: string.Empty,
AdditionalInformation = $"{issue.Subject} | {issue.Description}",
UserId = issue.UserReported.Id, // This is a resolved notification, so needs to go to the user who raised it
UserId = issue.UserReported?.Id, // This is a resolved notification, so needs to go to the user who raised it
};
AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported?.UserName ?? string.Empty, issue.UserReported.UserAlias);
AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported?.UserName ?? string.Empty, issue.UserReported?.UserAlias);
await _notification.Notify(notificationModel);
}