Advertisement
SMASIF

Pagination Part II (Controller Function)

Nov 3rd, 2020
2,160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.70 KB | None | 0 0
  1. public void GetPaginatedNotifications(NotificationVM notify, int EmpId)
  2.         {
  3.             List<NotifierSummaryDto> notifierSummaries = new List<NotifierSummaryDto>();
  4.             var Today = DateTime.Now.Date;
  5.  
  6.  
  7.             var Query = (from n in notifyDb.NotificationMasters.Where(x=>x.CompanyId==companyId)
  8.                           join nt in notifyDb.NotificationTypes on n.NotificationTypeId equals nt.Id
  9.                           //  join empN in notifyDb.ApplicationNotifications.Where(x => x.EmployeeId == EmpId && x.IsSeen==0) on n.NotificationId equals empN.NotificationId into emm from emn1 in emm.DefaultIfEmpty()
  10.                           where n.AppDisplay == 1
  11.                           select new NotifierSummaryDto
  12.                           {
  13.                               IsJsonData=n.IsTextNotifyJsonFormatted,
  14.                               IsAppDisplay = n.AppDisplay == 0 ? "No" : "Yes",
  15.                               IsEmpSpecific = n.EmpSpecific == 0 ? "No" : "Yes",
  16.                               EntryBy = n.EntryBy,
  17.                               TextNotify = n.TextNotify,
  18.                               EmailBody = n.EmailBody,
  19.                               IsModuleSpecific = n.ModuleSpecific == 0 ? "No" : "Yes",
  20.                               NotificationId = n.NotificationId,
  21.                               AppDisplay = n.AppDisplay,
  22.                               EmpSpecific = n.EmpSpecific,
  23.                               ModuleSpecific = n.ModuleSpecific,
  24.                               ModuleId = n.ModuleId,
  25.                               SubModuleId = n.SubModuleId,
  26.                               FeatureId = n.FeatureId,
  27.                               ApplicationImmediate = notifyDb.ApplicationNotifications.Where(x => x.NotificationId == n.NotificationId).Select(x => x.Immediate).FirstOrDefault(),
  28.                               AppNotifyDisplayEnd = notifyDb.ApplicationNotifications.Where(x => x.NotificationId == n.NotificationId).Select(x => x.DisplayEnd).FirstOrDefault(),
  29.                               AppNotifyDisplayStart = notifyDb.ApplicationNotifications.Where(x => x.NotificationId == n.NotificationId).Select(x => x.DisplayStart).FirstOrDefault(),
  30.  
  31.                               EmpId = notifyDb.ApplicationNotifications.Where(x => x.NotificationId == n.NotificationId && x.EmployeeId == EmpId).Select(x => x.EmployeeId).FirstOrDefault(),
  32.                               EntryDate = n.EntryDate,
  33.                               IsSeen = notifyDb.EmployeeNotificationVisibilityStatus.Where(x => x.NotificationId == n.NotificationId).Select(x => x.IsSeen).FirstOrDefault()
  34.  
  35.                           }).Where(x => x.IsSeen != 1).Where(x => (x.EmpSpecific == 1 && x.EmpId == EmpId) || (x.EmpSpecific == 0)).OrderByDescending(x => x.NotificationId);
  36.  
  37.        
  38.             var pager = new Pager(Query.Count(), notify.page, notify.ItemPerPage);
  39.  
  40.             notify.SummaryList = Query.Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize).ToList();
  41.  
  42.             notify.pager = pager;
  43.  
  44.  
  45.  
  46.             foreach (var item in notify.SummaryList)
  47.             {
  48.  
  49.  
  50.                 if (item.EmpSpecific == 1)
  51.                 {
  52.                     if (item.EmpId != EmpId)
  53.                         continue;
  54.                 }
  55.  
  56.                 if (item.CompanyId != null)
  57.                 {
  58.                     if (item.CompanyId != companyId)
  59.                     {
  60.                         continue;
  61.                     }
  62.                 }
  63.  
  64.  
  65.                 item.EmpId = EmpId;
  66.  
  67.                 if (item.IsJsonData == 1)
  68.                 {
  69.                     item.NotificationText = DesirializeString(item.TextNotify);
  70.                 }
  71.                 if (item.ApplicationImmediate != -1)
  72.                 {
  73.                     if (item.ApplicationImmediate == 1)
  74.                     {
  75.  
  76.                         item.NotificationServiceTime = CalculateLengthOfNotificationService(item.EntryDate);
  77.                         notifierSummaries.Add(item);
  78.                     }
  79.                     else
  80.                     {
  81.                         if (item.AppNotifyDisplayStart <= Today && item.AppNotifyDisplayEnd >= Today)
  82.                         {
  83.                             item.NotificationServiceTime = CalculateLengthOfNotificationService(item.AppNotifyDisplayStart);
  84.                             notifierSummaries.Add(item);
  85.                         }
  86.                     }
  87.                 }
  88.                 else
  89.                 {
  90.                     item.NotificationServiceTime = CalculateLengthOfNotificationService(item.EntryDate);
  91.                     notifierSummaries.Add(item);
  92.                 }
  93.             }
  94.  
  95.             notify.SummaryList = notifierSummaries;
  96.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement