public virtual ActionResult GetAll([DataSourceRequest] DataSourceRequest request, string orderNumber, bool?includeReaded, DateTime?dateFrom, DateTime?dateTo, int?type, bool onlyPriority) { LogI("GetAll, orderNumber=" + orderNumber + ", includeReaded=" + includeReaded + ", dateFrom=" + dateFrom + ", dateTo=" + dateTo + ", type=" + type + ", onlyPriority=" + onlyPriority); var searchFilter = new NotificationFilterViewModel() { OrderNumber = orderNumber, InlcudeReaded = includeReaded ?? false, DateFrom = dateFrom, DateTo = dateTo, Type = type, OnlyPriority = onlyPriority }; var items = NotificationViewModel.GetAll(Db, Time, searchFilter); var dataSource = items.ToDataSourceResult(request); return(Json(dataSource, JsonRequestBehavior.AllowGet)); }
public virtual ActionResult Index(NotificationType?type) { LogI("Index"); var model = new NotificationFilterViewModel(); model.Type = (int?)type; return(View(model)); }
public async Task <DataTablesPagedResults <NotificationViewModel> > GetDataTableAsync(DataTablesParameters table, NotificationFilterViewModel filters, Lang lng = Lang.KU) { IQueryable <Notification> query = _repository.Table; if (!string.IsNullOrEmpty(filters.FilterString)) { var mobileWithoutZero = ""; var isNumeric = double.TryParse(filters.FilterString, out _); if (isNumeric) { if (filters.FilterString.Length > 10) { mobileWithoutZero = filters.FilterString.Substring(filters.FilterString.Length - 10); } } query = query.Where(x => x.Title.Contains(filters.FilterString) || x.Title_Ku.Contains(filters.FilterString) || x.Title_Ar.Contains(filters.FilterString) || x.Text.Contains(filters.FilterString) || x.Text_Ku.Contains(filters.FilterString) || x.Text_Ar.Contains(filters.FilterString) || x.Description.Contains(filters.FilterString) || x.Description_Ku.Contains(filters.FilterString) || x.Description_Ar.Contains(filters.FilterString)); } if (filters.FromDate != null) { query = query.Where(a => a.CreatedAt >= filters.FromDate); } if (filters.ToDate != null) { filters.ToDate = DateTime.Parse($"{filters.ToDate.Value.ToShortDateString()} 23:59:59"); query = query.Where(a => a.CreatedAt <= filters.ToDate); } if (table.Order != null && table.Order.Any()) { var orderIndex = table.Order[0].Column; var orderDir = table.Order[0].Dir; if (orderIndex == 1) { query = orderDir == DataTablesOrderDir.DESC ? query.OrderByDescending(x => lng == Lang.EN ? x.Title : lng == Lang.AR ? x.Title_Ar : x.Title_Ku) : query.OrderBy(x => lng == Lang.EN ? x.Title : lng == Lang.AR ? x.Title_Ar : x.Title_Ku); } else if (orderIndex == 2) { query = orderDir == DataTablesOrderDir.DESC ? query.OrderByDescending(x => x.CreatedAt) : query.OrderBy(x => x.CreatedAt); } else if (orderIndex == 3) { query = orderDir == DataTablesOrderDir.DESC ? query.OrderByDescending(x => x.ValidUntil) : query.OrderBy(x => x.ValidUntil); } } else { query = query.OrderByDescending(x => x.CreatedAt); } var size = await query.CountAsync(); var items = await query .AsNoTracking() .Skip((table.Start / table.Length) * table.Length) .Take(table.Length) .Select(x => new NotificationViewModel { Id = x.Id, Title = lng == Lang.EN ? x.Title : lng == Lang.AR ? x.Title_Ar : x.Title_Ku, CreateDate = x.CreatedAt.ToString("yyyy-MM-dd HH:mm:ss"), ValidUntil = x.ValidUntil.ToString("yyyy-MM-dd"), }) .ToListAsync(); return(new DataTablesPagedResults <NotificationViewModel> { Items = items, TotalSize = size }); }
public static IQueryable <NotificationViewModel> GetAll(IUnitOfWork db, ITime time, NotificationFilterViewModel filter) { var fromDate = time.GetAppNowTime().AddYears(-1); var query = from n in db.Notifications.GetAllAsDto() join sh in db.OrderShippingInfos.GetAllAsDto() on n.RelatedEntityId equals sh.TrackingNumber into withSh from sh in withSh.DefaultIfEmpty() join o in db.Orders.GetAll() on sh.OrderId equals o.Id into withOr from o in withOr.DefaultIfEmpty() where !o.OrderDate.HasValue || o.OrderDate > fromDate select new NotificationViewModel() { Id = n.Id, Type = n.Type, AdditionalParams = n.AdditionalParams, Message = n.Message, Tag = n.Tag, RelatedEntityId = n.RelatedEntityId, RelatedEntityType = n.RelatedEntityType, IsRead = n.IsRead, ReadDate = n.ReadDate, ReadBy = n.ReadBy, ShippingMethodId = sh.ShippingMethod.Id, CreateDate = n.CreateDate, EntityDate = o.OrderDate }; if (!String.IsNullOrEmpty(filter.OrderNumber)) { query = query.Where(n => n.RelatedEntityId == filter.OrderNumber || n.Tag == filter.OrderNumber); } if (filter.DateFrom.HasValue) { query = query.Where(n => n.CreateDate >= filter.DateFrom.Value); } if (filter.DateTo.HasValue) { query = query.Where(n => n.CreateDate <= filter.DateTo.Value); } if (filter.Type.HasValue) { query = query.Where(n => n.Type == filter.Type.Value); } if (filter.OnlyPriority) { var excludeShippingMethods = new List <int> { ShippingUtils.FirstClassShippingMethodId, ShippingUtils.AmazonFirstClassShippingMethodId, ShippingUtils.IBCCEPePocketMethodId, ShippingUtils.IBCIPAMethodId, }; query = query.Where(n => !n.ShippingMethodId.HasValue || !excludeShippingMethods.Contains(n.ShippingMethodId.Value)); } if (!filter.InlcudeReaded && String.IsNullOrEmpty(filter.OrderNumber)) { query = query.Where(n => !n.IsRead); } return(query); }