示例#1
0
        public async Task <AdminContactIndexDto> GetAdminIndexAsync(
            AdminContactIndexFilter filter)
        {
            filter.CheckArgumentIsNull(nameof(filter));

            var query = _repository
                        .Query()
                        .Where(_ => _.WebsiteId == _userContext.WebsiteId)
                        .SetFilter(filter);

            var result = new AdminContactIndexDto();

            result.DataSource.TotalCount = await query.CountAsync();

            result.DataSource.PageIndex = filter.PageIndex;
            result.DataSource.PageSize  = filter.PageSize;

            query = query
                    .Skip(filter.StartIndex)
                    .Take(filter.PageSize);

            var contacts = await query.ToListAsync();

            await setSentMessagesToViewed(contacts);
            await setViewedMessagesToRead(contacts);

            result.DataSource.Items = contacts
                                      .Select(_ => _.Adapt <AdminContactIndexItemDto>())
                                      .ToList();

            return(await Task.FromResult(result));
        }
示例#2
0
        public async Task <IActionResult> Index(AdminContactIndexViewModel model)
        {
            var filter = new AdminContactIndexFilter {
                Email     = model.Filter.Email,
                Name      = model.Filter.Name,
                PageIndex = model.Filter.PageIndex,
                PageSize  = model.Filter.PageSize
            };

            var result = await _contactService.GetAdminIndexAsync(filter);

            model = result.Adapt <AdminContactIndexViewModel>();
            model.DataSource.HasFilter = true;

            return(View(model));
        }
示例#3
0
        public static IQueryable <Contact> SetFilter(
            this IQueryable <Contact> query,
            AdminContactIndexFilter filter)
        {
            if (!filter.Name.IsNullOrEmpty())
            {
                query = query.Where(_ => _.Name.Contains(filter.Name));
            }

            if (!filter.Email.IsNullOrEmpty())
            {
                query = query.Where(_ => _.Email.Contains(filter.Email));
            }

            return(query);
        }
示例#4
0
        public async Task <IActionResult> Index(int page = 1)
        {
            var filter = new AdminContactIndexFilter {
                PageSize  = 10,
                PageIndex = page - 1
            };
            var result = await _contactService.GetAdminIndexAsync(filter);

            var model = result.Adapt <AdminContactIndexViewModel>();

            model.Filter.PageIndex = filter.PageIndex;
            model.Filter.PageSize  = filter.PageSize;

            return(await Task.FromResult(
                       View(model)
                       ));
        }