public IEnumerable <ImageJsonModel> SaveImagesInDatabase(VehicleJsonModel model) { const decimal MAX_SIZE_IN_BYTES = 1000000; var images = new List <ImageJsonModel>(); foreach (var image in model.UploadImages.Take(10)) { if (image.ContentType == "image/jpeg" || image.ContentType == "image/png") { using (var compressedImg = new MagickImage(image.OpenReadStream())) { decimal quality = (MAX_SIZE_IN_BYTES / image.Length) * 100; compressedImg.Quality = (int)(quality > 90 ? 90 : quality); compressedImg.Format = MagickFormat.Jpg; string imageName = Guid.NewGuid().ToString() + ".jpg"; images.Add(new ImageJsonModel { Data = compressedImg.ToByteArray(), VehicleId = model.Id }); } } } return(images); }
public Guid AddVehicle(VehicleJsonModel model) { var vehicle = Map(model, new Vehicle()); vehicle.DateCreated = DateTime.UtcNow; DbContext.Vehicles.Add(vehicle); DbContext.SaveChanges(); return(vehicle.Id); }
public IActionResult GetVehicle(Guid?id) { var vehicle = new VehicleJsonModel(); if (id.HasValue) { vehicle = _vehicleService.GetVehicle(id.Value); } return(Json(new ResponseJsonModel(true, vehicle))); }
public Guid EditVehicle(VehicleJsonModel model) { var dbVehicle = DbContext.Vehicles .Include(i => i.Images) .SingleOrDefault(c => c.Id == model.Id); if (dbVehicle != null) { dbVehicle = Map(model, dbVehicle); DbContext.Images.RemoveRange(dbVehicle.Images); DbContext.SaveChanges(); } return(dbVehicle.Id); }
public IEnumerable <ImageJsonModel> SaveImagesOnFileSystem(VehicleJsonModel model) { const decimal MAX_SIZE_IN_BYTES = 1000000; var images = new List <ImageJsonModel>(); string filePath = Path.Combine(Directory.GetCurrentDirectory(), "App", "public", "images", $"{model.Id}"); if (Directory.Exists(filePath)) { foreach (var file in Directory.GetFiles(filePath)) { File.Delete(file); } } else { Directory.CreateDirectory(filePath); } foreach (var image in model.UploadImages.Take(10)) { if (image.ContentType == "image/jpeg" || image.ContentType == "image/png") { using (var compressedImg = new MagickImage(image.OpenReadStream())) { decimal quality = (MAX_SIZE_IN_BYTES / image.Length) * 100; compressedImg.Quality = (int)(quality > 90 ? 90 : quality); compressedImg.Format = MagickFormat.Jpg; string imageName = Guid.NewGuid().ToString() + ".jpg"; compressedImg.Write($"{filePath}\\{imageName}"); images.Add(new ImageJsonModel { Name = imageName, VehicleId = model.Id }); } } } return(images); }
public IActionResult AddVehicle(VehicleJsonModel model) { if (ModelState.IsValid) { bool isAdded = false; var id = _vehicleService.AddVehicle(model); isAdded = model.Id != id; if (model.UploadImages.Any() && isAdded) { model.Id = id; model.Images = _commonService.SaveImagesInDatabase(model); isAdded = _commonService.AddImages(model.Images); } string error = isAdded ? Messages.INFO_ENTITY_ADDED : Messages.ERROR_ADD_PROBLEM; return(Json(new ResponseJsonModel(isAdded, id, error: error))); } var errors = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage).ToList(); return(Json(new ResponseJsonModel(errors: errors))); }
public IActionResult EditVehicle(VehicleJsonModel model) { string userId = _userManager.GetUserId(HttpContext.User); bool isAdmin = User.IsInRole(UserRoles.Admin.ToString()); if (ModelState.IsValid && (model.UserId == userId || isAdmin)) { bool isEdited = false; var id = _vehicleService.EditVehicle(model); isEdited = model.Id == id; if (model.UploadImages.Any() && isEdited) { model.Id = id; model.Images = _commonService.SaveImagesInDatabase(model); isEdited = _commonService.AddImages(model.Images); } string error = isEdited ? Messages.INFO_ENTITY_EDITED : Messages.ERROR_EDIT_PROBLEM; return(Json(new ResponseJsonModel(isEdited, id, error: error))); } var errors = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage).ToList(); return(Json(new ResponseJsonModel(errors: errors))); }