Ejemplo n.º 1
0
        public async Task <PushNotificationListModel> PreparePushNotificationListModel(PushNotificationSearchModel searchModel)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            var pushNotifications = await _pushNotificationService.GetPushNotificationsAsync(
                storeIds : searchModel.SelectedStoreIds.ToArray(),
                pushCategoryIds : searchModel.SelectedNotificationCategoryIds.ToArray(),
                title : searchModel.SearchTitle,
                desc : searchModel.SearchDesc,
                stNo : searchModel.SearchStockTakeNo,
                pageIndex : searchModel.Page - 1,
                pageSize : searchModel.PageSize);

            var model = new PushNotificationListModel
            {
                Data = pushNotifications.Select(pushNotification =>
                {
                    var pushNotificationsModel = pushNotification.ToModel <PushNotificationModel>();

                    pushNotificationsModel.Title        = pushNotification.Title;
                    pushNotificationsModel.Description  = pushNotification.Desc;
                    pushNotificationsModel.StockTakeNo  = pushNotification.StockTakeNo;
                    pushNotificationsModel.CategoryName = pushNotification.NotificationCategory?.Name;

                    if (pushNotificationsModel.StockTakeNo != 0)
                    {
                        pushNotificationsModel.StoreName     = GetStockTakeStore(pushNotificationsModel.StockTakeNo);
                        pushNotificationsModel.CategoryName += " (" + pushNotificationsModel.StockTakeNo + ")";
                    }
                    else
                    {
                        pushNotificationsModel.StoreName = String.Join(", ", pushNotification.PushNotificationStores.Select(store => store.Store.P_BranchNo + " - " + store.Store.P_Name));
                    }
                    pushNotificationsModel.CreatedOn        = _dateTimeHelper.ConvertToUserTime(pushNotification.CreatedOnUtc, DateTimeKind.Utc);
                    pushNotificationsModel.LastActivityDate = _dateTimeHelper.ConvertToUserTime(pushNotification.ModifiedOnUtc.GetValueOrDefault(DateTime.UtcNow), DateTimeKind.Utc);

                    return(pushNotificationsModel);
                }),
                Total = pushNotifications.TotalCount
            };

            // sort
            if (searchModel.Sort != null && searchModel.Sort.Any())
            {
                foreach (var s in searchModel.Sort)
                {
                    model.Data = await model.Data.Sort(s.Field, s.Dir);
                }
            }

            // filter
            if (searchModel.Filter != null && searchModel.Filter.Filters != null && searchModel.Filter.Filters.Any())
            {
                var filter = searchModel.Filter;
                model.Data = await model.Data.Filter(filter);

                model.Total = model.Data.Count();
            }

            return(model);
        }