Beispiel #1
0
        public async Task <dynamic> Init(long?id)
        {
            var currentUserId = _current.UserId;
            var output        = new Model.Post.Init.Output
            {
                CategoryList = await _repository.CategoryGetQuery(new Model.Repository.CategoryGetQuery.Input
                {
                    ByParentId = 1,
                }).Select(m => new { m.Id, m.Name, m.ParentId, m.OrderNumber }).ToListAsync(),
                BrandList = await _repository.ProductBrandGetQuery().ToListAsync(),
            };

            if (id.HasValue)
            {
                output.Item = await _repository.GetQuery(new Model.Repository.GetQuery.Input
                {
                    Id     = id.Value,
                    UserId = await _userRepository.IsAdmin(currentUserId) ? null : currentUserId,
                }).Select(m => new Model.Post.Item
                {
                    Id             = m.Id,
                    Name           = m.Name,
                    CategoryId     = m.ProductByCategory.Select(m => m.CategoryId).FirstOrDefault(),
                    BrandId        = m.BrandId,
                    Price          = m.Price,
                    PriceSource    = m.PriceSource,
                    SaleOffPercent = m.SaleOffPercent,
                    IsHidden       = m.IsHidden,
                    AllowOrder     = m.AllowOrder,
                    Summary        = m.Summary,
                    Description    = m.Description,
                    Quantity       = m.Quantity,
                }).FirstOrDefaultAsync();

                if (output.Item.PriceSource.HasValue)
                {
                    output.Item.PriceSaleOff = output.Item.Price;
                    output.Item.PriceType    = "saleoff";
                }
                else
                {
                    output.Item.PriceType = "normal";
                }

                output.Item.FileList = await _fileRepository.ByCategoryGetQuery(new File.Model.Repository.ByCategoryGetQueryModel.Input
                {
                    CategoryId = (long)Const.FileCategory.Product,
                    ItemId     = output.Item.Id.ToString(),
                }).OrderBy(m => m.OrderNumber).Select(m => new Model.Post.File
                {
                    Id = m.FileId,
                }).ToListAsync();

                output.Item.DescriptionFileList = await _fileRepository.ByCategoryGetQuery(new File.Model.Repository.ByCategoryGetQueryModel.Input
                {
                    CategoryId = (long)Const.FileCategory.Product,
                    ItemId     = output.Item.Id.ToString(),
                    ItemField  = "description",
                }).OrderBy(m => m.OrderNumber).Select(m => new Model.Post.File
                {
                    Id = m.FileId,
                }).ToListAsync();
            }

            return(output);
        }
Beispiel #2
0
        public async Task <Model.Manage.GetList.Output> GetList(Model.Manage.GetList.Input input)
        {
            var CurrentUserId = _current.UserId;

            int pageSize = 20;

            bool?allowOrder = null;

            if (input.AllowOrder)
            {
                allowOrder = false;
            }

            bool?isHidden = null;

            if (input.IsHidden)
            {
                isHidden = input.IsHidden;
            }

            var model = _repository.GetQuery(new Model.Repository.GetQuery.Input
            {
                UserId       = await _userRepository.IsAdmin(CurrentUserId) ? null : CurrentUserId,
                ByCategoryId = input.CategoryId,
                ByBrandId    = input.BrandId,
                AllowOrder   = allowOrder,
                IsHidden     = isHidden,
                Keyword      = input.Keyword,
                DateFrom     = input.DateFrom,
                DateTo       = input.DateTo,
                OrderBy      = input.OrderBy,
            });

            var itemPage = await PageList <Model.Manage.GetList.Item> .CreateAsync(model.Select(m => new Model.Manage.GetList.Item
            {
                Id             = m.Id,
                Name           = m.Name,
                Price          = m.Price,
                PriceSource    = m.PriceSource,
                SaleOffPercent = m.SaleOffPercent,

                CategoryName = m.ProductByCategory.Select(n => n.Category.Name).FirstOrDefault(),
                BrandName    = m.Brand.Name,
                DateCreated  = m.DateCreated,
                IsHidden     = m.IsHidden,
                AllowOrder   = m.AllowOrder,
                Quantity     = m.Quantity,
            }), input.PageIndex, pageSize);

            foreach (var item in itemPage)
            {
                item.ImageId = await _fileRepository.GetFirstIdByItem(item.Id.ToString(), (long)Const.FileCategory.Product);
            }

            return(new Model.Manage.GetList.Output
            {
                ItemList = itemPage,
                PageIndex = itemPage.PageIndex,
                PageSize = pageSize,
                TotalItems = itemPage.TotalItems,
                TotalPages = itemPage.TotalPages,
            });
        }