Exemple #1
0
        public async Task <IActionResult> CreatePojazd([FromBody] SavePojazdResource pojazdResource)
        {
            //server side validation
            if (!ModelState.IsValid)                //validation against domain model
            {
                return(BadRequest(ModelState));
            }

            // if (true)
            // {
            //     ModelState.AddModelError("...", "error"); // against some b. rull
            //     return BadRequest(ModelState);
            // }

            var pojazd = mapper.Map <SavePojazdResource, Pojazd>(pojazdResource);

            pojazd.OstatniaZmiana = DateTime.Now;

            repository.Add(pojazd);
            await unitOfWork.CompleteAsync();

            pojazd = await repository.GetPojazd(pojazd.Id);

            var result = mapper.Map <Pojazd, PojazdResource>(pojazd);

            return(Ok(result));
        }
Exemple #2
0
        public async Task <IActionResult> Upload(int pojazdId, IFormFile file)
        {
            var pojazd = await repository.GetPojazd(pojazdId, includeRelated : false);

            if (pojazd == null)
            {
                return(NotFound());
            }

            if (file == null)
            {
                return(BadRequest("Brak pliku"));
            }
            if (file.Length == 0)
            {
                return(BadRequest("Pusty plik"));
            }
            if (file.Length > photoSettings.MaxBytes)
            {
                return(BadRequest("Plik zbyt duży"));
            }
            if (!photoSettings.IsSupported(file.FileName))
            {
                return(BadRequest("Nieprawidłowy typ pliku"));
            }

            var uploadsFolderPath = Path.Combine(host.WebRootPath, "uploads");

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

            var fileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
            var filePath = Path.Combine(uploadsFolderPath, fileName);

            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                await file.CopyToAsync(stream);
            }

            var photo = new Photo {
                FileName = fileName
            };

            pojazd.Photos.Add(photo);

            await unitOfWork.CompleteAsync();

            return(Ok(mapper.Map <Photo, PhotoResource>(photo)));
        }