using ErsatzTV.Core.Domain;

namespace ErsatzTV.Application.Plex;

internal static class Mapper
{
    internal static PlexMediaSourceViewModel ProjectToViewModel(PlexMediaSource plexMediaSource) =>
        new(
            plexMediaSource.Id,
            plexMediaSource.ServerName,
            Optional(plexMediaSource.Connections.SingleOrDefault(c => c.IsActive)).Match(c => c.Uri, string.Empty));

    internal static PlexLibraryViewModel ProjectToViewModel(PlexLibrary library) =>
        new(library.Id, library.Name, library.MediaKind, library.ShouldSyncItems);

    internal static PlexPathReplacementViewModel ProjectToViewModel(PlexPathReplacement pathReplacement) =>
        new(pathReplacement.Id, pathReplacement.PlexPath, pathReplacement.LocalPath);
}
