示例#1
0
        public async Task <FarmPageListModel> GetUserFarmsAsync(ClaimsPrincipal claimsPrincipal, FarmFilterModel criterias)
        {
            if (criterias == null)
            {
                criterias = new FarmFilterModel();
            }

            if (string.IsNullOrEmpty(criterias.UserIdentityId))
            {
                return(new FarmPageListModel(new List <FarmModel>())
                {
                    Filter = criterias
                });
            }

            var currentUserId = GetCurrentUserId(claimsPrincipal);
            var userId        = await _userManager.DecryptUserIdAsync(criterias.UserIdentityId);

            var filterRequest = new FarmFilter
            {
                Page            = criterias.Page,
                PageSize        = criterias.PageSize.HasValue && criterias.PageSize < _pagerOptions.PageSize ? criterias.PageSize.Value : _pagerOptions.PageSize,
                Keyword         = criterias.Search,
                CreatedById     = userId,
                CanGetInactived = currentUserId == userId
            };

            try
            {
                var farmPageList = await _farmService.GetAsync(filterRequest);

                var farms = await MapFarmsResultToModelAsync(farmPageList.Collections);

                var farmPage = new FarmPageListModel(farms)
                {
                    Filter      = criterias,
                    TotalPage   = farmPageList.TotalPage,
                    TotalResult = farmPageList.TotalResult
                };

                return(farmPage);
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#2
0
        public async Task <BasePageList <FarmResult> > GetAsync(FarmFilter filter)
        {
            var famrsPageList = await _farmRepository.GetAsync(filter);

            var createdByIds = famrsPageList.Collections.Select(x => x.CreatedById).ToArray();
            var updatedByIds = famrsPageList.Collections.Select(x => x.UpdatedById).ToArray();

            var createdByUsers = await _userRepository.GetNameByIdsAsync(createdByIds);

            var updatedByUsers = await _userRepository.GetNameByIdsAsync(updatedByIds);

            var farmIds  = famrsPageList.Collections.Select(x => x.Id);
            var pictures = await _farmPictureRepository.GetFarmPicturesByFarmIdsAsync(farmIds, new IdRequestFilter <long>
            {
                CanGetDeleted   = filter.CanGetDeleted,
                CanGetInactived = filter.CanGetInactived
            }, FarmPictureType.Thumbnail);

            var userAvatars = await _userPhotoRepository.GetUserPhotosByUserIdsAsync(createdByIds, UserPictureType.Avatar);

            foreach (var farm in famrsPageList.Collections)
            {
                var createdBy = createdByUsers.FirstOrDefault(x => x.Id == farm.CreatedById);
                farm.CreatedBy = createdBy.DisplayName;

                var updatedBy = updatedByUsers.FirstOrDefault(x => x.Id == farm.UpdatedById);
                farm.UpdatedBy = updatedBy.DisplayName;

                var farmPictures = pictures.Where(x => x.FarmId == farm.Id);
                if (farmPictures != null && farmPictures.Any())
                {
                    farm.Pictures = farmPictures.Select(x => new PictureResult
                    {
                        Id = x.PictureId
                    });
                }

                var avatar = userAvatars.FirstOrDefault(x => x.UserId == farm.CreatedById);
                if (avatar != null)
                {
                    farm.CreatedByPhotoCode = avatar.Code;
                }
            }

            return(famrsPageList);
        }
示例#3
0
        public async Task <FarmPageListModel> GetFarmsAsync(FarmFilterModel criterias)
        {
            if (criterias == null)
            {
                criterias = new FarmFilterModel();
            }

            var filterRequest = new FarmFilter()
            {
                Page     = criterias.Page,
                PageSize = criterias.PageSize.HasValue && criterias.PageSize < _pagerOptions.PageSize ? criterias.PageSize.Value : _pagerOptions.PageSize,
                Keyword  = criterias.Search
            };

            if (!string.IsNullOrEmpty(criterias.ExclusiveUserIdentityId))
            {
                filterRequest.ExclusiveUserId = await _userManager.DecryptUserIdAsync(criterias.ExclusiveUserIdentityId);
            }

            try
            {
                var farmPageList = await _farmService.GetAsync(filterRequest);

                var farms = await MapFarmsResultToModelAsync(farmPageList.Collections);

                var farmPage = new FarmPageListModel(farms)
                {
                    Filter      = criterias,
                    TotalPage   = farmPageList.TotalPage,
                    TotalResult = farmPageList.TotalResult
                };

                return(farmPage);
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#4
0
        public async Task <BasePageList <FarmResult> > GetAsync(FarmFilter filter)
        {
            var deletedStatus   = FarmStatus.Deleted.GetCode();
            var inactivedStatus = FarmStatus.Inactived.GetCode();
            var search          = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var farmQuery = _farmRepository.Get(x => (x.StatusId == deletedStatus && filter.CanGetDeleted) ||
                                                (x.StatusId == inactivedStatus && filter.CanGetInactived) ||
                                                (x.StatusId != deletedStatus && x.StatusId != inactivedStatus));

            if (!string.IsNullOrEmpty(search))
            {
                farmQuery = farmQuery.Where(user => user.Name.ToLower().Contains(search) ||
                                            user.Description.ToLower().Contains(search));
            }

            if (filter.ExclusiveUserId.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedById != filter.ExclusiveUserId);
            }

            if (filter.StatusId.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.StatusId == filter.StatusId);
            }

            if (filter.CreatedById.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (filter.UpdatedById.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.UpdatedById == filter.UpdatedById);
            }

            if (filter.FarmTypeId.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.FarmTypeId == filter.FarmTypeId);
            }

            // Filter by register date/ created date
            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTimeOffset.UtcNow);
            }

            var filteredNumber = farmQuery.Select(x => x.Id).Count();

            var query = from farm in farmQuery
                        select new FarmResult
            {
                Id          = farm.Id,
                Name        = farm.Name,
                Address     = farm.Address,
                CreatedById = farm.CreatedById,
                CreatedDate = farm.CreatedDate,
                Description = farm.Description,
                UpdatedById = farm.UpdatedById,
                UpdatedDate = farm.UpdatedDate,
                StatusId    = farm.StatusId
            };

            var farms = await query
                        .OrderByDescending(x => x.CreatedDate)
                        .Skip(filter.PageSize * (filter.Page - 1))
                        .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <FarmResult>(farms)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }