public async Task <Animel> UpdateAnimelAsync(Animel animel) { var animals = await GetAnimelsAsync(); Animel dbAnimal; if (animel.Id.HasValue) { dbAnimal = animals.FirstOrDefault(x => x.Id == animel.Id); } else { dbAnimal = new Animel { Id = (animals.Any() ? animals.Select(x => x.Id).Max() : 0) + 1 }; animals.Add(dbAnimal); } dbAnimal.Name = animel.Name; dbAnimal.Quantity = animel.Quantity; await File.WriteAllTextAsync(databaseFileName, JsonConvert.SerializeObject(animals)); return(dbAnimal); }
public async Task <ActionResult> UpdateAnimelCatlogAsync([FromBody] Animel animel) { var errors = await animelRepo.ValidateAsync(animel); foreach (var error in errors) { ModelState.AddModelError(error.Key, error.Value); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var updatedAnimel = await animelRepo.UpdateAnimelAsync(animel); if (updatedAnimel == null) { return(StatusCode(500)); } return(Ok(updatedAnimel)); }
public async Task <IEnumerable <KeyValuePair <string, string> > > ValidateAsync(Animel animel) { List <KeyValuePair <string, string> > errors = new List <KeyValuePair <string, string> >(); var animals = await GetAnimelsAsync(); // check name is not already exist var query = animals.Where(x => x.Name.ToLower() == animel.Name.ToLower()); if (animel.Id.HasValue) { query = query.Where(x => x.Id != animel.Id); } if (query.Any()) { errors.Add(new KeyValuePair <string, string>("Name", $"Animel name {animel.Name} is already exsits")); } return(errors); }