public VideogameValidatorResult Validate(VideogameForm form)
        {
            var errors = new List <string>();

            if (string.IsNullOrWhiteSpace(form.Name))
            {
                errors.Add("Name should not be empty");
            }
            else if (form.Name.Length < 5)
            {
                errors.Add("Name length must be more then 5 characters");
            }
            else if (form.Name.Length > 20)
            {
                errors.Add("Name length must be less then 20 characters");
            }

            var developer = developerRepository.GetDeveloperById(form.DeveloperId);

            if (developer == null)
            {
                errors.Add($"Developer with id: [{form.DeveloperId}] not found");
            }

            return(new VideogameValidatorResult {
                Errors = errors, isValid = errors.Count == 0
            });
        }
示例#2
0
        public IActionResult Create([FromBody] VideogameForm form)
        {
            var validatorResult = videogameValidator.Validate(form);

            if (validatorResult.isValid)
            {
                videogameFormHandler.HandleCreate(form);
                return(Ok());
            }
            else
            {
                return(BadRequest(validatorResult.Errors));
            }
        }
        public int HandleCreate(VideogameForm form)
        {
            var g      = form.Genres.Select(genre => genre.Name);
            var genres = genreRepository.GetGenres().Where(genre => g.Contains(genre.Name)).ToList();

            var videogame = videogameFactory.Create(form.Name, form.DeveloperId);

            foreach (var genre in genres)
            {
                genre.Videogames.Add(videogame);
            }

            entityRepository.InsertOnSave(videogame);
            entityRepository.SaveChanges();

            return(videogame.Id);
        }
        public void HandleEdit(int id, VideogameForm form)
        {
            var videogame = videogameRepository.GetIncludedById(id);

            entityRepository.AttachOnSave(videogame);

            var formGenreNames     = form.Genres.Select(g => g.Name).ToList();
            var genresForVideogame = genreRepository.GetGenres().Where(g => formGenreNames.Contains(g.Name)).ToList();

            foreach (var genre in videogame.Genres.ToList())
            {
                videogame.Genres.Remove(genre);
            }

            videogame.Name        = form.Name;
            videogame.DeveloperId = form.DeveloperId;

            foreach (var genre in genresForVideogame)
            {
                videogame.Genres.Add(genre);
            }

            entityRepository.SaveChanges();
        }
示例#5
0
 public IActionResult Edit([FromRoute] int id, [FromBody] VideogameForm form)
 {
     videogameFormHandler.HandleEdit(id, form);
     return(Ok());
 }