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 }); }
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(); }
public IActionResult Edit([FromRoute] int id, [FromBody] VideogameForm form) { videogameFormHandler.HandleEdit(id, form); return(Ok()); }