コード例 #1
0
        public async Task <DALProductDTO> FindDTOAsync(int productId)
        {
            var product = await RepoDbSet
                          .Include(p => p.ProductName)
                          .ThenInclude(p => p.Translations)
                          .Include(p => p.ProductDescription)
                          .ThenInclude(desc => desc.Translations)
                          .Include(p => p.ProductInCategories)
                          .ThenInclude(obj => obj.Category)
                          .ThenInclude(category => category.CategoryName)
                          .ThenInclude(name => name.Translations)
                          .Include(p => p.Prices)
                          .Where(p => p.IsDeleted == false && p.Id == productId)
                          .SingleOrDefaultAsync();

            if (product == null)
            {
                return(null);
            }

            var currentPrice = PriceFinder.ForProduct(product, product.Prices, DateTime.Now);

            if (currentPrice == null)
            {
                return(null);
            }

            return(ProductMapper.FromDomain(product));
        }
コード例 #2
0
        public async Task <DALProductDTO> AddAsync(DALProductDTO dto)
        {
            var product = ProductMapper.FromDAL(dto);

            product = (await RepoDbSet.AddAsync(product)).Entity;
            if (product == null)
            {
                return(null);
            }
            await RepoDbContext.Entry(product).Reference(p => p.ProductName).LoadAsync();

            await RepoDbContext.Entry(product.ProductName).Collection(name => name.Translations).LoadAsync();

            await RepoDbContext.Entry(product).Reference(p => p.ProductDescription).LoadAsync();

            await RepoDbContext.Entry(product.ProductDescription).Collection(desc => desc.Translations).LoadAsync();


            return(ProductMapper.FromDomain(product));
        }
コード例 #3
0
        /// <summary>
        /// Edits products name and description, then returns productDTO
        /// </summary>
        /// <param name="dalProductDTO"></param>
        /// <returns></returns>
        public async Task <DALProductDTO> EditAsync(DALProductDTO dalProductDTO)
        {
            var product = await RepoDbSet.FindAsync(dalProductDTO.Id);

            if (product == null)
            {
                return(null);
            }
            await RepoDbContext.Entry(product).Reference(p => p.ProductName).LoadAsync();

            await RepoDbContext.Entry(product.ProductName).Collection(name => name.Translations).LoadAsync();

            await RepoDbContext.Entry(product).Reference(p => p.ProductDescription).LoadAsync();

            await RepoDbContext.Entry(product.ProductDescription).Collection(desc => desc.Translations).LoadAsync();

            product.ProductDescription.SetTranslation(dalProductDTO.Description);
            product.ProductName.SetTranslation(dalProductDTO.Name);

            return(ProductMapper.FromDomain(product));
        }