Ejemplo n.º 1
0
        public async Task <IActionResult> List(SampleSearchViewModel search)
        {
            try
            {
                var viewModel = await _sampleService.List(search);

                return(Ok(new { SampleList = viewModel.List, viewModel.Search.TotalPage }));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                return(StatusCode(500, ex.Message));
            }
        }
Ejemplo n.º 2
0
        public async Task ListTest()
        {
            try
            {
                var search = new SampleSearchViewModel();
                var result = await _sampleService.List(search);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            Assert.Pass();
        }
Ejemplo n.º 3
0
        public async Task <SampleListViewModel> List(SampleSearchViewModel search)
        {
            var filter = Builders <SampleModel> .Filter.Where(q => q.Status == Status.Active);

            if (search.Id.HasValue)
            {
                filter &= Builders <SampleModel> .Filter.Where(q => q.Id == search.Id.Value);
            }

            if (!string.IsNullOrEmpty(search.Title))
            {
                filter &= Builders <SampleModel> .Filter.Where(q => q.Title.Contains(search.Title));
            }

            if (search.CreateFrom.HasValue)
            {
                var createFromDateTime = search.CreateFrom.ToDateTimeFromUnix();
                filter &= Builders <SampleModel> .Filter.Where(q => q.CreateDate >= createFromDateTime);
            }

            if (search.CreateTo.HasValue)
            {
                var createToDateTime = search.CreateFrom.ToDateTimeFromUnix();
                filter &= Builders <SampleModel> .Filter.Where(q => q.CreateDate <= createToDateTime);
            }

            var sort = search.OrderBy switch
            {
                "Id" => search.Order == SortOrder.Descending
                    ? Builders <SampleModel> .Sort.Descending(q => q.Id)
                    : Builders <SampleModel> .Sort.Ascending(q => q.Id),
                "CreateDate" => search.Order == SortOrder.Descending
                    ? Builders <SampleModel> .Sort.Descending(q => q.CreateDate)
                    : Builders <SampleModel> .Sort.Ascending(q => q.CreateDate),
                _ => Builders <SampleModel> .Sort.Descending(x => x.Id)
            };

            var offset = (search.PageNumber - 1) * search.PageSize;

            var list = await _mongoDbContext.Sample
                       .Find(filter)
                       .Sort(sort)
                       .Skip(offset)
                       .Limit(search.PageSize)
                       .ToListAsync();


            search.Total = await _mongoDbContext.Sample.Find(filter).CountDocumentsAsync();

            search.TotalPage = (int)Math.Ceiling((decimal)search.Total / search.PageSize);


            var viewModel = new SampleListViewModel
            {
                Search = search,
                List   = list.Select(q => new SampleViewModel
                {
                    Id    = q.Id,
                    Title = q.Title
                }).ToList()
            };

            viewModel.Search.Total      = search.Total;
            viewModel.Search.TotalPage  = search.TotalPage;
            viewModel.Search.PageNumber = search.PageNumber;
            viewModel.Search.PageSize   = search.PageSize;

            return(viewModel);
        }