/// <summary> /// Finds an animal by its id and then updates it with the model /// parameter. If the animal can not be found the method throws /// a 404 Not Found. /// </summary> /// <param name="model"></param> /// <param name="id"></param> /// <returns></returns> public async Task <int> UpdateAnimal(AnimalBm model, int id) { var animal = await GetAnimalData(id); // will be better to put in constructor of DTO or Bm animal.UpdatedAt = DateTime.Now; if (animal != null) { animal = mapper.Map(model, animal); context.Update(animal); await context.SaveChangesAsync(); var animalLocation = mapper.Map <LocationBm>(model); animalLocation.AnimalId = animal.Id; await locationRepository.UpdateLocation(animalLocation); logger.LogInfo($"Animal with id {id} successfully updated."); return(id); } else { throw new NotFoundException($"Animal with id {id} does not exist."); } }
/// <summary> /// Updates animal's location. This method gets called on /// animal update. /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task UpdateLocation(LocationBm model) { var animalLocation = await context.Locations.FirstOrDefaultAsync(x => x.AnimalId == model.AnimalId); if (animalLocation != null) { mapper.Map(model, animalLocation); context.Update(animalLocation); await context.SaveChangesAsync(); } else { throw new NotFoundException($"Animal location does not exist"); } }