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);
        }
示例#6
0
        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)));
        }
示例#7
0
        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)));
        }