public async Task <IActionResult> AddCar(AddNewProductModel model) { var newCar = model.NewCar; newCar.Make = newCar.Make.ToUpper(); newCar.Model = newCar.Model.ToUpper(); var existing = await _context.Car.Include(x => x.CarProducts).ThenInclude(x => x.Car) .FirstOrDefaultAsync(x => (x.Make == newCar.Make && x.Model == newCar.Model) || x.CarId == newCar.CarId); if (existing != null) { existing.Make = newCar.Make; existing.Model = newCar.Model; TempData["SuccessMessage"] = $"Updated {newCar.Make} {newCar.Model}."; } else { _context.Car.Add(newCar); TempData["SuccessMessage"] = $"Added {newCar.Make} {newCar.Model}."; } await _context.SaveChangesAsync(); return(RedirectToAction("AddProduct", new { section = "CAR", newSimilarProduct = false })); }
public async Task <IActionResult> AddProduct(int?id, string section, bool newSimilarProduct = false) { id = (id == 0) ? null : id; var AddNewProduct = new AddNewProductModel(); AddNewProduct.Cars = await _context.Car.ToListAsync(); AddNewProduct.Brands = await _context.Brand.ToListAsync(); AddNewProduct.Part = new ProductModel(); if (id != null) { switch (section.ToUpper()) { case "CAR": AddNewProduct.NewCar = await _context.Car.FirstOrDefaultAsync(x => x.CarId == id); break; case "BRAND": AddNewProduct.Brand = await _context.Brand.FirstOrDefaultAsync(x => x.BrandId == id); break; case "PART": default: AddNewProduct.Part = await _context.Products.Include(x => x.Brand) .Include(x => x.Images) .Include(x => x.CarProducts) .FirstOrDefaultAsync(x => x.PartId == id); if (newSimilarProduct) { AddNewProduct.Part.PartNumber = null; AddNewProduct.Part.PartId = 0; AddNewProduct.Part.Images = null; AddNewProduct.Part.Years = null; AddNewProduct.Part.CarProducts = null; AddNewProduct.Part.Shipping = 0m; } AddNewProduct.Brand = AddNewProduct.Part.Brand; break; } } return(View(AddNewProduct)); }
public async Task <IActionResult> AddBrand(AddNewProductModel model) { var newBrand = model.Brand; var existing = _context.Brand.FirstOrDefault(x => x.Name == newBrand.Name || x.BrandId == newBrand.BrandId); if (existing != null) { existing.Name = newBrand.Name; existing.Description = newBrand.Description; TempData["SuccessMessage"] = $"Updated {newBrand.Name} ({existing.BrandId})."; } else { TempData["SuccessMessage"] = $"Added {newBrand.Name}."; _context.Brand.Add(newBrand); } await _context.SaveChangesAsync(); return(RedirectToAction("AddProduct", new { id = newBrand.BrandId, section = "BRAND", newSimilarProduct = false })); }
public async Task <IActionResult> AddPart(AddNewProductModel model, ICollection <int> CompatibleCarIds) { int imgCount = 0; var images = new List <ImageModel>(); var carProducts = new List <CarProduct>(); var newProduct = model.Part; newProduct.Brand = await _context.Brand.Include(x => x.Products).FirstOrDefaultAsync(x => x.BrandId == model.Part.Brand.BrandId); newProduct.PartNumber = (string.IsNullOrEmpty(newProduct.PartNumber)) ? DateTime.UtcNow.ToString("yyyyMMdd-HHmmss") : newProduct.PartNumber; newProduct.Years = (!string.IsNullOrEmpty(model.Part.Years)) ? model.Part.Years.Replace(" ", "").Replace("-", " - ") : null; newProduct.Shipping = (newProduct.Shipping == 0m) ? await CalculateShippingAsync(newProduct.Price) : newProduct.Shipping; foreach (var file in Request.Form.Files) { if (file.Length > 0) { imgCount++; images.Add(new ImageModel { Name = $"{newProduct.Name} ({imgCount})", Description = file.FileName, Bytes = ConvertToBytes(file) }); } } newProduct.Images = images; foreach (var carId in CompatibleCarIds) { var car = await _context.Car.Include(x => x.CarProducts).FirstOrDefaultAsync(x => x.CarId == carId); carProducts.Add(new CarProduct { CarId = car.CarId, Car = car, ProductId = newProduct.PartId, Product = newProduct }); } newProduct.CarProducts = carProducts; var existing = await _context.Products .Include(x => x.Brand).Include(x => x.Images).Include(x => x.CarProducts).ThenInclude(x => x.Car) .FirstOrDefaultAsync(x => x.PartId == newProduct.PartId); if (existing != null) { foreach (var existingCarProduct in existing.CarProducts) { _context.CarProduct.Remove(existingCarProduct); } await _context.SaveChangesAsync(); foreach (var newCarProduct in newProduct.CarProducts) { existing.CarProducts = newProduct.CarProducts; await _context.SaveChangesAsync(); } existing.PartNumber = newProduct.PartNumber; existing.Years = newProduct.Years; existing.Name = newProduct.Name; existing.Description = newProduct.Description; existing.Brand = newProduct.Brand; existing.PartType = newProduct.PartType; existing.Price = newProduct.Price; existing.Shipping = newProduct.Shipping; existing.Images = (newProduct.Images.Count() > 0) ? newProduct.Images : existing.Images; TempData["SuccessMessage"] = $"Successfully updated {existing.Name} ({existing.PartNumber})"; } else { newProduct.DateAdded = DateTime.UtcNow; _context.Products.Add(newProduct); TempData["SuccessMessage"] = $"Added {newProduct.Brand.Name} {newProduct.Name} ({newProduct.PartNumber})."; } await _context.SaveChangesAsync(); return(RedirectToAction("AddProduct", new { id = newProduct.PartId, section = "PART", newSimilarProduct = false })); }