public async Task <IActionResult> AddEntry([FromBody] CreateTotemEntryDTO viewmodel) { var newEntry = await _totemEntryService.AddEntryAsync(viewmodel); return(CreatedAtRoute("GetEntryById", new { id = newEntry.Id }, newEntry)); }
public async Task <BasicTotemEntryDTO> AddEntryAsync(CreateTotemEntryDTO viewmodel) { var leiding = await _leidingRepository.FindByIdAsync(viewmodel.LeidingId); if (leiding == null) { throw new EntityNotFoundException($"Leiding met id {viewmodel.LeidingId} bestaat niet."); } //Check if leiding already has a totem var totemForLeiding = await _totemEntryRepository.FindByLeidingIdAsync(leiding.Id); if (totemForLeiding != null) { throw new EntityExistsException( $"{totemForLeiding.Leiding.Voornaam} {totemForLeiding.Leiding.Naam} heeft al een totem."); } var totem = await _totemRepository.FindByIdAsync(viewmodel.TotemId); if (totem == null) { throw new EntityNotFoundException($"Totem met id {viewmodel.TotemId} werd niet gevonden"); } var adjectief = await _adjectiefRepository.FindByIdAsync(viewmodel.AdjectiefId); if (adjectief == null) { throw new EntityNotFoundException($"Adjectief met id {viewmodel.AdjectiefId} werd niet gevonden"); } var newEntry = new TotemEntry { Adjectief = adjectief, DatumGegeven = viewmodel.DatumGegeven.ToLocalTime(), Leiding = leiding, Totem = totem }; if (viewmodel.VoorouderId != 0) { var voorouder = await _totemEntryRepository.FindByIdAsync(viewmodel.VoorouderId); if (voorouder == null) { throw new EntityNotFoundException($"Voorouder met id {viewmodel.VoorouderId} werd niet gevonden."); } newEntry.Voorouder = voorouder; } await _totemEntryRepository.AddAsync(newEntry); await _totemEntryRepository.SaveChangesAsync(); var model = _mapper.Map <BasicTotemEntryDTO>(newEntry); return(model); }