34 lines
1.3 KiB
C#
34 lines
1.3 KiB
C#
using Back.Data.Contracts;
|
|
using Back.Data.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Back.Services
|
|
{
|
|
public class servNotification
|
|
{
|
|
private readonly IAsyncRepository<Notification> _NotificationRepo;
|
|
private readonly IAsyncRepository<UserNotfi> _UserNotfiRepo;
|
|
public servNotification(IAsyncRepository<Notification> NotificationRepo, IAsyncRepository<UserNotfi> userNotfiRepo)
|
|
{
|
|
_NotificationRepo = NotificationRepo;
|
|
_UserNotfiRepo = userNotfiRepo;
|
|
}
|
|
public async Task<bool> ReadNotification(int UserID,int ntID)
|
|
{
|
|
if (!await _UserNotfiRepo.Get(w => w.UserID == UserID && w.NotificationID == ntID).AnyAsync())
|
|
return await _UserNotfiRepo.AddBoolResultAsync(new UserNotfi
|
|
{
|
|
NotificationID = ntID,
|
|
UserID = UserID,
|
|
});
|
|
else return true;
|
|
}
|
|
public async Task<List<Notification>> GetNotifications(int UserID)
|
|
{
|
|
var readmsg=await _UserNotfiRepo.Get(w => w.UserID == UserID).Select(s=>s.NotificationID).ToListAsync();
|
|
|
|
return await _NotificationRepo.Get(w=>(string.IsNullOrEmpty(w.ForUser) || w.ForUser.Contains("/"+UserID.ToString()+"/"))&& !readmsg.Contains(w.ID)).ToListAsync();
|
|
}
|
|
}
|
|
}
|