Ejemplo n.º 1
0
        public async Task <PagedResultDto <ContractorListDto> > GetContractor(GetContractorInput input)
        {
            var query = GetFilteredQuery(input)
                        .Include(x => x.UnionInfo)
                        .ThenInclude(x => x.StateInfo).AsQueryable();
            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);

            if (isAdmin || isSysAdmin)
            {
                query = query;
            }
            else if (isStateAdmin)
            {
                var union = _unionInfoRepository.FirstOrDefault(x => x.UserId == AbpSession.UserId);
                query = query.Where(x => x.UnionInfoId == union.Id);
            }
            else
            {
                query = query.Where(x => false);
            }
            var userCount = await query.CountAsync();

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

            var contractorsListDto = ObjectMapper.Map <List <ContractorListDto> >(contractors);

            return(new PagedResultDto <ContractorListDto>(
                       userCount,
                       contractorsListDto
                       ));
        }
Ejemplo n.º 2
0
        private IQueryable <Contractor> GetFilteredQuery(GetContractorInput input)
        {
            var query = QueryableExtensions.WhereIf(
                _contractorRepository.GetAll()
                .Include(x => x.FirmType)
                .Include(x => x.StateInfo)
                .Include(x => x.CityInfo)
                .Include(x => x.RegionInfo)
                .Include(x => x.VillageInfo)
                .Include(x => x.UnionInfo),
                !input.Filter.IsNullOrWhiteSpace(), u =>
                u.Name.Contains(input.Filter) ||
                u.Family.Contains(input.Filter) ||
                u.StateInfo.Name.Contains(input.Filter) ||
                u.CityInfo.Name.Contains(input.Filter) ||
                u.RegionInfo.Name.Contains(input.Filter) ||
                u.VillageInfo.Name.Contains(input.Filter) ||
                u.UnionInfo.UnionName.Contains(input.Filter) ||
                u.NationalCode.Replace("-", "").Contains(input.Filter) ||
                u.FirmName.Contains(input.Filter) ||
                u.Code.Contains(input.Filter));

            return(query);
        }