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)); }
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)); }
/// <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)); }