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));
        }
示例#3
0
        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
            });
        }
示例#4
0
        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);
        }