47 lines
1.6 KiB
C#
47 lines
1.6 KiB
C#
using salesbook.Shared.Core.Dto.PageState;
|
|
using salesbook.Shared.Core.Interface;
|
|
using salesbook.Shared.Core.Interface.IntegryApi;
|
|
|
|
namespace salesbook.Shared.Core.Services;
|
|
|
|
public class NotificationService(
|
|
IIntegryNotificationRestClient integryNotificationRestClient,
|
|
NotificationState Notification
|
|
) : INotificationService
|
|
{
|
|
public async Task LoadNotification()
|
|
{
|
|
var allNotifications = await integryNotificationRestClient.Get();
|
|
if (allNotifications == null) return;
|
|
|
|
var allIds = allNotifications.Select(n => n.Id).ToHashSet();
|
|
|
|
Notification.ReceivedNotifications = Notification.ReceivedNotifications
|
|
.Where(r => !allIds.Contains(r.Id))
|
|
.ToList();
|
|
|
|
Notification.UnreadNotifications = allNotifications
|
|
.Where(x =>
|
|
x.WtbDeviceNotifications == null ||
|
|
x.WtbDeviceNotifications.Any(y => y.ReadDate == null))
|
|
.ToList();
|
|
|
|
Notification.NotificationsRead = allNotifications
|
|
.Where(x =>
|
|
x.WtbDeviceNotifications != null &&
|
|
x.WtbDeviceNotifications.All(y => y.ReadDate != null))
|
|
.ToList();
|
|
}
|
|
|
|
public void OrderNotificationList()
|
|
{
|
|
Notification.ReceivedNotifications = Notification.ReceivedNotifications
|
|
.OrderByDescending(x => x.StartDate).ToList();
|
|
|
|
Notification.UnreadNotifications = Notification.UnreadNotifications
|
|
.OrderByDescending(x => x.StartDate).ToList();
|
|
|
|
Notification.NotificationsRead = Notification.NotificationsRead
|
|
.OrderByDescending(x => x.StartDate).ToList();
|
|
}
|
|
} |