/// <summary> /// Add Notification /// </summary> /// <param name="userId"></param> /// <param name="subject"></param> /// <param name="htmlText"></param> /// <returns></returns> public async Task <RServiceResult <RUserNotificationViewModel> > PushNotification(Guid userId, string subject, string htmlText) { try { RUserNotification notification = new RUserNotification() { UserId = userId, DateTime = DateTime.Now, Status = NotificationStatus.Unread, Subject = subject, HtmlText = htmlText }; _context.Notifications.Add(notification); await _context.SaveChangesAsync(); return(new RServiceResult <RUserNotificationViewModel> ( new RUserNotificationViewModel() { Id = notification.Id, DateTime = notification.DateTime, Status = notification.Status, Subject = notification.Subject, HtmlText = notification.HtmlText } )); } catch (Exception exp) { return(new RServiceResult <RUserNotificationViewModel>(null, exp.ToString())); } }
/// <summary> /// Switch Notification Status /// </summary> /// <param name="notificationId"></param> /// <param name="userId"></param> /// <returns>updated notification object</returns> public async Task <RServiceResult <RUserNotificationViewModel> > SwitchNotificationStatus(Guid notificationId, Guid userId) { try { RUserNotification notification = await _context.Notifications.Where(n => n.Id == notificationId && n.UserId == userId).SingleAsync(); notification.Status = notification.Status == NotificationStatus.Unread ? NotificationStatus.Read : NotificationStatus.Unread; _context.Notifications.Update(notification); await _context.SaveChangesAsync(); return(new RServiceResult <RUserNotificationViewModel> ( new RUserNotificationViewModel() { Id = notification.Id, DateTime = notification.DateTime, Status = notification.Status, Subject = notification.Subject, HtmlText = notification.HtmlText } )); } catch (Exception exp) { return(new RServiceResult <RUserNotificationViewModel>(null, exp.ToString())); } }
/// <summary> /// Delete Notification /// </summary> /// <param name="notificationId">if empty deletes all read notifications</param> /// <param name="userId"></param> /// <returns></returns> public async Task <RServiceResult <bool> > DeleteNotification(Guid notificationId, Guid userId) { try { if (notificationId == Guid.Empty) { var notifications = await _context.Notifications.Where(n => n.UserId == userId && n.Status == NotificationStatus.Read).ToListAsync(); _context.Notifications.RemoveRange(notifications); await _context.SaveChangesAsync(); } else { RUserNotification notification = await _context.Notifications.Where(n => n.Id == notificationId && n.UserId == userId).SingleAsync(); _context.Notifications.Remove(notification); await _context.SaveChangesAsync(); } return(new RServiceResult <bool>(true)); } catch (Exception exp) { return(new RServiceResult <bool>(false, exp.ToString())); } }