public async Task <DailyActivityReportDTO> AddEntryAsync(AddEntryToDailyActivityReportDTO dto)
        {
            if (dto.ParentEntry != null)
            {
                return(await AddChildEntryAsync(dto));
            }

            var entry = _mapper.Map <Entry>(dto.Entry);
            var dar   = await FindDailyActivityReport(dto.DailyActivityReport.Id);

            return(await AddEntryToDailyActivityReportAndUpdate(entry, dar));
        }
        private async Task <DailyActivityReportDTO> AddChildEntryAsync(AddEntryToDailyActivityReportDTO dto)
        {
            var parentEntry = await FindEntry(dto.ParentEntry.Id);

            var dar = await FindDailyActivityReport(dto.DailyActivityReport.Id);

            if (parentEntry.DailyActivityReportId != dar.Id)
            {
                throw new ApplicationException("This parent entry does not belong to this Daily Activity Report.");
            }

            var childEntry = _mapper.Map <Entry>(dto.Entry);

            return(await AddEntryToDailyActivityReportAndUpdate(childEntry, dar, parentEntry));
        }
        public async Task UpdateEntryInDailyActivityReportAsync(AddEntryToDailyActivityReportDTO dto)
        {
            var dar = await FindDailyActivityReport(dto.DailyActivityReport.Id);

            var entry = await FindEntry(dto.Entry.Id);

            var updatedEntry = _mapper.Map <Entry>(dto.Entry);

            if (entry.DailyActivityReport.Id != dar.Id)
            {
                throw new ApplicationException("This entry does not belong to the given Daily Activity Report.");
            }

            _mapper.Map(updatedEntry, entry);

            if (!await _entryRepository.SaveAll())
            {
                throw new ApplicationException("Something went wrong, could not update the given entry.");
            }
        }
        public async Task <IActionResult> UpdateEntryInDailyActivityReport(AddEntryToDailyActivityReportDTO dto)
        {
            await _darService.UpdateEntryInDailyActivityReportAsync(dto);

            return(NoContent());
        }
        public async Task <IActionResult> AddEntry(AddEntryToDailyActivityReportDTO dto)
        {
            var dar = await _darService.AddEntryAsync(dto);

            return(Ok(dar));
        }