public void DeleteImage(int carDetailImageId) { CarDetailPhotos carDetail = _context.CarDetailPhotos.Where(cd => cd.Id == carDetailImageId).FirstOrDefault(); Car car = _context.Cars.Where(c => c.Id == carDetail.CarId).Include(c => c.CarDetailPhotos).FirstOrDefault(); var carId = carDetail.CarId; _context.CarDetailPhotos.Remove(carDetail); _context.SaveChanges(); }
public async Task <IActionResult> Update(Advertisement advertisement) { if (!User.Identity.IsAuthenticated) { return(Redirect("/account/login")); } if (!User.IsInRole("member")) { return(Redirect("/account/login")); } if (advertisement == null) { return(PartialView("ErrorPage")); } if (!ModelState.IsValid) { ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(NotFound()); } if (advertisement.Car.MakeId == null) { ModelState.AddModelError("Car.MakeId", "Select a valid make"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.Car.ManufactureYear < 1700 || advertisement.Car.ManufactureYear > DateTime.Now.Year) { ModelState.AddModelError("Car.ManufactureYear", "Input a valid manufacture year"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.Car.Motor <= 0) { ModelState.AddModelError("Car.Motor", "Input a valid Motor"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.Car.Millage < 0) { ModelState.AddModelError("Car.Millage", "Input a valid Millage"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (int.TryParse(advertisement.Car.Color, out _)) { ModelState.AddModelError("Car.Color", "Input a valid Color"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.Car.TransmissionId == null) { ModelState.AddModelError("Car.TransmissionId", "Select a valid Transmission"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.Car.FuelTypeId == null) { ModelState.AddModelError("Car.FuelTypeId", "Select a valid Fuel type"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.Car.Description.Length < 200) { ModelState.AddModelError("Car.Description", "Description is too short"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.Car.Price < 0) { ModelState.AddModelError("Car.Price", "Input a valid Price"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } if (advertisement.CityId == null) { ModelState.AddModelError("CityId", "Select a valid City"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(advertisement)); } Advertisement adFromDb = await _context.Advertisements.Where(ad => ad.Id == advertisement.Id) .Include(ad => ad.Car) .Include(ad => ad.Car.Make) .Include(ad => ad.Car.Make.Brand) .Include(ad => ad.Car.Transmission) .Include(ad => ad.Car.FuelType) .Include(ad => ad.City) .Include(ad => ad.City.Country) .Include(ad => ad.Car.CarDetailPhotos) .FirstOrDefaultAsync(); if (advertisement.Car.Photo != null) { if (!advertisement.Car.Photo.ContentType.Contains("image/")) { ModelState.AddModelError("Car.Photo", "File type should be image"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(adFromDb)); } RemovePhoto(_env.WebRootPath, _context.Advertisements.Where(ad => ad.Id == advertisement.Id).FirstOrDefault().Car.Image); adFromDb.Car.Image = await advertisement.Car.Photo.SavePhotoAsync(_env.WebRootPath, "advertisements"); } if (advertisement.Car.DetailPhotos != null) { foreach (var photo in advertisement.Car.DetailPhotos) { if (!photo.ContentType.Contains("image/")) { ModelState.AddModelError("Car.DetailPhotos", "File type should be image"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(adFromDb)); } //await _context.SaveChangesAsync(); } foreach (var photo in advertisement.Car.DetailPhotos) { CarDetailPhotos detailPhoto = new CarDetailPhotos { CarId = adFromDb.CarId, Image = await photo.SavePhotoAsync(_env.WebRootPath, "advertisements") }; await _context.CarDetailPhotos.AddAsync(detailPhoto); } } adFromDb.Car.MakeId = advertisement.Car.MakeId; adFromDb.Car.Color = advertisement.Car.Color; adFromDb.Car.Description = advertisement.Car.Description; adFromDb.Car.FuelTypeId = advertisement.Car.FuelTypeId; adFromDb.Car.IsVip = advertisement.Car.IsVip; adFromDb.Car.ManufactureYear = advertisement.Car.ManufactureYear; adFromDb.Car.Millage = advertisement.Car.Millage; adFromDb.Car.Motor = advertisement.Car.Motor; adFromDb.Car.Price = advertisement.Car.Price; adFromDb.Car.TransmissionId = advertisement.Car.TransmissionId; adFromDb.CityId = advertisement.CityId; adFromDb.UpdatedDate = DateTime.Now; await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> Create(Car car) { if (!User.Identity.IsAuthenticated) { return(Redirect("/account/login")); } if (!User.IsInRole("member")) { return(Redirect("/account/login")); } if (car.MakeId == null) { ModelState.AddModelError("MakeId", "Select a valid make"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.ManufactureYear < 1700 || car.ManufactureYear > DateTime.Now.Year) { ModelState.AddModelError("ManufactureYear", "Input a valid manufacture year"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.Motor <= 0) { ModelState.AddModelError("Motor", "Input a valid Motor"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.Millage < 0) { ModelState.AddModelError("Millage", "Input a valid Millage"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (int.TryParse(car.Color, out _)) { ModelState.AddModelError("Color", "Input a valid Color"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.TransmissionId == null) { ModelState.AddModelError("TransmissionId", "Select a valid Transmission"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.FuelTypeId == null) { ModelState.AddModelError("FuelTypeId", "Select a valid Fuel type"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.Description.Length < 200) { ModelState.AddModelError("Description", "Description is too short"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.Price < 0) { ModelState.AddModelError("Price", "Input a valid Price"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.Advertisement.CityId == null) { ModelState.AddModelError("Advertisement.CityId", "Select a valid City"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.Photo == null) { ModelState.AddModelError("Photo", "Select a Photo"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (!car.Photo.ContentType.Contains("image/")) { ModelState.AddModelError("Photo", "File type should be image"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } if (car.DetailPhotos == null) { ModelState.AddModelError("DetailPhotos", "Select car detail photos"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } await _context.Cars.AddAsync(car); foreach (var photo in car.DetailPhotos) { if (!photo.ContentType.Contains("image/")) { ModelState.AddModelError("DetailPhotos", "File type should be image"); ViewBag.Countries = _context.Countries; ViewBag.Brands = _context.Brands; ViewBag.Transmissions = _context.Transmissions; ViewBag.Fuels = _context.FuelTypes; return(View(car)); } //await _context.SaveChangesAsync(); } foreach (var photo in car.DetailPhotos) { CarDetailPhotos detailPhoto = new CarDetailPhotos { CarId = car.Id, Image = await photo.SavePhotoAsync(_env.WebRootPath, "advertisements") }; await _context.CarDetailPhotos.AddAsync(detailPhoto); } string filename = await car.Photo.SavePhotoAsync(_env.WebRootPath, "advertisements"); car.Image = filename; car.Advertisement.CurrentDate = DateTime.Now; car.Advertisement.UpdatedDate = DateTime.Now; car.Advertisement.ApplicationUserId = _context.Users.Where(u => u.UserName == User.Identity.Name).FirstOrDefault().Id; await _context.Advertisements.AddAsync(car.Advertisement); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }