hot fix for friends controller

This commit is contained in:
Artemy
2025-07-03 19:46:53 +07:00
parent 565d3249e5
commit d170c6270f
16 changed files with 193 additions and 49 deletions
@@ -0,0 +1,8 @@
namespace Govor.Application.Interfaces.Messages;
public interface IChatService : IMessageSendingService, IMessageManagementService
{
}
@@ -0,0 +1,9 @@
using Govor.Application.Interfaces.Messages.Parameters;
namespace Govor.Application.Interfaces.Messages;
public interface IMessageManagementService
{
Task<Result> EditMessageAsync(Guid editorId, Guid messageId, string newContent);
Task<Result> DeleteMessageAsync(Guid editorId, Guid messageId);
}
@@ -0,0 +1,6 @@
namespace Govor.Application.Interfaces.Messages;
public interface IMessageReactionService
{
}
@@ -0,0 +1,8 @@
using Govor.Application.Interfaces.Messages.Parameters;
namespace Govor.Application.Interfaces.Messages;
public interface IMessageSendingService
{
Task<Result> SendMessageAsync(SendMessage newMessage);
}
@@ -0,0 +1,3 @@
namespace Govor.Application.Interfaces.Messages.Parameters;
public record Result(bool IsSuccess, Exception Exception);
@@ -0,0 +1,8 @@
using Govor.Core.Models;
namespace Govor.Application.Interfaces.Messages.Parameters;
public record SendMedia(Guid Id,
string EncryptedKey,
MediaType Type,
string MimeType);
@@ -0,0 +1,9 @@
namespace Govor.Application.Interfaces.Messages.Parameters;
public record SendMessage(
string EncryptContent,
Guid? ReplyToMessageId,
Guid RecipientId,
Guid FromUserId,
DateTime SendAt,
IEnumerable<SendMedia> Media);
+1 -6
View File
@@ -26,12 +26,8 @@ public class FriendsService : IFriendsService
{
all = await _usersRepository.SearchPotentialFriendsAsync(currentId, query);
var friends = await _friendshipsRepository.FindByUserIdAsync(currentId);
friends = friends.Where(f => f.Status == FriendshipStatus.Accepted).ToList();
return all
.Where(u => u.Id != currentId && !friends.Select(f => f.RequesterId).Contains(u.Id))
.Where(u => u.Id != currentId)
.ToList();
}
catch (NotFoundByKeyException<(string, Guid)> ex)
@@ -94,7 +90,6 @@ public class FriendsService : IFriendsService
var friendships = await _friendshipsRepository.FindByUserIdAsync(userId);
return friendships
.Where(f => f.Status == FriendshipStatus.Accepted)
.Select(f => f.RequesterId == userId ? f.Addressee : f.Requester)
.ToList();
}
@@ -0,0 +1,68 @@
using Govor.Application.Interfaces;
using Govor.Application.Interfaces.Messages;
using Govor.Application.Interfaces.Messages.Parameters;
using Govor.Core.Models;
using Govor.Core.Repositories.Messages;
using Govor.Data;
using Microsoft.EntityFrameworkCore;
namespace Govor.Application.Services;
public class PrivateChatService : IChatService
{
private readonly IVerifyFriendship _verifyFriendship;
private readonly IMessagesRepository _messages;
public PrivateChatService(IMessagesRepository messages, IVerifyFriendship verifyFriendship)
{
_messages = messages;
_verifyFriendship = verifyFriendship;
}
public async Task<Result> SendMessageAsync(SendMessage newMessage)
{
try
{
await _verifyFriendship.VerifyAsync(newMessage.FromUserId, newMessage.RecipientId);
var messageId = Guid.NewGuid();
var message = new Message()
{
Id = messageId,
EncryptedContent = newMessage.EncryptContent,
IsEdited = false,
SenderId = newMessage.FromUserId,
RecipientId = newMessage.RecipientId,
RecipientType = RecipientType.User,
ReplyToMessageId = newMessage.ReplyToMessageId,
MediaAttachments = newMessage.Media.Select(m => new MediaAttachments()
{
Id = m.Id,
MessageId = messageId,
Type = m.Type,
MimeType = m.MimeType,
EncryptedKey = m.EncryptedKey,
}).ToList()
};
await _messages.AddAsync(message);
return new Result(true, null);
}
catch (Exception ex)
{
return new Result(false, ex);
}
}
public Task<Result> EditMessageAsync(Guid editorId, Guid messageId, string newContent)
{
throw new NotImplementedException();
}
public Task<Result> DeleteMessageAsync(Guid editorId, Guid messageId)
{
throw new NotImplementedException();
}
}