MyBookmark/Modules.Library.WebApi/Controllers/AnimeTitleController.cs
THE_KONDRAT bad2805994 title modification
tried to add some ui
2024-09-24 19:44:54 +03:00

254 lines
10 KiB
C#

using Amazon.Runtime.Internal.Endpoints.StandardLibrary;
using AutoMapper;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using Modules.Library.WebApi.Models;
using Modules.Library.WebApi.Models.Anime;
namespace Modules.Library.WebApi.Controllers;
[ApiController]
[ApiExplorerSettings(GroupName = "AnimeTitleV1")]
[Route("MediaContent/Anime/Title")]
//[Route("[controller]")]
public class TitleController : ControllerBase
{
private readonly IMapper _mapper;
private readonly IMediator _mediator;
private readonly ILogger _logger;
public TitleController(IMapper mapper, IMediator mediator, ILogger<TitleController> logger)
{
_mapper = mapper;
_mediator = mediator;
_logger = logger;
}
[HttpGet("List")]
public async Task<List<Title>> List() =>
_mapper.Map<List<Title>>(await _mediator.Send(new Application.Queries.Anime.AnimeTitle.AnimeTitleListQuery()));
[HttpGet]
public async Task<Title> ById(Guid TitleId) =>
_mapper.Map<Title>(await _mediator.Send(new Application.Queries.Anime.AnimeTitle.AnimeTitleQuery { Id = TitleId }));
[HttpPost("Create")]
public async Task<Guid> CreateTitle([FromQuery] Guid nameOriginalLanguageId, [FromQuery] string nameOriginal) =>
await _mediator.Send(new Application.Commands.Anime.Title.CreateAnimeTitleCommand
{
NameOriginalLanguageId = nameOriginalLanguageId,
NameOriginal = nameOriginal,
});
[HttpPost("AddSeason")]
public async Task<Guid> AddSeason([FromQuery] Guid titleId) =>
await _mediator.Send(new Application.Commands.Anime.Title.AddSeasonCommand
{
TitleId = titleId
});
[HttpPost("DeleteSeason")]
public async Task DeleteSeason([FromQuery] Guid titleId, [FromQuery] Guid itemId) =>
await _mediator.Send(new Application.Commands.Anime.Title.DeleteSeasonCommand
{
TitleId = titleId
});
[HttpPost("AddEpisode")]
public async Task<Guid> AddEpisode([FromQuery] Guid titleId) =>
await _mediator.Send(new Application.Commands.Anime.Title.AddEpisodeCommand
{
TitleId = titleId
});
[HttpPost("DeleteEpisode")]
public async Task DeleteEpisode([FromQuery] Guid titleId, [FromQuery] Guid itemId) =>
await _mediator.Send(new Application.Commands.Anime.Title.DeleteEpisodeCommand
{
TitleId = titleId
});
[HttpPost("AddName")]
public async Task AddName([FromQuery] Guid titleId, [FromQuery] Guid languageId, [FromQuery] string name,
[FromQuery] NameType type) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Name.AddNameCommand
{
TitleId = titleId,
LanguageId = languageId,
NameType = (Application.Commands.CommonModels.NameType)type,
Value = name
});
[HttpPost("EditName")]
public async Task EditName([FromQuery] Guid titleId, [FromQuery] Guid languageId, [FromQuery] string name,
[FromQuery] NameType type) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Name.EditNameCommand
{
TitleId = titleId,
LanguageId = languageId,
NameType = (Application.Commands.CommonModels.NameType)type,
Value = name
});
[HttpPost("DeleteName")]
public async Task DeleteName([FromQuery] Guid titleId, [FromQuery] Guid languageId, [FromQuery] string name,
[FromQuery] NameType type) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Name.DeleteNameCommand
{
TitleId = titleId,
LanguageId = languageId,
NameType = (Application.Commands.CommonModels.NameType)type,
Value = name,
});
[HttpPost("SetPreview")]
public async Task SetPreview([FromQuery] Guid titleId, [FromQuery] MediaInfoType type, [FromQuery] string url) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Preview.SetPreviewCommand
{
TitleId = titleId,
Type = (Application.Commands.CommonModels.MediaInfoType)type,
Url = url,
});
[HttpPost("DeletePreview")]
public async Task DeletePreview([FromQuery] Guid titleId) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Preview.DeletePreviewCommand
{
TitleId = titleId,
});
[HttpPost("AddDescription")]
public async Task AddDescription([FromQuery] Guid titleId, [FromQuery] bool isOriginal, [FromQuery] Guid languageId, [FromQuery] string value) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Description.AddDescriptionCommand
{
TitleId = titleId,
IsOriginal = isOriginal,
LanguageId = languageId,
Value = value,
});
[HttpPost("EditDescription")]
public async Task EditDescription([FromQuery] Guid titleId, bool isOriginal, [FromQuery] Guid languageId, [FromQuery] string value,
[FromQuery] string newValue) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Description.EditDescriptionCommand
{
TitleId = titleId,
LanguageId = languageId,
IsOriginal = isOriginal,
Value = value,
NewValue = newValue,
});
[HttpPost("DeleteDescription")]
public async Task DeleteDescription([FromQuery] Guid titleId, bool isOriginal, [FromQuery] Guid languageId, [FromQuery] string value) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Description.DeleteDescriptionCommand
{
TitleId = titleId,
LanguageId = languageId,
IsOriginal = isOriginal,
Value = value,
});
[HttpPost("AddGenre")]
public async Task AddDescription([FromQuery] Guid titleId, [FromQuery] Guid genreId, [FromQuery] decimal? proportion) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Genre.AddGenreCommand
{
TitleId = titleId,
GenreId = genreId,
Proportion = proportion,
});
[HttpPost("SetGenreProportion")]
public async Task SetGenreProportion([FromQuery] Guid titleId, [FromQuery] Guid genreId, [FromQuery] decimal? proportion,
[FromQuery] decimal? newProportion) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Genre.SetGenreProportionCommand
{
TitleId = titleId,
GenreId = genreId,
Proportion = proportion,
NewProportion = newProportion
});
[HttpPost("DeleteGenre")]
public async Task DeleteGenre([FromQuery] Guid titleId, [FromQuery] Guid genreId) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.Genre.DeleteGenreCommand
{
TitleId = titleId,
GenreId = genreId,
});
//related content
[HttpPost("AddRelatedContent")]
public async Task AddDescription([FromQuery] Guid titleId, [FromQuery] MediaInfoType type, [FromQuery] string url) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.RelatedContent.AddRelatedContentCommand
{
TitleId = titleId,
Type = (Application.Commands.CommonModels.MediaInfoType)type,
Url = url,
});
[HttpPost("EditRelatedContent")]
public async Task EditRelatedContent([FromQuery] Guid titleId, [FromQuery] MediaInfoType type, [FromQuery] string url,
[FromQuery] MediaInfoType newType, [FromQuery] string newUrl) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.RelatedContent.EditRelatedContentCommand
{
TitleId = titleId,
Type = (Application.Commands.CommonModels.MediaInfoType)type,
Url = url,
NewType = (Application.Commands.CommonModels.MediaInfoType)newType,
NewUrl = newUrl,
});
[HttpPost("DeleteRelatedContent")]
public async Task DeleteRelatedContent([FromQuery] Guid titleId, [FromQuery] MediaInfoType type, [FromQuery] string url) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.RelatedContent.DeleteRelatedContentCommand
{
TitleId = titleId,
Type = (Application.Commands.CommonModels.MediaInfoType)type,
Url = url,
});
[HttpPost("SetCompleted")]
public async Task SetCompleted([FromQuery] Guid titleId, [FromQuery] bool completed) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetCompletedCommand
{
TitleId = titleId,
Value = completed,
});
[HttpPost("SetExpirationTime")]
public async Task SetExpirationTime([FromQuery] Guid titleId, [FromQuery] long expirationTimeTicks) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetExpirationTimeCommand
{
TitleId = titleId,
ExpirationTime = TimeSpan.FromTicks(expirationTimeTicks),
});
[HttpPost("SetAnnouncementDate")]
public async Task SetAnnouncementDate([FromQuery] Guid titleId, [FromQuery] DateTimeOffset? value) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetAnnouncementDateCommand
{
TitleId = titleId,
Value = value,
});
[HttpPost("SetEstimatedReleaseDate")]
public async Task SetEstimatedReleaseDate([FromQuery] Guid titleId, [FromQuery] DateTimeOffset? value) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetEstimatedReleaseDateCommand
{
TitleId = titleId,
Value = value,
});
[HttpPost("SetReleaseDate")]
public async Task SetReleaseDate([FromQuery] Guid titleId, [FromQuery] DateTimeOffset? value) =>
await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetReleaseDateCommand
{
TitleId = titleId,
Value = value,
});
}