This commit is contained in:
2024-07-03 22:18:32 +02:00
Unverified
parent 4b333878b8
commit 008dcdf4ec
88 changed files with 3389 additions and 644 deletions

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using WatchIt.Common.Query;
namespace WatchIt.Common.Model.Genres;

View File

@@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace WatchIt.Common.Model.Media;
public class MediaPhoto
{
[JsonPropertyName("media_id")]
public required long MediaId { get; set; }
[JsonPropertyName("image")]
public required byte[] Image { get; set; }
[JsonPropertyName("mime_type")]
public required string MimeType { get; set; }
[JsonPropertyName("background")]
public MediaPhotoBackground? Background { get; set; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace WatchIt.Common.Model.Media;
public class MediaPhotoBackground
{
[JsonPropertyName("is_universal_background")]
public required bool IsUniversalBackground { get; set; }
[JsonPropertyName("first_gradient_color")]
public required byte[] FirstGradientColor { get; set; }
[JsonPropertyName("second_gradient_color")]
public required byte[] SecondGradientColor { get; set; }
}

View File

@@ -0,0 +1,36 @@
using System.Text;
using Microsoft.AspNetCore.Mvc;
using WatchIt.Common.Query;
namespace WatchIt.Common.Model.Media;
public class MediaPhotoQueryParameters : QueryParameters<MediaPhotoResponse>
{
#region PROPERTIES
[FromQuery(Name = "mime_type")]
public string? MimeType { get; set; }
[FromQuery(Name = "is_background")]
public bool? IsBackground { get; set; }
[FromQuery(Name = "is_universal_background")]
public bool? IsUniversalBackground { get; set; }
#endregion
#region PUBLIC METHODS
public override bool IsMeetingConditions(MediaPhotoResponse item) =>
(
TestString(item.MimeType, MimeType)
&&
TestBoolean(item.Background is not null, IsBackground)
&&
TestBoolean(item.Background!.IsUniversalBackground, IsUniversalBackground)
);
#endregion
}

View File

@@ -0,0 +1,38 @@
using WatchIt.Database.Model.Media;
namespace WatchIt.Common.Model.Media;
public class MediaPhotoRequest : MediaPhoto
{
public MediaPhotoImage CreateMediaPhotoImage() => new MediaPhotoImage
{
MediaId = MediaId,
Image = Image,
MimeType = MimeType
};
public MediaPhotoImageBackground? CreateMediaPhotoImageBackground(Guid mediaPhotoImageId) => Background is null ? null : new MediaPhotoImageBackground
{
Id = mediaPhotoImageId,
IsUniversalBackground = Background.IsUniversalBackground,
FirstGradientColor = Background.FirstGradientColor,
SecondGradientColor = Background.SecondGradientColor
};
public void UpdateMediaPhotoImage(MediaPhotoImage item)
{
item.MediaId = MediaId;
item.Image = Image;
item.MimeType = MimeType;
}
public void UpdateMediaPhotoImageBackground(MediaPhotoImageBackground item)
{
if (Background is not null)
{
item.IsUniversalBackground = Background.IsUniversalBackground;
item.FirstGradientColor = Background.FirstGradientColor;
item.SecondGradientColor = Background.SecondGradientColor;
}
}
}

View File

@@ -0,0 +1,47 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
using WatchIt.Database.Model.Media;
namespace WatchIt.Common.Model.Media;
public class MediaPhotoResponse : MediaPhoto
{
#region PROPERTIES
[JsonPropertyName("id")]
public Guid Id { get; set; }
[JsonPropertyName("upload_date")]
public DateTime UploadDate { get; set; }
#endregion
#region CONSTRUCTORS
[JsonConstructor]
public MediaPhotoResponse() {}
[SetsRequiredMembers]
public MediaPhotoResponse(MediaPhotoImage mediaPhotoImage)
{
Id = mediaPhotoImage.Id;
MediaId = mediaPhotoImage.MediaId;
Image = mediaPhotoImage.Image;
MimeType = mediaPhotoImage.MimeType;
UploadDate = mediaPhotoImage.UploadDate;
if (mediaPhotoImage.MediaPhotoImageBackground is not null)
{
Background = new MediaPhotoBackground
{
IsUniversalBackground = mediaPhotoImage.MediaPhotoImageBackground.IsUniversalBackground,
FirstGradientColor = mediaPhotoImage.MediaPhotoImageBackground.FirstGradientColor,
SecondGradientColor = mediaPhotoImage.MediaPhotoImageBackground.SecondGradientColor
};
}
}
#endregion
}

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using WatchIt.Common.Query;
namespace WatchIt.Common.Model.Movies;

View File

@@ -6,7 +6,7 @@ public class MovieRequest : Movie
{
#region PUBLIC METHODS
public Media CreateMedia() => new Media
public Database.Model.Media.Media CreateMedia() => new Database.Model.Media.Media
{
Title = Title,
OriginalTitle = OriginalTitle,
@@ -21,7 +21,7 @@ public class MovieRequest : Movie
Budget = Budget,
};
public void UpdateMedia(Media media)
public void UpdateMedia(Database.Model.Media.Media media)
{
media.Title = Title;
media.OriginalTitle = OriginalTitle;

View File

@@ -1,118 +0,0 @@
using System.Reflection;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using Microsoft.AspNetCore.Mvc;
namespace WatchIt.Common.Model;
public abstract class QueryParameters<T> where T : class
{
#region PROPERTIES
[FromQuery(Name = "order_by")]
public string? OrderBy { get; set; }
[FromQuery(Name = "order")]
public string? Order { get; set; }
[FromQuery(Name = "first")]
public int? First { get; set; }
[FromQuery(Name = "after")]
public int? After { get; set; }
#endregion
#region PUBLIC METHODS
public abstract bool IsMeetingConditions(T item);
public IEnumerable<T> PrepareData(IEnumerable<T> data)
{
data = data.Where(IsMeetingConditions);
if (OrderBy is not null)
{
PropertyInfo[] properties = typeof(T).GetProperties();
foreach (PropertyInfo property in properties)
{
JsonPropertyNameAttribute? attribute = property.GetCustomAttributes<JsonPropertyNameAttribute>(true).FirstOrDefault();
if (attribute is not null && attribute.Name == OrderBy)
{
if (Order == "asc")
{
data = data.OrderBy(property.GetValue);
}
else
{
data = data.OrderByDescending(property.GetValue);
}
break;
}
}
}
if (After is not null)
{
data = data.Skip(After.Value);
}
if (First is not null)
{
data = data.Take(First.Value);
}
return data;
}
#endregion
#region PRIVATE METHODS
protected bool TestString(string? property, string? regexQuery) =>
(
string.IsNullOrEmpty(regexQuery)
||
(
!string.IsNullOrEmpty(property)
&&
new Regex(regexQuery).IsMatch(property)
)
);
protected bool TestComparable(IComparable? property, IComparable? exact, IComparable? from, IComparable? to) =>
(
(
exact is null
||
(
property is not null
&&
property.CompareTo(exact) == 0
)
)
&&
(
from is null
||
(
property is not null
&&
property.CompareTo(from) > 0
)
)
&&
(
to is null
||
(
property is not null
&&
property.CompareTo(to) < 0
)
)
);
#endregion
}

View File

@@ -8,6 +8,7 @@
<ItemGroup>
<ProjectReference Include="..\..\WatchIt.Database\WatchIt.Database.Model\WatchIt.Database.Model\WatchIt.Database.Model.csproj" />
<ProjectReference Include="..\WatchIt.Common.Query\WatchIt.Common.Query.csproj" />
</ItemGroup>
<ItemGroup>