public async Task <bool> AssignAwaitingReports(ReportCategoryType reportCategoryType, bool isPrivate) { var allowedAssignees = (await GetReportsAllowedAssignees(reportCategoryType, isPrivate)) .Where(u => u.AssignedReports.Count < Constants.MaximumAssignedReportsCount); var awaitingReports = await database.ReportRepository.GetWhere(new SqlBuilder() .Append("status").Equals.Append((int)ReportStatusType.Awaiting) .And.Append("categoryType").Equals.Append((int)reportCategoryType) .And.Append("isPrivate").Equals.Append(isPrivate ? 1 : 0) .Build().Query); foreach (var awaitingReport in awaitingReports) { awaitingReport.AssigneTo(allowedAssignees .Aggregate( (currentMin, u) => (currentMin == null || u.AssignedReports.Count < currentMin.AssignedReports.Count ? u : currentMin)) .Id); awaitingReport.ChangeStatus(ReportStatusType.Assigned); } return(await database.ReportRepository.UpdateRange(awaitingReports)); }
public async Task Handle_WhenCalled_ReturnFetchAllReportsPaginationResponse(ReportCategoryType type) { var request = new FetchAllReportsRequest { CategoryType = type }; var result = await fetchAllReportsQuery.Handle(request, It.IsAny <CancellationToken>()); Assert.That(result, Is.TypeOf <FetchAllReportsResponse>()); Assert.That(result.Reports, Is.EqualTo(reportsDto)); Assert.That(result, Is.Not.Null); }
private async Task <Report> CreateBaseReport(string subject, string content, bool isPrivate, DateTime?eventDate, ReportCategoryType categoryType) => await database.UserRepository.FindById(httpContextReader.CurrentUserId) != null
public void SetCategoryType(ReportCategoryType categoryType) => CategoryType = (int)categoryType;
public async Task <IEnumerable <User> > GetReportsAllowedAssignees(ReportCategoryType reportCategoryType, bool isPrivate = false) => await database.UserRepository.GetUsersWithAssignedReports(reportCategoryType, isPrivate);