Exemplo n.º 1
0
        public async Task <PagedResultDto <LivestockListDto> > GetLivestock(GetLivestockInput input)
        {
            var query = GetFilteredQuery(input);
            var user  = await UserManager.GetUserByIdAsync(AbpSession.GetUserId());

            var isAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.Admin);

            var isSysAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.SysAdmin);

            var isStateAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.StateAdmin);

            var isCityAdmin = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.CityAdmin);

            var isOfficer = await UserManager.IsInRoleAsync(user, StaticRoleNames.Host.Officer);

            if (isAdmin || isSysAdmin)
            {
                query = query;
            }
            else if (isStateAdmin)
            {
                var union = _unionInfoRepository.FirstOrDefault(x => x.UserId == AbpSession.UserId);
                query = query.Where(x => x.Herd.UnionInfo.StateInfoId == union.StateInfoId);
            }
            else if (isCityAdmin)
            {
                var contractor = _contractorRepository.FirstOrDefault(x => x.UserId == AbpSession.UserId);
                query = query.Where(x => x.Herd.ContractorId == contractor.Id);
            }
            else if (isOfficer)
            {
                var officer = _officerRepository.FirstOrDefault(x => x.UserId == AbpSession.UserId);
                query = query.Where(x => x.OfficerId == officer.Id);
            }
            else
            {
                query = query.Where(x => false);
            }

            var userCount = await query.CountAsync();

            var livestocks = await query
                             .OrderBy(input.Sorting)
                             .PageBy(input)
                             .ToListAsync();

            var livestocksListDto = ObjectMapper.Map <List <LivestockListDto> >(livestocks);

            return(new PagedResultDto <LivestockListDto>(
                       userCount,
                       livestocksListDto
                       ));
        }
Exemplo n.º 2
0
        private IQueryable <Livestock> GetFilteredQuery(GetLivestockInput input)
        {
            var query = QueryableExtensions.WhereIf(
                _livestockRepository.GetAll()
                .Include(x => x.SpeciesInfo)
                .Include(x => x.SexInfo)
                .Include(x => x.Herd)
                .Include(x => x.ActivityInfo)
                .Include(x => x.Officer),
                !input.Filter.IsNullOrWhiteSpace(), u =>
                u.NationalCode.Contains(input.Filter) ||
                u.SpeciesInfo.Name.Contains(input.Filter) ||
                u.Herd.HerdName.Contains(input.Filter) ||
                u.Herd.Name.Contains(input.Filter) ||
                u.Herd.Family.Contains(input.Filter) ||
                u.ActivityInfo.Name.Contains(input.Filter) ||
                u.Officer.Name.Contains(input.Filter) ||
                u.Officer.Family.Contains(input.Filter));

            return(query);
        }