コード例 #1
0
ファイル: SongAppService.cs プロジェクト: haosui/webmusic
        public async Task <List <SongDto> > SonglistByAuthor(string authot, int limitfrom)
        {
            await CheckGetListPolicyAsync();

            var query = from song in _repository
                        join author in _author on song.author_id equals author.Id
                        join singerr in _singer on song.singer_id equals singerr.Id
                        where author.name.StartsWith(authot)
                        select new { song, author, singerr };

            query = query.Skip(limitfrom).Take(10);
            var queryResult = await AsyncExecuter.ToListAsync(query);


            var DTos = queryResult.Select(x =>
            {
                var dto        = ObjectMapper.Map <Song, SongDto>(x.song);
                dto.singername = x.singerr.name;
                dto.authorname = x.author.name;
                dto.views      = x.song.views;
                return(dto);
            }).ToList();


            return(new List <SongDto>(DTos));
        }
コード例 #2
0
        public virtual async Task <List <Product> > GetProductsInOuIncludingChildrenOptimizedAsync(OrganizationUnit organizationUnit)
        {
            var ouIds = (await _organizationUnitRepository.GetListAsync())
                        .Where(ou => ou.Code.StartsWith(organizationUnit.Code)).Select(ou => ou.Id).ToList();

            return(await AsyncExecuter.ToListAsync((await _productRepository.GetQueryableAsync()).Where(p => ouIds.Contains(p.OrganizationUnitId))));
        }
コード例 #3
0
        public async Task <PagedResultDto <AuthorDto> > GetListAsync(GetAuthorListDto input)
        {
            if (input.Sorting.IsNullOrWhiteSpace())
            {
                input.Sorting = nameof(Author.Name);
            }

            var authors = await _authorRepository.GetListAsync(
                input.SkipCount,
                input.MaxResultCount,
                input.Sorting,
                input.Filter
                );

            var totalCount = await AsyncExecuter.CountAsync(
                _authorRepository.WhereIf(
                    !input.Filter.IsNullOrWhiteSpace(),
                    author => author.Name.Contains(input.Filter)
                    )
                );

            return(new PagedResultDto <AuthorDto>(
                       totalCount,
                       ObjectMapper.Map <List <Author>, List <AuthorDto> >(authors)
                       ));
        }
コード例 #4
0
        public async Task <PagedResultDto <AuthorDto> > GetListAsync(GetAuthorListDto input)
        {
            return(await _cacheService.GetListAsync(AuthorCacheConsts.CacheKey.Key_GetList.FormatWith(input.SkipCount, input.MaxResultCount), async() =>
            {
                if (string.IsNullOrWhiteSpace(input.Sorting))
                {
                    input.Sorting = nameof(Author.Name);
                }

                var authors = await _authorRepository.GetListAsync(
                    input.SkipCount,
                    input.MaxResultCount,
                    input.Sorting,
                    input.Filter
                    );

                var totalCount = await AsyncExecuter.CountAsync(
                    _authorRepository.WhereIf(
                        !string.IsNullOrWhiteSpace(input.Filter),
                        author => author.Name.Contains(input.Filter)
                        )
                    );

                return new PagedResultDto <AuthorDto>(
                    totalCount,
                    ObjectMapper.Map <List <Author>, List <AuthorDto> >(authors)
                    );
            }));
        }
コード例 #5
0
ファイル: UserAppService.cs プロジェクト: LFDCC/aspnet-core
        public async Task <UserDto> Login(LoginDto loginDto)
        {
            var password = _stringEncryptionService.Encrypt(loginDto.Password);
            var user     = await AsyncExecuter.FirstOrDefaultAsync(_userRepository.GetAll().Where(t => t.UserName == loginDto.UserName && t.Password == password));

            return(ObjectMapper.Map <User, UserDto>(user));
        }
コード例 #6
0
        public async Task <BoardMessageListDto> GetBoardMessageListByProjectId(Guid projectId)
        {
            var project = await _projectRepository.GetAsync(x => x.Id == projectId);

            var query = from message in Repository.Where(x => x.ProjectId == projectId)
                        join user in _userRepository on message.CreatorId equals user.Id
                        select new BoardMessageWithUserDto
            {
                Id           = message.Id,
                Title        = message.Title,
                Content      = message.Content,
                CreationTime = message.CreationTime,
                UserName     = user.UserName,
                Name         = user.Name,
                Surname      = user.Surname,
                CommentCount = _boardMessageCommentRepository.Count(x => x.ParentId == message.Id)
            };

            var queryResult = await AsyncExecuter.ToListAsync(query);

            return(new BoardMessageListDto
            {
                ProjectId = projectId,
                ProjectTitle = project.Title,
                ProjectDescription = project.Description,
                BoardMessageList = queryResult.OrderByDescending(x => x.CreationTime).ToList()
            });
        }
コード例 #7
0
        public async Task <List <BlogPost> > GetPagedListAsync(Guid blogId, int skipCount, int maxResultCount,
                                                               string sorting, bool includeDetails = false, CancellationToken cancellationToken = default)
        {
            var token     = GetCancellationToken(cancellationToken);
            var dbContext = await GetDbContextAsync(token);

            var blogPostQueryable = dbContext.Collection <BlogPost>().AsQueryable();
            var usersQueryable    = dbContext.Collection <CmsUser>().AsQueryable();

            IQueryable <BlogPost> queryable = blogPostQueryable
                                              .Where(x => x.BlogId == blogId);

            if (!sorting.IsNullOrWhiteSpace())
            {
                queryable = queryable.OrderBy(sorting);
            }

            var combinedQueryable = queryable
                                    .Join(
                usersQueryable,
                o => o.AuthorId,
                i => i.Id,
                (blogPost, user) => new { blogPost, user })
                                    .Skip(skipCount)
                                    .Take(maxResultCount);

            var combinedResult = await AsyncExecuter.ToListAsync(combinedQueryable, GetCancellationToken(cancellationToken));

            return(combinedResult.Select(s =>
            {
                s.blogPost.Author = s.user;
                return s.blogPost;
            }).ToList());
        }
コード例 #8
0
        public async Task <PagedResultDto <OrganizationDto> > GetListAsync(GetOrganizationListDto input)
        {
            if (input.Sorting.IsNullOrWhiteSpace())
            {
                input.Sorting = nameof(Organization.Name);
            }

            var organizations = await _orgRepository.GetListAsync(
                input.SkipCount,
                input.MaxResultCount,
                input.Sorting,
                input.Filter
                );

            var totalCount = await AsyncExecuter.CountAsync(
                _orgRepository.WhereIf(
                    !input.Filter.IsNullOrWhiteSpace(),
                    organization => organization.Name.Contains(input.Filter)
                    )
                );

            return(new PagedResultDto <OrganizationDto>(
                       totalCount,
                       ObjectMapper.Map <List <Organization>, List <OrganizationDto> >(organizations)
                       ));
        }
コード例 #9
0
        public async Task <StoreOpenDayDto[]> UpdateOpenDayAsync(int branchId, StoreOpenDayDto[] dtoArr)
        {
            var storeBranchE = await Repository.GetAsync(branchId) ?? throw new EntityNotFoundException();

            var openDayEs = await AsyncExecuter.ToListAsync(StoreOpenDayRepository.Where(e => e.StoreBranchID == branchId));

            foreach (var entity in openDayEs)
            {
                var dto = dtoArr.SingleOrDefault(e => e.DayOfWeek == entity.DayOfWeek);
                if (dto == null)
                {
                    await StoreOpenDayRepository.DeleteAsync(entity, autoSave : true);
                }
                else
                {
                    entity.OpeningTime = dto.OpeningTime;
                    entity.ClosingTime = dto.ClosingTime;
                    await StoreOpenDayRepository.UpdateAsync(entity, autoSave : true);
                }
            }

            foreach (var dto in dtoArr)
            {
                var entity = openDayEs.SingleOrDefault(e => e.DayOfWeek == dto.DayOfWeek);
                if (entity == null)
                {
                    var cEntity = ObjectMapper.Map <StoreOpenDayDto, StoreOpenDayEntity>(dto);
                    await StoreOpenDayRepository.InsertAsync(cEntity, autoSave : true);
                }
            }
            openDayEs = await AsyncExecuter.ToListAsync(StoreOpenDayRepository.Where(e => e.StoreBranchID == branchId));

            return(ObjectMapper.Map <StoreOpenDayEntity[], StoreOpenDayDto[]>(openDayEs.ToArray()));
        }
コード例 #10
0
        public override async Task <PagedResultDto <BookDto> > GetListAsync(PagedAndSortedResultRequestDto input)
        {
            //Prepare a query to join books and authors
            var query = from book in Repository
                        join author in _authorRepository on book.AuthorId equals author.Id
                        orderby input.Sorting //TODO: Can not sort like that!
                        select new { book, author };

            query = query
                    .Skip(input.SkipCount)
                    .Take(input.MaxResultCount);

            //异步执行查询并获取列表
            var queryResult = await AsyncExecuter.ToListAsync(query);

            //将查询结果转换为BookDto对象列表
            var bookDtos = queryResult.Select(x =>
            {
                var bookDto        = ObjectMapper.Map <Book, BookDto>(x.book);
                bookDto.AuthorName = x.author.Name;
                return(bookDto);
            }).ToList();

            //使用另一个查询获取总数
            var totalCount = await Repository.GetCountAsync();

            return(new PagedResultDto <BookDto>(
                       totalCount,
                       bookDtos
                       ));
        }
コード例 #11
0
        public async Task <PagedResultDto <RetailCustomerDto> > GetListAsync(GetRetailCustomerListDto input)
        {
            if (input.Sorting.IsNullOrWhiteSpace())
            {
                input.Sorting = nameof(RetailCustomer.Name);
            }

            var retailCustomers = await _retailCustomerRepository.GetListAsync(
                input.SkipCount,
                input.MaxResultCount,
                input.Sorting,
                input.Filter
                );

            var countQuery = _retailCustomerRepository.WhereIf(
                !input.Filter.IsNullOrWhiteSpace(),
                retailCustomer => retailCustomer.Name.Contains(input.Filter)
                );
            var totalCount = await AsyncExecuter.CountAsync(
                countQuery.AsQueryable());

            return(new PagedResultDto <RetailCustomerDto>(
                       totalCount,
                       ObjectMapper.Map <List <RetailCustomer>, List <RetailCustomerDto> >(retailCustomers)
                       ));
        }
コード例 #12
0
        public override async Task <CategoryItemDto> GetAsync(Guid id)
        {
            var categoryItems = await Repository.GetQueryableAsync();

            var query = (from categoryItem in categoryItems
                         join category in _categoryRepository on categoryItem.CategoryId equals category.Id
                         join item in _itemRepository on categoryItem.ItemId equals item.Id

                         where categoryItem.Id == id
                         select new { categoryItem, category, item });



            var queryResult = await AsyncExecuter.FirstOrDefaultAsync(query);

            if (!CurrentTenant.Id.HasValue)
            {
                using (_dataFilter.Disable <IMultiTenant>())
                {
                    queryResult = await AsyncExecuter.FirstOrDefaultAsync(query);
                }
            }
            if (queryResult == null)
            {
                throw new EntityNotFoundException(typeof(CategoryItem), id);
            }

            var categoryItDto = ObjectMapper.Map <CategoryItem, CategoryItemDto>(queryResult.categoryItem);

            categoryItDto.CategoryName = queryResult.category.Name;
            categoryItDto.ItemName     = queryResult.item.Name;

            return(categoryItDto);
        }
コード例 #13
0
ファイル: SongAppService.cs プロジェクト: haosui/webmusic
        public async Task <List <SongDto> > SongListByPlaylist(int limitfrom, Guid idplaylist)
        {
            await CheckGetListPolicyAsync();


            var query = from playlist in _playlist
                        join include in _inclus on playlist.Id equals include.playlist_id
                        join song in _repository on include.song_id equals song.Id
                        where playlist.user_id == _currentUser.Id && playlist.Id == idplaylist
                        select song;

            query = query.Skip(limitfrom).Take(10);
            var queryResult = await AsyncExecuter.ToListAsync(query);


            var DTos = queryResult.Select(x =>
            {
                var dto = ObjectMapper.Map <Song, SongDto>(x);


                return(dto);
            }).ToList();


            return(new List <SongDto>(DTos));
        }
コード例 #14
0
ファイル: SongAppService.cs プロジェクト: haosui/webmusic
        public async Task <List <SongDto> > ListSong(int limitfrom)
        {
            await CheckGetListPolicyAsync();

            /*
             * var query = from song in _repository
             *          join songsinger in _songsinger on song.Id equals songsinger.song_id
             *          join singer in _singer on songsinger.singer_id equals singer.Id
             *          where singer.name.StartsWith(singerr)
             *          select new { song, singer };
             */

            var query = from singer in _singer

                        join song in _repository on singer.Id equals song.singer_id
                        join author in _author on song.author_id equals author.Id
                        select new { song, singer, author };

            query = query.Skip(limitfrom).Take(10);
            var queryResult = await AsyncExecuter.ToListAsync(query);


            var DTos = queryResult.Select(x =>
            {
                var dto        = ObjectMapper.Map <Song, SongDto>(x.song);
                dto.authorname = x.author.name;
                dto.singername = x.singer.name;
                dto.views      = x.song.views;
                return(dto);
            }).ToList();


            return(new List <SongDto>(DTos));
        }
コード例 #15
0
        public override async Task <PagedResultDto <DynamicEntityDto> > GetListAsync(GetDynamicEntityListInput input)
        {
            var modelDefinition = input.ModelDefinitionId.HasValue
                ? await GetModelDefinitionAsync(input.ModelDefinitionId.Value)
                : await _modelDefinitionRepository.GetAsync(x => x.Name == input.ModelName);

            await AuthorizationService.CheckAsync(
                new DynamicEntityOperationInfoModel(modelDefinition, null, input.FilterGroup),
                new DynamicEntityOperationAuthorizationRequirement(DynamicEntityOperationAuthorizationRequirement
                                                                   .GetListName));

            input.ModelDefinitionId = modelDefinition.Id;

            var query = await CreateFilteredQueryAsync(input);

            var totalCount = await AsyncExecuter.CountAsync(query);

            query = ApplySorting(query, input);
            query = ApplyPaging(query, input);

            var entities = await AsyncExecuter.ToListAsync(query);

            return(new PagedResultDto <DynamicEntityDto>(
                       totalCount,
                       entities.Select(MapToGetListOutputDto).ToList()
                       ));
        }
コード例 #16
0
        public async override Task <PagedResultDto <BlogListDto> > GetListAsync(BlogListInput input)
        {
            await CheckGetListPolicyAsync();

            using (input.IgnoreSoftDelete ? DataFilter.Disable <ISoftDelete>() : DataFilter.Enable <ISoftDelete>())
                using (input.IgnoreSoftDeleteForPosts ? DataFilter.Disable <ISoftDelete <Posts.Post> >() : DataFilter.Enable <ISoftDelete <Posts.Post> >())
                //using (input.IgnoreSoftDelete ? DataFilter.Disable<ISoftDelete<Blog>>() : DataFilter.Enable<ISoftDelete<Blog>>())
                {
                    var query = await CreateFilteredQueryAsync(input);

                    //if (AbpQueryFilterDemoConsts.UseCustomFiltering && input.IgnoreSoftDelete && input.IgnoreSoftDeleteForPosts)
                    //{
                    //    query = query.IgnoreAbpQueryFilters();
                    //}

                    var totalCount = AbpQueryFilterDemoConsts.ExecuteCountQuery ? await AsyncExecuter.CountAsync(query) : 2;

                    query = ApplySorting(query, input);
                    query = ApplyPaging(query, input);

                    var entities = await AsyncExecuter.ToListAsync(query);

                    var entityDtos = await MapToGetListOutputDtosAsync(entities);

                    return(new PagedResultDto <BlogListDto>(totalCount, entityDtos));
                }
        }
コード例 #17
0
        public override async Task <PagedResultDto <FileDto> > GetListAsync(FileResultRequestDto input)
        {
            var query = from file in Repository
                        join bot in botRepository on file.BotId equals bot.Id
                        orderby input.Sorting
                        select new { bot, file };

            if (input.BotId.HasValue)
            {
                query = query.Where(q => q.file.BotId.Equals(input.BotId));
            }
            query = query.Skip(input.SkipCount).Take(input.MaxResultCount);

            var queryResult = await AsyncExecuter.ToListAsync(query);

            var fileList = queryResult.Select(f =>
            {
                var fileDto     = ObjectMapper.Map <File, FileDto>(f.file);
                fileDto.BotName = f.bot.Name;
                return(fileDto);
            }).ToList();

            var totalCount = await AsyncExecuter.CountAsync(Repository.WhereIf(input.BotId.HasValue, q => q.BotId.Equals(input.BotId)));

            return(new PagedResultDto <FileDto>(
                       totalCount,
                       fileList
                       ));;
        }
コード例 #18
0
 public virtual async Task <bool> ExistsAsync(Guid blogId, CancellationToken cancellationToken = default)
 {
     return(await AsyncExecuter.AnyAsync(
                await GetQueryableAsync(),
                x => x.Id == blogId,
                cancellationToken));
 }
コード例 #19
0
 public async Task <int> GetCountAsync(Guid blogId, CancellationToken cancellationToken = default)
 {
     return(await AsyncExecuter.CountAsync(
                await WithDetailsAsync(),
                x => x.BlogId == blogId,
                GetCancellationToken(cancellationToken)));
 }
コード例 #20
0
        public async Task <LockupsDto> GetLockupsAsync(int countryId = 0, int stateId = 0)
        {
            var stateList = new List <State>();
            var cityList  = new List <City>();

            var countryList = await _countryRepository.GetListAsync();

            if (countryId > 0)
            {
                var stateQuery = _stateRepository.Where(s => s.Country.Id == countryId);
                stateList = await _asyncExecuter.ToListAsync(stateQuery);

                var cityQuery = _cityRepository.Where(c => c.State.Id == stateId);
                cityList = await AsyncExecuter.ToListAsync(cityQuery);
            }

            var doctorSpecialestList = await _doctorSpecialestRepository.GetListAsync();

            var doctorTitleList = await _doctorTitleRepository.GetListAsync();

            var result = new LockupsDto
            {
                Country         = ObjectMapper.Map <List <Country>, List <CountryDto> >(countryList),
                State           = ObjectMapper.Map <List <State>, List <StateDto> >(stateList),
                City            = ObjectMapper.Map <List <City>, List <CityDto> >(cityList),
                DoctorSpecialty = ObjectMapper.Map <List <DoctorSpecialty>, List <DoctorSpecialtyDto> >(doctorSpecialestList),
                DoctorTitle     = ObjectMapper.Map <List <DoctorTitle>, List <DoctorTitleDto> >(doctorTitleList),
            };

            return(result);
        }
コード例 #21
0
        public async Task <PopularResult <List <VeComStaDto> > > GetVeComStaAsync(VeComStaQueryDto dto)
        {
            var result                 = new PopularResult <List <VeComStaDto> >();
            var oilCostQuery           = _oilCostRepoitory.Where(x => x.RefuelingTime >= dto.StartTime && x.RefuelingTime <= dto.EndTime).GroupBy(x => x.VehicleId).Select(x => new { VeId = x.Key, OilCost = x.Sum(i => i.Expend) });
            var mileageQuery           = _vehicleMileageRepository.Where(x => x.RecordDate >= dto.StartTime && x.RecordDate <= dto.EndTime).GroupBy(x => x.VehicleId).Select(x => new { VeId = x.Key, Mileage = (x.Max(i => i.Mileage) - x.Min(i => i.Mileage)) });
            var maintenanceExpendQuery = _maintenanceRepository.Where(x => x.RecordTime >= dto.StartTime && x.RecordTime <= dto.EndTime).GroupBy(x => x.VehicleId).Select(x => new { VeId = x.Key, maintenanceExpend = x.Sum(i => i.Expend) });
            var all = from v in _vehicleRepository.Where(x => x.IsDelete == 0).WhereIf(dto.UnitId.HasValue, x => x.UnitId == dto.UnitId.Value)
                      join oil in oilCostQuery on v.Id equals oil.VeId into voil
                      from newvoil in voil.DefaultIfEmpty()
                      join mil in mileageQuery on v.Id equals mil.VeId into vmil
                      from newvmil in vmil.DefaultIfEmpty()
                      join mai in maintenanceExpendQuery on v.Id equals mai.VeId into vmai
                      from newvmai in vmai.DefaultIfEmpty()
                      select new VeComStaDto()
            {
                License     = v.License,
                OilCost     = newvoil.OilCost,
                Mileage     = newvmil.Mileage,
                Maintenance = newvmai.maintenanceExpend
            };

            var list = await AsyncExecuter.ToListAsync(all);

            result.Success(list);
            return(result);
        }
コード例 #22
0
ファイル: IDataServer.cs プロジェクト: 372285834/GServer
        public void TryCreatePlayer(UInt16 lnk, ulong accountId, string planeName, string plyName, Byte pro, Byte sex, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            //planesName = ServerFrame.DB.DBConnect.SqlSafeString(planesName);
            plyName = ServerFrame.DB.DBConnect.SqlSafeString(plyName);
            ulong         roleId         = ServerFrame.Util.GenerateObjID(ServerFrame.GameObjectType.Player);
            AsyncExecuter exe            = AsyncExecuteThreadManager.Instance.AsyncExe(false);
            UInt16        returnSerialId = fwd.ReturnSerialId;

            exe.Exec = delegate()
            {
                RPC.PackageWriter        retPkg = new RPC.PackageWriter();
                CSCommon.Data.PlayerData result = mPlayerManager.TryCreatePlayer(Thread.PlayerEnterThread.Instance.DBConnect, mPlanesMgr, accountId, roleId, planeName, plyName, pro, sex);

                //告诉GateServer,创建是否成功
                if (result != null)
                {
                    retPkg.Write((sbyte)1);
                    retPkg.Write(result.RoleDetail);
                    retPkg.DoReturnCommand2(connect, returnSerialId);
                }
                else
                {
                    retPkg.Write((sbyte)-1);
                    retPkg.DoReturnCommand2(connect, returnSerialId);
                }
            };
            //这里要放到一个专门的队列创建
            Thread.PlayerEnterThread.Instance.PushRoleCreator(exe);
        }
コード例 #23
0
        public override async Task <PagedResultDto <ResourceDto> > GetListAsync(GetResourceListDto input)
        {
            var query = _repository.GetQueryableWithAuthorizationStatus(CurrentUser.GetId(), input.AuthorizedOnly)
                        .Where(x => x.Resource.CategoryId == input.CategoryId);

            if (!await _categoryDataPermissionProvider.IsCurrentUserAllowedToManageAsync(input.CategoryId))
            {
                query = query.Where(x => x.Resource.IsPublished);
            }

            var totalCount = await AsyncExecuter.CountAsync(query);

            query = query.PageBy(input);

            var resources = await AsyncExecuter.ToListAsync(query);

            return(new PagedResultDto <ResourceDto>(
                       totalCount,
                       resources.Select(x =>
            {
                var dto = ObjectMapper.Map <Resource, ResourceDto>(x.Resource);
                dto.IsAuthorized = x.IsAuthorized;
                return dto;
            }).ToList()
                       ));
        }
コード例 #24
0
        /// <summary>
        /// (数据库内容本地化demo) 更新指定语言版本
        /// </summary>
        /// <param name="id"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task UpdateAsync(Guid id, ProductDto input)
        {
            using (CultureHelper.Use(input.CultureName))
            {
                var entity = await AsyncExecuter.FirstOrDefaultAsync(_ProductRepository.WithDetails(s => s.Entries).Where(s => s.Id == id));

                entity.ProductCode = input.ProductCode;

                if (!entity.Entries.Any())
                {
                    entity.Entries.Add(new DemoProductLocalizableEntry
                    {
                        CultureName = input.CultureName,
                        Title       = input.Title,
                        Description = input.Description,
                        Name        = input.Name
                    });
                }
                else
                {
                    entity.Entries.First().Title       = input.Title;
                    entity.Entries.First().Description = input.Description;
                    entity.Entries.First().Name        = input.Name;
                }
            }
        }
コード例 #25
0
        public async Task updateLearnAfterAddWord(Guid idlesson)
        {
            var query = (from l in _lessonuserrepository
                         select new { l.UserId }).Distinct();

            var queryResult = await AsyncExecuter.ToListAsync(query);

            var list = queryResult.Select(x =>
            {
                var dto = x.UserId;

                return(dto);
            }).ToList();
            var countOfRows = _repository.Count();
            var w           = _repository.Skip(countOfRows - 1).FirstOrDefault();

            //return w;
            foreach (Guid l in list)
            {
                await _learnrepository.InsertAsync(
                    new Learn
                {
                    UserId      = l,
                    WordId      = w.Id,
                    LessonId    = idlesson,
                    Level       = 0,
                    DateReview  = DateTime.Now.AddHours(400),
                    DateofLearn = DateTime.Now,
                    Note        = ""
                }, autoSave : true);
            }
        }
コード例 #26
0
        public override async Task <PagedResultDto <ProductViewDto> > GetListAsync(GetProductListInput input)
        {
            await CheckGetListPolicyAsync();

            if (input.ShowHidden || input.ShowUnpublished)
            {
                await CheckMultiStorePolicyAsync(input.StoreId, ProductsPermissions.Products.Manage);
            }

            if (await _cache.GetAsync(await GetCacheKeyAsync(input.StoreId), true) == null)
            {
                await BuildStoreProductViewsAsync(input.StoreId);
            }

            var query = await CreateFilteredQueryAsync(input);

            var totalCount = await AsyncExecuter.CountAsync(query);

            query = ApplySorting(query, input);
            query = ApplyPaging(query, input);

            var productViews = await AsyncExecuter.ToListAsync(query);

            var entityDtos = await MapToGetListOutputDtosAsync(productViews);

            return(new PagedResultDto <ProductViewDto>(
                       totalCount,
                       entityDtos
                       ));
        }
コード例 #27
0
    public override async Task <PagedResultDto <BookDto> > GetListAsync(PagedAndSortedResultRequestDto input)
    {
        // Get the IQueryable<Book> from the repository
        var queryable = await Repository.GetQueryableAsync();

        // Prepare a query to join books and authors
        var query = from book in queryable
                    join author in await _authorRepository.GetQueryableAsync() on book.AuthorId equals author.Id
                    select new { book, author };

        // Paging
        query = query
                .OrderBy(NormalizeSorting(input.Sorting))
                .Skip(input.SkipCount)
                .Take(input.MaxResultCount);

        // Execute the query and get a list
        var queryResult = await AsyncExecuter.ToListAsync(query);

        // Convert the query result to a list of BookDto objects
        var bookDtos = queryResult.Select(x =>
        {
            var bookDto        = ObjectMapper.Map <Book, BookDto>(x.book);
            bookDto.AuthorName = x.author.Name;
            return(bookDto);
        }).ToList();

        // Get the total count with another query
        var totalCount = await Repository.GetCountAsync();

        return(new PagedResultDto <BookDto>(
                   totalCount,
                   bookDtos
                   ));
    }
コード例 #28
0
        public override async Task <PagedResultDto <BookDto> > GetListAsync(PagedAndSortedResultRequestDto input)
        {
            //Set a default sorting, if not provided
            if (input.Sorting.IsNullOrWhiteSpace())
            {
                input.Sorting = nameof(Book.Name);
            }

            //Get the books
            var books = await AsyncExecuter.ToListAsync(
                Repository
                .OrderBy(input.Sorting)
                .Skip(input.SkipCount)
                .Take(input.MaxResultCount)
                );

            //Convert to DTOs
            var bookDtos = ObjectMapper.Map <List <Book>, List <BookDto> >(books);

            //Get a lookup dictionary for the related authors
            var authorDictionary = await GetAuthorDictionaryAsync(books);

            //Set AuthorName for the DTOs
            bookDtos.ForEach(bookDto => bookDto.AuthorName = authorDictionary[bookDto.AuthorId].Name);

            //Get the total count with another query (required for the paging)
            var totalCount = await Repository.GetCountAsync();

            return(new PagedResultDto <BookDto>(
                       totalCount,
                       bookDtos
                       ));
        }
コード例 #29
0
        GetListAsync(PagedAndSortedResultRequestDto input)
        {
            //Prepare a query to join books and authors
            var query = from book in Repository
                        join author in _authorRepository on book.AuthorId equals author.Id
                        orderby input.Sorting
                        select new { book, author };

            query = query
                    .Skip(input.SkipCount)
                    .Take(input.MaxResultCount);

            //Execute the query and get a list
            var queryResult = await AsyncExecuter.ToListAsync(query);

            //Convert the query result to a list of BookDto objects
            var bookDtos = queryResult.Select(x =>
            {
                var bookDto        = ObjectMapper.Map <Book, BookDto>(x.book);
                bookDto.AuthorName = x.author.Name;
                return(bookDto);
            }).ToList();

            //Get the total count with another query
            var totalCount = await Repository.GetCountAsync();

            return(new PagedResultDto <BookDto>(
                       totalCount,
                       bookDtos
                       ));
        }
コード例 #30
0
        protected virtual async Task <List <TGetListOutputDto> > GetListAsync(bool IgnoreDisabled, IFilterModel model = null)
        {
            await CheckGetListPolicyAsync();

            var query = CreateFilteredQuery(model);

            if (IgnoreDisabled)
            {
                if (typeof(TEntity).IsAssignableTo <IPassivable>())
                {
                    query = query.Where(e => ((IPassivable)e).IsActive == true);
                }
            }
            query = ApplySorting(query);

            var func = CreateGetListOutputFunc(); // 输出的委托

            if (func != null)
            {
                return(func(query));
            }
            else
            {
                var entities = await AsyncExecuter.ToListAsync(query);

                return(entities.Select(MapToGetListOutputDto).ToList());
            }
        }