Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }