course
This commit is contained in:
@@ -1,20 +1,30 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Vizhtalk.CDN.Presentation.Application;
|
||||
using Vizhtalk.CDN.Presentation.Domain.TypeIds;
|
||||
|
||||
namespace Vizhtalk.CDN.Presentation.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
public class FileController : ControllerBase
|
||||
public class FileController(IUnitOfWork unitOfWork) : ControllerBase
|
||||
{
|
||||
|
||||
[HttpGet("{id}")]
|
||||
public IActionResult Get(MediaGroupMediaId id)
|
||||
public async Task<IActionResult> Get(Guid id)
|
||||
{
|
||||
var mediaGroupMedia = await unitOfWork.MediaGroupMedia
|
||||
.GetDetailsById(new MediaGroupMediaId(id));
|
||||
|
||||
|
||||
if (mediaGroupMedia == null)
|
||||
return NotFound();
|
||||
|
||||
return Unauthorized();
|
||||
if(!mediaGroupMedia.MediaGroup.IsSecure)
|
||||
{
|
||||
var fileBytes = System.IO.File.ReadAllBytes(mediaGroupMedia.Media.Path);
|
||||
return File(fileBytes, mediaGroupMedia.Media.ContentType.Value);
|
||||
}
|
||||
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@ public class MediaGroupMedia : Entity<MediaGroupMediaId>
|
||||
public FileName Name { get; private set; }
|
||||
public MediaId MediaId { get; private set; }
|
||||
public MediaGroupId MediaGroupId { get; private set; }
|
||||
public Media Media { get; private set; }
|
||||
public MediaGroup MediaGroup { get; private set; }
|
||||
public Media Media { get; set; }
|
||||
public MediaGroup MediaGroup { get; set; }
|
||||
public IReadOnlyList<MediaPermission> MediaPermissions => _mediaPermissions;
|
||||
|
||||
internal static MediaGroupMedia CreateNew(FileName fileName,
|
||||
|
||||
@@ -4,4 +4,7 @@ using VizhTalk.BuildingBlocks.Domain;
|
||||
|
||||
namespace Vizhtalk.CDN.Presentation.Domain.Repositories;
|
||||
|
||||
public interface IMediaGroupMediaRepository : IRepositoryBase<MediaGroupMedia, MediaGroupMediaId>;
|
||||
public interface IMediaGroupMediaRepository : IRepositoryBase<MediaGroupMedia, MediaGroupMediaId>
|
||||
{
|
||||
Task<MediaGroupMedia?> GetDetailsById(MediaGroupMediaId mediaGroupMediaId,CancellationToken cancellationToken = default);
|
||||
}
|
||||
|
||||
@@ -9,8 +9,29 @@ namespace Vizhtalk.CDN.Presentation.Infrastructure.Repositories
|
||||
{
|
||||
public class MediaGroupMediaRepository : RepositoryBase<MediaGroupMedia, MediaGroupMediaId>, IMediaGroupMediaRepository
|
||||
{
|
||||
private readonly CDNDbContext dbContext;
|
||||
|
||||
public MediaGroupMediaRepository(CDNDbContext dbContext) : base(dbContext)
|
||||
{
|
||||
this.dbContext = dbContext;
|
||||
}
|
||||
|
||||
public async Task<MediaGroupMedia?> GetDetailsById(MediaGroupMediaId mediaGroupMediaId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var mediaGroupMedia = await dbContext.Set<MediaGroupMedia>()
|
||||
.FirstOrDefaultAsync(x => x.Id == mediaGroupMediaId, cancellationToken);
|
||||
|
||||
if (mediaGroupMedia == null)
|
||||
return null;
|
||||
|
||||
// پر کردن دستی navigation properties
|
||||
mediaGroupMedia.MediaGroup = await dbContext.Set<MediaGroup>()
|
||||
.FirstOrDefaultAsync(mg => mg.Id == mediaGroupMedia.MediaGroupId, cancellationToken);
|
||||
|
||||
mediaGroupMedia.Media = await dbContext.Set<Media>()
|
||||
.FirstOrDefaultAsync(m => m.Id == mediaGroupMedia.MediaId, cancellationToken);
|
||||
|
||||
return mediaGroupMedia;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ var builder = WebApplication.CreateBuilder(args);
|
||||
var connectionString = builder.Configuration.GetConnectionString("VizhTalk.CDN")!;
|
||||
var databaseName = builder.Configuration.GetConnectionString("VizhTalk.CDN.DatabaseName")!;
|
||||
|
||||
builder.Services.AddControllers();
|
||||
builder.Services.Initialize(connectionString, databaseName);
|
||||
builder.Services.AddGrpc(op =>
|
||||
{
|
||||
@@ -18,10 +19,10 @@ var app = builder.Build();
|
||||
|
||||
|
||||
|
||||
app.MapGet("/", () => "Hello World!");
|
||||
app.UseRouting();
|
||||
|
||||
app.MapGrpcService<CDNService>();
|
||||
|
||||
app.MapControllers();
|
||||
//app.UseCDNModule();
|
||||
|
||||
app.Run();
|
||||
|
||||
Reference in New Issue
Block a user