From 0b9e01c92578a51eb81cd673aaae95ac56d7c4af Mon Sep 17 00:00:00 2001 From: gokhoal Date: Thu, 11 Jun 2026 00:13:30 +0200 Subject: [PATCH] Revert "endpoint de creation de discussion" This reverts commit af1b14b0d2a889e3bdfbe2f08dac0cf0ef4922f5. --- .../CreatePrivateDiscussionEndpoint.cs | 83 ------------------- 1 file changed, 83 deletions(-) delete mode 100644 Knots/Endpoints/Discussion/CreatePrivateDiscussionEndpoint.cs diff --git a/Knots/Endpoints/Discussion/CreatePrivateDiscussionEndpoint.cs b/Knots/Endpoints/Discussion/CreatePrivateDiscussionEndpoint.cs deleted file mode 100644 index 3c43958..0000000 --- a/Knots/Endpoints/Discussion/CreatePrivateDiscussionEndpoint.cs +++ /dev/null @@ -1,83 +0,0 @@ -using FastEndpoints; -using Knots.DTO.Discussion; -using Knots.Models; -using Microsoft.EntityFrameworkCore; -using System.Security.Claims; - -namespace Knots.Endpoints.Discussion; - -public class CreatePrivateDiscussionEndpoint(KnotsDbContext db) - : Endpoint -{ - public override void Configure() - { - Post("/discussions/private"); - } - - public override async Task HandleAsync(CreatePrivateDiscussionRequest req, CancellationToken ct) - { - int currentUserId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!); - - // 1. retrouver l'utilisateur cible par son nom - Models.User? target = await db.Users - .SingleOrDefaultAsync(u => u.Username == req.Username, ct); - - if (target is null) - { - await SendNotFoundAsync(ct); // utilisateur introuvable - return; - } - - if (target.Id == currentUserId) - { - await SendErrorsAsync(400, ct); // pas de discussion avec soi-même - return; - } - - // 2. vérifier qu'une discussion privée entre les deux n'existe pas déjà - Models.Discussion? existing = await db.Discussions - .Where(d => d.GroupId == null - && d.UserDiscussions.Any(ud => ud.UserId == currentUserId) - && d.UserDiscussions.Any(ud => ud.UserId == target.Id)) - .FirstOrDefaultAsync(ct); - - if (existing is not null) - { - await SendOkAsync(new GetDiscussionDto - { - Id = existing.Id, - IsGroup = false, - Name = target.Username!, - MembersCount = null - }, ct); - return; - } - - // 3. créer la discussion + les deux participants - Models.Discussion discussion = new() - { - IsGroup = false, - UserDiscussions = - [ - new UserDiscussion { UserId = currentUserId }, - new UserDiscussion { UserId = target.Id } - ] - }; - - db.Discussions.Add(discussion); - await db.SaveChangesAsync(ct); - - await SendOkAsync(new GetDiscussionDto - { - Id = discussion.Id, - IsGroup = false, - Name = target.Username!, - MembersCount = null - }, ct); - } -} - -public class CreatePrivateDiscussionRequest -{ - public string Username { get; set; } = ""; -} \ No newline at end of file