public async Task <DailyActivityReportDTO> CreateDailyActivityReportAsync(int postId) { var post = await _postRepository.Find(postId); var report = new DailyActivityReport { Date = DateTime.Now, Post = post, Entries = new List <Entry>() }; _darRepository.Add(report); if (await _darRepository.SaveAll()) { var reportToReturn = _mapper.Map <DailyActivityReportDTO>(report); return(reportToReturn); } throw new ApplicationException("Something went wrong creating a new report."); }
private async Task <DailyActivityReportDTO> AddEntryToDailyActivityReportAndUpdate(Entry entry, DailyActivityReport dar, Entry parent = null) { entry.ParentEntry = parent; entry.DailyActivityReport = dar; if (entry.OccuranceDate == null) { entry.OccuranceDate = DateTime.Now; } if (parent == null) { dar.Entries.Add(entry); } else { parent.ChildEntries.Add(entry); } _entryRepository.Add(entry); if (!await _entryRepository.SaveAll()) { throw new ApplicationException("Something went wrong saving the entry to the database."); } var entries = await _entryRepository .FindRange(x => x.ParentEntry == null && x.DailyActivityReportId == dar.Id); var darToReturn = _mapper.Map <DailyActivityReportDTO>(dar); var darEntries = _mapper.Map <ICollection <EntryDTO> >(entries); darToReturn.Entries = darEntries; return(darToReturn); }