コード例 #1
0
        public void CreatePicture(PictureBll picture)
        {
            if (picture == null)
            {
                throw new ArgumentNullException("picture");
            }

            var pictureDal = picture.ToDal();

            repository.Create(pictureDal);
            uow.Commit();
        }
コード例 #2
0
        public async Task <IActionResult> CreatePictures([FromRoute] Guid experienceId, [FromForm] List <IFormFile> files)
        {
            var err = new ErrorObject()
            {
                Method     = "POST",
                At         = $"/api/experiences/{experienceId}/pictures",
                StatusCode = 400
            };

            if (files.Count < 1)
            {
                err.Error = "No file sent";
                return(BadRequest(err));
            }

            if (files.Count > 3)
            {
                err.Error = "Too many files sent";
                return(BadRequest(err));
            }

            if (await _experienceRepository.GetFirstByExpressionAsync(x => x.Id == experienceId) == null)
            {
                err.StatusCode = 404;
                err.Error      = "No experience found";
                return(NotFound(err));
            }

            // get the amount of numbers to make sure we don't cross 3 pictures to an experience
            var pictures = await _pictureRepository.GetAllByExperienceAsync(experienceId);

            if (pictures.Count() == 3)
            {
                err.Error = "There is already 3 pictures, please remove one before adding another";
                return(BadRequest(err));
            }

            foreach (var file in files)
            {
                var path = Path.Combine(_fileOptions.Path, $"{Guid.NewGuid()}_{DateTime.UtcNow.Ticks}.jpg");

                // save the picture object in database
                _pictureRepository.Create(new Picture
                {
                    Path         = path,
                    CreatedOn    = DateTime.UtcNow,
                    ExperienceId = experienceId,
                });

                if (!await _pictureRepository.SaveAsync())
                {
                    err.Error      = "Error on saving picture object";
                    err.StatusCode = 500;
                    _logger.Error(err.Error);
                    return(StatusCode(500, err));
                }

                // save the  picture on disk
                try
                {
                    using (var stream = new FileStream(path, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);
                    }
                }
                catch (Exception)
                {
                    err.Error      = "Error on saving picture on disk";
                    err.StatusCode = 500;
                    _logger.Error(err.Error);
                    return(StatusCode(500, err));
                }
            }
            return(NoContent());
        }
コード例 #3
0
 public void Create(Picture item)
 {
     repository.Create(item);
 }
コード例 #4
0
 public IResult Create(Picture model)
 {
     _pictureRepository.Create(model);
     return(new SuccessResult(Messages.ProductPhotosAdded));
 }