changements de getmessageendpoint et du dto details
This commit is contained in:
@@ -6,4 +6,7 @@ public class GetMessageDetailsDto
|
|||||||
public string? Contenu { get; set; }
|
public string? Contenu { get; set; }
|
||||||
public DateTime Date { get; set; }
|
public DateTime Date { get; set; }
|
||||||
public Boolean Type { get; set; }
|
public Boolean Type { get; set; }
|
||||||
|
|
||||||
|
public int AuthorId { get; set; }
|
||||||
|
public string AuthorName { get; set; } = "";
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using System.Security.Claims;
|
||||||
using FastEndpoints;
|
using FastEndpoints;
|
||||||
using Knots.DTO.Message;
|
using Knots.DTO.Message;
|
||||||
using Knots.DTO.User;
|
using Knots.DTO.User;
|
||||||
@@ -5,25 +6,49 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace Knots.Endpoints.Message;
|
namespace Knots.Endpoints.Message;
|
||||||
|
|
||||||
public class GetMessageEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper) : Endpoint <GetMessageDetailsDto>
|
public class GetMessageEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper) : Endpoint<GetDiscussionMessagesRequest, List<GetMessageDetailsDto>>
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
{
|
{
|
||||||
Get("/messages/{@Id}");
|
Get("/discussions/{DiscussionId}/messages");
|
||||||
AllowAnonymous();
|
AllowAnonymous();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task HandleAsync(GetMessageDetailsDto req, CancellationToken ct)
|
public override async Task HandleAsync(GetDiscussionMessagesRequest req, CancellationToken ct)
|
||||||
{
|
{
|
||||||
Models.Message? databaseMessage = await db.Messages.SingleOrDefaultAsync(x => x.Id == req.Id, cancellationToken: ct);
|
int userId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
|
||||||
|
|
||||||
if (databaseMessage == null)
|
// l'utilisateur participe-t-il à cette discussion (privée ou via le groupe) ?
|
||||||
|
bool autorise = await db.Discussions
|
||||||
|
.Where(d => d.Id == req.DiscussionId)
|
||||||
|
.AnyAsync(d =>
|
||||||
|
d.UserDiscussions.Any(ud => ud.UserId == userId) ||
|
||||||
|
(d.Group != null && d.Group.GroupUsers.Any(gu => gu.UserId == userId)), ct);
|
||||||
|
|
||||||
|
if (!autorise)
|
||||||
{
|
{
|
||||||
await SendNotFoundAsync(ct);
|
await SendForbiddenAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var messageDto = mapper.Map<GetMessageDetailsDto>(databaseMessage);
|
List<GetMessageDetailsDto> messages = await db.Messages
|
||||||
await SendOkAsync(messageDto, ct);
|
.Where(m => m.DiscussionId == req.DiscussionId)
|
||||||
|
.OrderBy(m => m.Date)
|
||||||
|
.Select(m => new GetMessageDetailsDto
|
||||||
|
{
|
||||||
|
Id = m.Id,
|
||||||
|
Contenu = m.Contenu!,
|
||||||
|
Date = m.Date,
|
||||||
|
AuthorId = m.UserId,
|
||||||
|
AuthorName = m.User.Username!
|
||||||
|
})
|
||||||
|
.ToListAsync(ct);
|
||||||
|
|
||||||
|
await SendOkAsync(messages, ct);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetDiscussionMessagesRequest
|
||||||
|
{
|
||||||
|
public int DiscussionId { get; set; }
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Knots")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Knots")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+79a926bc2dc0c803db06002470a5b254df5c5366")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ff317cc9449b7228da67e493ffa74b44c87b3b57")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Knots")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Knots")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Knots")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Knots")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
6c465b3466d6b033362f776b9026e0f6319db705c736006e612bc04b20c3b80d
|
ca8f04f7ca657757a28c0e8abfce7eaad2aa52fcdf4495534a39ebbced49ce17
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user