Beispiel #1
0
        private async Task <ProductSetViewmodel> GetProductSetAsync(int id)
        {
            var set = await context.ProductSets
                      .Include(x => x.Division)
                      .Include(x => x.Division.Company)
                      .Include(x => x.Products).FirstOrDefaultAsync(x => x.Id == id);

            var model = new ProductSetViewmodel
            {
                Company = new CompanyViewmodel
                {
                    Id   = set.Division.Company.Id,
                    Name = set.Division.Company.Name
                },
                CompanyId = set.Division.Company.Id,
                Division  = new DivisionViewmodel
                {
                    Id   = set.Division.Id,
                    Name = set.Division.Name
                },
                DivisionId = set.Division.Id,
                Id         = set.Id,
                Name       = set.Name,
                Products   = new List <ProductViewmodel>()
            };

            // Loop through the products and add them to the set.
            foreach (var product in set.Products)
            {
                var p = await context.Products.Include(x => x.Division).FirstOrDefaultAsync(x => x.Id == product.Id);

                model.Products.Add(new ProductViewmodel
                {
                    Company = new CompanyViewmodel
                    {
                        Id   = p.Division.Company.Id,
                        Name = p.Division.Company.Name
                    },
                    CompanyId = p.Division.Company.Id,
                    Division  = new DivisionViewmodel
                    {
                        Id   = p.Division.Id,
                        Name = p.Division.Name
                    },
                    DivisionId = p.Division.Id,
                    Id         = p.Id,
                    Name       = p.Name,
                    Price      = p.Price
                });
            }

            return(model);
        }
Beispiel #2
0
 public async Task OnGetAsync(int?id)
 {
     try
     {
         if (id != null)
         {
             _          = int.TryParse(id.ToString(), out int productSetId);
             ProductSet = await GetProductSetAsync(productSetId);
         }
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, "[Product Set DeleteModel] OnGet failed");
     }
 }
Beispiel #3
0
        public async Task <IActionResult> Edit(ProductSetViewmodel model, int id)
        {
            try
            {
                var division = await context.Divisions.FindAsync(model.DivisionId);

                if (division == null)
                {
                    return(NotFound(new { message = $"Company division with ID {model.DivisionId} was not found." }));
                }

                var set = await context.ProductSets
                          .Include(x => x.Division)
                          .Include(x => x.Products)
                          .FirstOrDefaultAsync(x => x.Id == id);

                set.Division = division;
                set.Name     = model.Name;

                // Remove all products from the set.
                var setProducts = set.Products;
                foreach (var product in setProducts)
                {
                    if (set.Products.Any(x => x.Id == product.Id))
                    {
                        set.Products.Remove(product);
                    }
                }

                // Add the new selection of products to the set.
                var products = new List <Product>();
                foreach (var p in model.Products)
                {
                    var product = await context.Products.FindAsync(p.Id);

                    products.Add(product);
                }
                set.Products = products;
                await context.SaveChangesAsync();

                return(Ok(set));
            }
            catch (Exception ex)
            {
                _logger.LogError($"Unable to update product set", ex);
                return(BadRequest(ex.ToString()));
            }
        }
Beispiel #4
0
        public async Task <IActionResult> Create(ProductSetViewmodel model)
        {
            try
            {
                var division = await context.Divisions.FindAsync(model.DivisionId);

                if (division == null)
                {
                    return(NotFound(new { message = $"Company division with ID {model.DivisionId} was not found." }));
                }

                var set = new ProductSet
                {
                    Division = division,
                    Name     = model.Name
                };
                var products = new List <Product>();
                foreach (var p in model.Products)
                {
                    var product = await context.Products.FindAsync(p.Id);

                    if (product == null)
                    {
                        return(NotFound(new { message = $"Product with ID {p.Id} ({p.Name}) was not found." }));
                    }
                    products.Add(product);
                }
                set.Products = products;

                await context.ProductSets.AddAsync(set);

                await context.SaveChangesAsync();

                return(Ok(set));
            }
            catch (Exception ex)
            {
                _logger.LogError($"Unable to create product set", ex);
                return(BadRequest(ex.ToString()));
            }
        }
Beispiel #5
0
        private async Task <IEnumerable <ProductSetViewmodel> > GetProductSetsAsync()
        {
            var sets = await context.ProductSets
                       .Include(x => x.Division)
                       .Include(x => x.Division.Company)
                       .Include(x => x.Products).ToListAsync();

            var model = new List <ProductSetViewmodel>();

            // Make sure that the Products list belonging to each set is being built correctly.
            foreach (var set in sets)
            {
                // Create a new set VM for each set in the collection.
                var productSet = new ProductSetViewmodel
                {
                    Company = new CompanyViewmodel
                    {
                        Id   = set.Division.Company.Id,
                        Name = set.Division.Company.Name
                    },
                    CompanyId = set.Division.Company.Id,
                    Division  = new DivisionViewmodel
                    {
                        Id   = set.Division.Id,
                        Name = set.Division.Name
                    },
                    DivisionId = set.Division.Id,
                    Id         = set.Id,
                    Name       = set.Name,
                    Products   = new List <ProductViewmodel>()
                };
                // Loop through the products and add them to the set.
                var products = new List <ProductViewmodel>();
                foreach (var product in set.Products)
                {
                    var p = await context.Products
                            .Include(x => x.Division).Include(x => x.Division.Company).FirstOrDefaultAsync(x => x.Id == product.Id);

                    products.Add(new ProductViewmodel
                    {
                        Company = new CompanyViewmodel
                        {
                            Id   = p.Division.Company.Id,
                            Name = p.Division.Company.Name
                        },
                        CompanyId = p.Division.Company.Id,
                        Division  = new DivisionViewmodel
                        {
                            Id   = p.Division.Id,
                            Name = p.Division.Name
                        },
                        DivisionId = p.Division.Id,
                        Id         = p.Id,
                        Name       = p.Name,
                        Price      = p.Price
                    });
                }
                productSet.Products = products;

                // Add the new VM to the model returned by this endpoint.
                model.Add(productSet);
            }

            return(model);
        }
Beispiel #6
0
        public async Task <IActionResult> Get()
        {
            try
            {
                var sets = await context.ProductSets
                           .Include(x => x.Division)
                           .Include(x => x.Division.Company)
                           .Include(x => x.Products).ToListAsync();

                var model = new List <ProductSetViewmodel>();

                // Make sure that the Products list belonging to each set is being built correctly.
                foreach (var set in sets)
                {
                    // Create a new set VM for each set in the collection.
                    var productSet = new ProductSetViewmodel
                    {
                        Company = new CompanyViewmodel
                        {
                            Id   = set.Division.Company.Id,
                            Name = set.Division.Company.Name
                        },
                        CompanyId = set.Division.Company.Id,
                        Division  = new DivisionViewmodel
                        {
                            Id   = set.Division.Id,
                            Name = set.Division.Name
                        },
                        DivisionId = set.Division.Id,
                        Id         = set.Id,
                        Name       = set.Name,
                        Products   = new List <ProductViewmodel>()
                    };
                    // Loop through the products and add them to the set.
                    var products = new List <ProductViewmodel>();
                    foreach (var product in set.Products)
                    {
                        var p = await context.Products
                                .Include(x => x.Division).Include(x => x.Division.Company).FirstOrDefaultAsync(x => x.Id == product.Id);

                        products.Add(new ProductViewmodel
                        {
                            Company = new CompanyViewmodel
                            {
                                Id   = p.Division.Company.Id,
                                Name = p.Division.Company.Name
                            },
                            CompanyId = p.Division.Company.Id,
                            Division  = new DivisionViewmodel
                            {
                                Id   = p.Division.Id,
                                Name = p.Division.Name
                            },
                            DivisionId = p.Division.Id,
                            Id         = p.Id,
                            Name       = p.Name,
                            Price      = p.Price
                        });
                    }
                    productSet.Products = products;

                    // Add the new VM to the model returned by this endpoint.
                    model.Add(productSet);
                }

                return(Ok(model));
            }
            catch (Exception ex)
            {
                _logger.LogError($"Unable to get product sets", ex);
                return(BadRequest(ex.ToString()));
            }
        }
Beispiel #7
0
        public async Task <IActionResult> Get(int id)
        {
            try
            {
                var set = await context.ProductSets
                          .Include(x => x.Division)
                          .Include(x => x.Division.Company)
                          .Include(x => x.Products).FirstOrDefaultAsync(x => x.Id == id);

                if (set == null)
                {
                    return(NotFound(new { message = $"Product set with ID {id} was not found." }));
                }

                var model = new ProductSetViewmodel
                {
                    Company = new CompanyViewmodel
                    {
                        Id   = set.Division.Company.Id,
                        Name = set.Division.Company.Name
                    },
                    CompanyId = set.Division.Company.Id,
                    Division  = new DivisionViewmodel
                    {
                        Id   = set.Division.Id,
                        Name = set.Division.Name
                    },
                    DivisionId = set.Division.Id,
                    Id         = set.Id,
                    Name       = set.Name,
                    Products   = new List <ProductViewmodel>()
                };

                // Loop through the products and add them to the set.
                foreach (var product in set.Products)
                {
                    var p = await context.Products.Include(x => x.Division).FirstOrDefaultAsync(x => x.Id == product.Id);

                    model.Products.Add(new ProductViewmodel
                    {
                        Company = new CompanyViewmodel
                        {
                            Id   = p.Division.Company.Id,
                            Name = p.Division.Company.Name
                        },
                        CompanyId = p.Division.Company.Id,
                        Division  = new DivisionViewmodel
                        {
                            Id   = p.Division.Id,
                            Name = p.Division.Name
                        },
                        DivisionId = p.Division.Id,
                        Id         = p.Id,
                        Name       = p.Name,
                        Price      = p.Price
                    });
                }

                return(Ok(model));
            }
            catch (Exception ex)
            {
                _logger.LogError($"Unable to get product set", ex);
                return(BadRequest(ex.ToString()));
            }
        }