Example #1
0
        public IActionResult Create([FromForm] CreateResidenceRequest request)
        {
            if (ModelState.IsValid == false)
            {
                return(BadRequest("Invalid Request"));
            }

            var residence = _residencesService.Create(request.Name, request.Address, request.Description);

            var file = request.File;

            var uploadFilesPath = _appConfiguration.FileStorageBasePath;

            if (!Directory.Exists(uploadFilesPath))
            {
                Directory.CreateDirectory(uploadFilesPath);
            }

            string fileName;
            string fileNameThumb;

            if (file == null || file.Length == 0)
            {
                var defaultImage = Path.Combine(Directory.GetCurrentDirectory(),
                                                "Resources", "images", "residence.jpg");
                var defaultThumbnail = Path.Combine(Directory.GetCurrentDirectory(),
                                                    "Resources", "images", "residence_thumb.jpg");

                fileName      = residence.Id + Path.GetExtension(defaultImage);
                fileNameThumb = residence.Id + "_thumb" + Path.GetExtension(defaultThumbnail);

                System.IO.File.Copy(defaultImage, Path.Combine(uploadFilesPath, fileName), true);
                System.IO.File.Copy(defaultThumbnail, Path.Combine(uploadFilesPath, fileNameThumb), true);
            }
            else
            {
                if (ImagesUtils.IsValid(file.Length) == false)
                {
                    return(BadRequest("Max file size exceeded."));
                }
                if (ImagesUtils.IsValid(file.FileName) == false)
                {
                    return(BadRequest("Invalid file type."));
                }

                UploadImages(residence, file, uploadFilesPath, out fileName, out fileNameThumb);
            }

            _residencesService.UpdateFileName(residence.Id, fileName, fileNameThumb);

            Logger.Info("Product created with code: " + request.Name + " -> id: " + residence.Id);

            return(Ok(residence.Id));
        }
Example #2
0
        public IActionResult Update(int id, [FromForm] EditResidenceRequest request)
        {
            if (ModelState.IsValid == false)
            {
                return(BadRequest("Invalid Request"));
            }

            // map dto to entity and set id
            var residence = _residencesService.Get(id);

            if (residence == null)
            {
                return(NotFound("Product not found"));
            }


            _residencesService.Update(id, request.Name, request.Address, request.Description, request.IsAvailable);

            var file = request.File;

            var uploadFilesPath = _appConfiguration.FileStorageBasePath;

            if (!Directory.Exists(uploadFilesPath))
            {
                Directory.CreateDirectory(uploadFilesPath);
            }

            if (file != null && file.Length > 0)
            {
                if (ImagesUtils.IsValid(file.Length) == false)
                {
                    return(BadRequest("Max file size exceeded."));
                }
                if (ImagesUtils.IsValid(file.FileName) == false)
                {
                    return(BadRequest("Invalid file type."));
                }

                UploadImages(residence, file, uploadFilesPath, out var fileName, out var fileNameThumb);
                _residencesService.UpdateFileName(id, fileName, fileNameThumb);
            }

            Logger.Info("Residence updated with name: " + request.Name + " -> id: " + residence.Id);

            return(Ok(residence.Id));
        }
Example #3
0
        private void UploadImages(Residence residence, IFormFile file, string uploadFilesPath,
                                  out string fileName, out string fileNameThumb)
        {
            fileName      = residence.Id + Path.GetExtension(file.FileName);
            fileNameThumb = residence.Id + "_thumb" + Path.GetExtension(file.FileName);
            var filePath = Path.Combine(uploadFilesPath, fileName);

            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                file.CopyTo(stream);
                Logger.Info("Image update and uploaded to: " + filePath);

                var thumb = ImagesUtils.GetReducedImage(_appConfiguration.ThumbnailMaxWidth,
                                                        _appConfiguration.ThumbnailMaxHeight, stream);
                thumb.Save(Path.Combine(uploadFilesPath, fileNameThumb));
                Logger.Info("Image thumbnail updated and uploaded to: " + Path.Combine(uploadFilesPath, fileNameThumb));
            }
        }