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; } }
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); }
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; } }
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); }