MyBookmark/Modules.Library.WebApi/Controllers/AnimeSeasonController.cs
THE_KONDRAT 3294f8d88d title:
non season episode
seasons
2024-12-29 19:41:07 +03:00

522 lines
22 KiB
C#

//using AutoMapper;
//using MediatR;
//using Microsoft.AspNetCore.Authorization;
//using Microsoft.AspNetCore.Mvc;
//using Modules.Library.WebApi.Models.Anime;
//using Modules.Library.WebApi.Models.Anime.CommonProperties;
//using Modules.Library.WebApi.Models.Views.Anime;
//using System.Net;
//namespace Modules.Library.WebApi.Controllers;
//[ApiController]
//[ApiExplorerSettings(GroupName = "AnimeTitleV1")]
//[Route("MediaContent/Anime/Title")]
////[Route("[controller]")]
//[Authorize]
//public class AnimeSeasonController : ControllerBase
//{
// private readonly IMapper _mapper;
// private readonly IMediator _mediator;
// private readonly ILogger _logger;
// public AnimeSeasonController(IMapper mapper, IMediator mediator, ILogger<AnimeTitleController> logger)
// {
// _mapper = mapper;
// _mediator = mediator;
// _logger = logger;
// }
// [HttpGet("List")]
// [AllowAnonymous]
// public async Task<List<Title>> List() =>
// _mapper.Map<List<Title>>(await _mediator.Send(new Application.Queries.Anime.AnimeTitle.AnimeTitleListQuery()));
// [HttpGet]
// [AllowAnonymous]
// public async Task<Title> ById(Guid TitleId) =>
// _mapper.Map<Title>(await _mediator.Send(new Application.Queries.Anime.AnimeTitle.AnimeTitleQuery { Id = TitleId }));
// [HttpPost("Rate")]
// public async Task Rate(RateEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.RateTitleCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// RatePercentage = model.RatePercentage ?? throw new ArgumentNullException(nameof(model.RatePercentage)),
// });
// [HttpPost("Unrate")]
// public async Task Unrate([FromBody] RateEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.UnrateTitleCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// });
// [HttpPost("Create")]
// public async Task<Guid> CreateTitle([FromForm] TitleCreate model)
// {
// var streams = new List<Stream>();
// try
// {
// var command = new Application.Commands.Anime.Title.CreateAnimeTitleCommand
// {
// Names = model.Names.Select(q => new Application.Commands.Anime.Title.Name
// {
// LanguageId = q.LanguageId,
// NameType = (Application.Commands.CommonModels.NameType)q.Type,
// Value = q.Value,
// }),
// Descriptions = model.Descriptions.Select(q => new Application.Commands.Anime.Title.Description
// {
// LanguageId = q.LanguageId,
// IsOriginal = q.IsOriginal,
// Value = q.Value,
// }),
// Genres = model.Genres.Select(q => new Application.Commands.Anime.Title.Genre
// {
// GenreId = q.GenreId,
// Proportion = q.Proportion,
// }),
// AnnouncementDate = model.AnnouncementDate,
// EstimatedReleaseDate = model.EstimatedReleaseDate,
// };
// if (model.Preview?.NewFile != null)
// {
// var stream = model.Preview.NewFile.OpenReadStream();
// streams.Add(stream);
// command.Preview = model.Preview == null ? null : new Application.Commands.Anime.Title.MediaInfo
// {
// Data = stream,
// Type = (Application.Commands.CommonModels.MediaInfoType)(model.Preview.NewType ?? throw new Exception("Type is not set")),
// ContentType = model.Preview.NewFile.ContentType,
// };
// }
// else
// {
// if (!string.IsNullOrWhiteSpace(model.Preview?.NewUrl))
// {
// command.Preview = new Application.Commands.Anime.Title.MediaInfo
// {
// Url = model.Preview.NewUrl,
// Type = (Application.Commands.CommonModels.MediaInfoType)(model.Preview.NewType ?? throw new Exception("Type is not set")),
// };
// }
// }
// foreach (var relatedContent in model.RelatedContent)
// {
// if (relatedContent.NewFile != null)
// {
// var stream = relatedContent.NewFile.OpenReadStream();
// streams.Add(stream);
// command.RelatedContent.Add(new Application.Commands.Anime.Title.MediaInfo
// {
// Data = stream,
// Type = (Application.Commands.CommonModels.MediaInfoType)(relatedContent.NewType ?? throw new Exception("Type is not set")),
// ContentType = relatedContent.NewFile.ContentType,
// });
// }
// else
// {
// if (!string.IsNullOrWhiteSpace(relatedContent?.NewUrl))
// {
// command.RelatedContent.Add(new Application.Commands.Anime.Title.MediaInfo
// {
// Url = relatedContent.NewUrl,
// Type = (Application.Commands.CommonModels.MediaInfoType)(relatedContent.NewType ?? throw new Exception("Type is not set")),
// });
// }
// }
// }
// return await _mediator.Send(command);
// }
// finally
// {
// foreach (var stream in streams)
// {
// stream?.Close();
// }
// }
// }
// [HttpPost("AddSeason")]
// public async Task<Guid> AddSeason([FromQuery] SeasonCreate model)
// {
// var streams = new List<Stream>();
// try
// {
// var command = new Application.Commands.Anime.Title.AddSeasonCommand
// {
// TitleId = model.AnimeTitleId,
// Names = model.Names.Select(q => new Application.Commands.Anime.Title.Name
// {
// LanguageId = q.LanguageId,
// NameType = (Application.Commands.CommonModels.NameType)q.Type,
// Value = q.Value,
// }),
// Descriptions = model.Descriptions.Select(q => new Application.Commands.Anime.Title.Description
// {
// LanguageId = q.LanguageId,
// IsOriginal = q.IsOriginal,
// Value = q.Value,
// }),
// Genres = model.Genres.Select(q => new Application.Commands.Anime.Title.Genre
// {
// GenreId = q.GenreId,
// Proportion = q.Proportion,
// }),
// AnnouncementDate = model.AnnouncementDate,
// EstimatedReleaseDate = model.EstimatedReleaseDate,
// Number = model.Number
// };
// if (model.Preview?.NewFile != null)
// {
// var stream = model.Preview.NewFile.OpenReadStream();
// streams.Add(stream);
// command.Preview = model.Preview == null ? null : new Application.Commands.Anime.Title.MediaInfo
// {
// Data = stream,
// Type = (Application.Commands.CommonModels.MediaInfoType)(model.Preview.NewType ?? throw new Exception("Type is not set")),
// ContentType = model.Preview.NewFile.ContentType,
// };
// }
// else
// {
// if (!string.IsNullOrWhiteSpace(model.Preview?.NewUrl))
// {
// command.Preview = new Application.Commands.Anime.Title.MediaInfo
// {
// Url = model.Preview.NewUrl,
// Type = (Application.Commands.CommonModels.MediaInfoType)(model.Preview.NewType ?? throw new Exception("Type is not set")),
// };
// }
// }
// foreach (var relatedContent in model.RelatedContent)
// {
// if (relatedContent.NewFile != null)
// {
// var stream = relatedContent.NewFile.OpenReadStream();
// streams.Add(stream);
// command.RelatedContent.Add(new Application.Commands.Anime.Title.MediaInfo
// {
// Data = stream,
// Type = (Application.Commands.CommonModels.MediaInfoType)(relatedContent.NewType ?? throw new Exception("Type is not set")),
// ContentType = relatedContent.NewFile.ContentType,
// });
// }
// else
// {
// if (!string.IsNullOrWhiteSpace(relatedContent?.NewUrl))
// {
// command.RelatedContent.Add(new Application.Commands.Anime.Title.MediaInfo
// {
// Url = relatedContent.NewUrl,
// Type = (Application.Commands.CommonModels.MediaInfoType)(relatedContent.NewType ?? throw new Exception("Type is not set")),
// });
// }
// }
// }
// return await _mediator.Send(command);
// }
// finally
// {
// foreach (var stream in streams)
// {
// stream?.Close();
// }
// }
// }
// [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(NameEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Name.AddNameCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// LanguageId = model.LanguageId,
// NameType = (Application.Commands.CommonModels.NameType)model.Type,
// Value = model.Value
// });
// [HttpPost("EditName")]
// public async Task EditName(NameEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Name.EditNameCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// LanguageId = model.LanguageId,
// NameType = (Application.Commands.CommonModels.NameType)model.Type,
// Value = model.Value,
// NewLanguageId = model.NewLanguageId,
// NewValue = model.NewValue,
// });
// [HttpPost("DeleteName")]
// public async Task DeleteName(NameEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Name.DeleteNameCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// LanguageId = model.LanguageId,
// NameType = (Application.Commands.CommonModels.NameType)model.Type,
// Value = model.Value,
// });
// [HttpGet("GetMedia")]
// [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(FileStreamResult))]
// [AllowAnonymous]
// public async Task<IActionResult> GetMedia(string objectId) //title id
// {
// if (!string.IsNullOrEmpty(objectId))
// {
// var media = await _mediator.Send(new Application.Queries.Anime.GetMediaQuery
// {
// ObjectId = objectId,
// });
// if (media == null)
// {
// return NotFound();
// }
// else
// {
// return new FileStreamResult(media.Data, media.ContentType);
// }
// }
// else
// {
// return NotFound();
// }
// }
// [HttpPost("SetPreview")]
// public async Task SetPreview([FromForm] MediaInfoEdit model)
// {
// if (model.NewFile == null && string.IsNullOrWhiteSpace(model.NewUrl)) throw new Exception("No file or url");
// var command = new Application.Commands.Anime.Title.Properties.Preview.SetPreviewCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// Type = (Application.Commands.CommonModels.MediaInfoType)(model.NewType ?? throw new Exception("Type is not set")),
// };
// if (model.NewFile != null)
// {
// using var stream = model.NewFile.OpenReadStream();
// command.Data = stream;
// command.ContentType = model.NewFile.ContentType;
// var cd = model.NewFile.ContentDisposition;
// var a = model.NewFile.FileName;
// await _mediator.Send(command);
// }
// else
// {
// if (!string.IsNullOrWhiteSpace(model?.NewUrl))
// {
// command.Url = model.NewUrl;
// await _mediator.Send(command);
// }
// }
// }
// [HttpPost("ClearPreview")]
// public async Task ClearPreview(MediaInfoEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Preview.DeletePreviewCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// });
// [HttpPost("AddDescription")]
// public async Task AddDescription(DescriptionEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Description.AddDescriptionCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// IsOriginal = model.IsOriginal,
// LanguageId = model.LanguageId,
// Value = model.Value,
// });
// [HttpPost("EditDescription")]
// public async Task EditDescription(DescriptionEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Description.EditDescriptionCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// LanguageId = model.LanguageId,
// IsOriginal = model.IsOriginal,
// Value = model.Value,
// NewLanguageId = model.NewLanguageId,
// NewValue = model.NewValue,
// });
// [HttpPost("DeleteDescription")]
// public async Task DeleteDescription(DescriptionEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Description.DeleteDescriptionCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// LanguageId = model.LanguageId,
// IsOriginal = model.IsOriginal,
// Value = model.Value,
// });
// [HttpPost("AddGenre")]
// public async Task AddDescription(GenreProportionEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Genre.AddGenreCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// GenreId = model.GenreId,
// Proportion = model.Proportion,
// });
// [HttpPost("EditGenre")]
// public async Task EditGenre(GenreProportionEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Genre.SetGenreProportionCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// GenreId = model.GenreId,
// Proportion = model.Proportion
// });
// [HttpPost("DeleteGenre")]
// public async Task DeleteGenre(GenreProportionEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.Genre.DeleteGenreCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// GenreId = model.GenreId,
// });
// //[HttpGet("GetRelatedContent")]
// //public async Task AddRelatedContent(IFormFile file, MediaInfoEdit model)
// //{
// // using var stream = file.OpenReadStream();
// // await _mediator.Send(new Application.Commands.Anime.Title.Properties.RelatedContent.AddRelatedContentCommand
// // {
// // TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// // Type = (Application.Commands.CommonModels.MediaInfoType)model.Type,
// // Data = stream,
// // ContentType = model.ContentType,
// // });
// //}
// [HttpPost("AddRelatedContent")]
// public async Task AddRelatedContent(IFormFile file, MediaInfoEdit model)
// {
// var command = new Application.Commands.Anime.Title.Properties.RelatedContent.AddRelatedContentCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// Type = (Application.Commands.CommonModels.MediaInfoType)(model.NewType ?? throw new Exception("Type is not set")),
// };
// if (model.NewFile != null)
// {
// using var stream = file.OpenReadStream();
// command.Data = stream;
// command.ContentType = file.ContentType;
// await _mediator.Send(command);
// }
// else
// {
// if (!string.IsNullOrWhiteSpace(model?.NewUrl))
// {
// command.Url = model.NewUrl;
// await _mediator.Send(command);
// }
// }
// }
// [HttpPost("EditRelatedContent")]
// public async Task EditRelatedContent(IFormFile file, MediaInfoEdit model)
// {
// var command = new Application.Commands.Anime.Title.Properties.RelatedContent.EditRelatedContentCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// ObjectId = model.ObjectId ?? throw new Exception("Object id is required"),
// NewType = (Application.Commands.CommonModels.MediaInfoType?)model.NewType,
// };
// if (model.NewFile != null)
// {
// using var stream = file.OpenReadStream();
// command.NewData = stream;
// command.NewContentType = file.ContentType;
// var cd = file.ContentDisposition;
// var a = file.FileName;
// await _mediator.Send(command);
// }
// else
// {
// if (!string.IsNullOrWhiteSpace(model?.NewUrl))
// {
// command.NewUrl = model.NewUrl;
// await _mediator.Send(command);
// }
// }
// }
// [HttpPost("DeleteRelatedContent")]
// public async Task DeleteRelatedContent(MediaInfoEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.RelatedContent.DeleteRelatedContentCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// ObjectId = model.ObjectId ?? throw new Exception("Object id is required"),
// });
// [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(DateEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetAnnouncementDateCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// Value = model.Value.HasValue ? new DateTimeOffset(model.Value.Value.DateTime, TimeSpan.Zero) : null
// });
// [HttpPost("SetEstimatedReleaseDate")]
// public async Task SetEstimatedReleaseDate(DateEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetEstimatedReleaseDateCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// Value = model.Value.HasValue ? new DateTimeOffset(model.Value.Value.DateTime, TimeSpan.Zero) : null
// });
// [HttpPost("SetReleaseDate")]
// public async Task SetReleaseDate(DateEdit model) =>
// await _mediator.Send(new Application.Commands.Anime.Title.Properties.SetReleaseDateCommand
// {
// TitleId = model.AnimeTitleId ?? throw new ArgumentNullException(nameof(model.AnimeTitleId)),
// Value = model.Value.HasValue ? new DateTimeOffset(model.Value.Value.DateTime, TimeSpan.Zero) : null,
// });
//}