示例#1
0
        public async Task <BasicAnimalDTO> FindByIdAsync(int id)
        {
            var result = await _totemRepository.FindByIdAsync(id);

            if (result == null)
            {
                throw new EntityNotFoundException($"Totem met id {id} werd niet gevonden");
            }

            return(_mapper.Map <BasicAnimalDTO>(result));
        }
        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);
        }