コード例 #1
0
ファイル: OfficerAppService.cs プロジェクト: 562127386/Breed
        public async Task <PagedResultDto <OfficerListDto> > GetOfficer(GetOfficerInput 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);

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

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

            var officersListDto = ObjectMapper.Map <List <OfficerListDto> >(officers);

            return(new PagedResultDto <OfficerListDto>(
                       userCount,
                       officersListDto
                       ));
        }
コード例 #2
0
ファイル: OfficerAppService.cs プロジェクト: 562127386/Breed
        private IQueryable <Officer> GetFilteredQuery(GetOfficerInput input)
        {
            var query = QueryableExtensions.WhereIf(_officerRepository.GetAll()
                                                    .Include(x => x.Contractor)
                                                    .Include(x => x.StateInfo),
                                                    !input.Filter.IsNullOrWhiteSpace(), u =>
                                                    u.Name.Contains(input.Filter) ||
                                                    u.Family.Contains(input.Filter) ||
                                                    u.NationalCode.Replace("-", "").Contains(input.Filter) ||
                                                    u.MobileNumber.Replace("-", "").Contains(input.Filter) ||
                                                    u.Contractor.Name.Contains(input.Filter) ||
                                                    u.Contractor.Family.Contains(input.Filter) ||
                                                    u.Contractor.FirmName.Contains(input.Filter) ||
                                                    u.StateInfo.Name.Contains(input.Filter) ||
                                                    u.Code.Contains(input.Filter));

            return(query);
        }