public ApiProduct Put([FromBody] ProductApiPutRequest productData) { if (string.IsNullOrWhiteSpace(productData.Name)) { throw new ForagerApiException(ForagerApiExceptionCode.InvalidNameProvided); } var currentUserEmail = userInformation.GetUserEmail(); var currentUser = context.GetUserByEmail(currentUserEmail); var dataProduct = new Product() { Name = productData.Name.Trim(), Description = productData.Description?.Trim(), Units = productData.Units?.Trim(), CreatedBy = currentUser, CreatedOn = DateTime.Now }; dataProduct.FamilyProducts = currentUser.Families.Select(f => new FamilyProducts { Family = f, Product = dataProduct }).ToArray(); context.Products.Add(dataProduct); context.SaveChanges(); var product = ApiProduct.FromProduct(dataProduct); return(product); }
public ApiProduct Get(int id) { var existingProduct = context.Products.Include(p => p.Variants).SingleOrDefault(p => p.Id == id); if (existingProduct == null) { throw new ForagerApiException(ForagerApiExceptionCode.ListNotFound); } var product = ApiProduct.FromProduct(existingProduct); return(product); }
public ApiProduct[] PostAll(int p = 0, int s = 0, [FromBody] int[] ignores = null) { var currentUserEmail = userInformation.GetUserEmail(); var currentUser = context.GetUserByEmail(currentUserEmail); var familiesToInclude = currentUser.Families.Select(f => f.Id).Concat(new[] { ForagerContext.UniversalFamilyId }).ToArray(); var numberToTake = p == 0 ? context.Products.Count() : p; var products = context.Families .Include(p => p.FamilyProducts) .Where(f => familiesToInclude.Contains(f.Id)) .SelectMany(f => f.FamilyProducts) .Select(fp => fp.Product) .Where(p => ignores == null || !ignores.Contains(p.Id)) .OrderBy(p => p.Id) .Distinct() .OrderBy(p => p.Name) .Skip(s) .Take(numberToTake) .Select(p => ApiProduct.FromProduct(p)) .ToArray(); return(products); }
public ApiProduct Post(int id, [FromBody] ProductApiPutRequest productData) { if (string.IsNullOrWhiteSpace(productData.Name)) { throw new ForagerApiException(ForagerApiExceptionCode.InvalidNameProvided); } var existingProduct = context.Products.Include(p => p.Variants).SingleOrDefault(f => f.Id == id); if (existingProduct == null) { throw new ForagerApiException(ForagerApiExceptionCode.ProductNotFound); } existingProduct.Name = productData.Name.Trim(); existingProduct.Description = productData.Description?.Trim(); existingProduct.Units = productData.Units?.Trim(); context.SaveChanges(); var product = ApiProduct.FromProduct(existingProduct); return(product); }