public async Task <UserReport> CreateUserReport(CreateUserReportRequest request) { var baseReport = await CreateBaseReport(request.Subject, request.Content, request.IsPrivate, request.EventDate, ReportCategoryType.User); if (await database.UserRepository.FindById(request.UserToReportId) == null) { throw new EntityNotFoundException("User to report not found"); } var userReport = UserReport.Create(baseReport.Id, request.UserToReportId, request.WitnessId); userReport.SetReport(baseReport); using (var transaction = database.BeginTransaction().Transaction) { if (!await database.ReportRepository.Insert(baseReport, false)) { throw new DatabaseException(); } if (!await database.UserReportRepository.Insert(userReport, false)) { throw new DatabaseException(); } transaction.Complete(); } await reportImageService.UploadReportImages(httpContextReader.CurrentUserId, baseReport, request.Images); return(userReport); }