public void UpdateLeadersOnAllReports() { var i = 0; var reports = _reportRepo.AsQueryable().Where(x => x.Employment.OrgUnit.Level > 1).ToList(); var max = reports.Count(); foreach (var report in reports) { if (i % 100 == 0) { Console.WriteLine("Updating leaders on report " + i + " of " + max); } i++; report.ResponsibleLeaderId = _driveService.GetResponsibleLeaderForReport(report).Id; report.ActualLeaderId = _driveService.GetActualLeaderForReport(report).Id; if (i % 1000 == 0) { Console.WriteLine("Saving to database"); _reportRepo.Save(); } } Console.WriteLine("Saving to database"); _reportRepo.Save(); }
public void AddLeadersToReportsThatHaveNone() { // Fail-safe as some reports for unknown reasons have not had a leader attached Console.WriteLine("Adding leaders to drive reports that have none"); var reports = _reportRepo.AsQueryableLazy().Where(r => (r.PersonReports.Count == 0 || r.ActualLeader == null) && r.Status == ReportStatus.Pending).ToList(); foreach (var report in reports) { report.UpdateResponsibleLeaders(_driveService.GetResponsibleLeadersForReport(report)); var actualLeader = _driveService.GetActualLeaderForReport(report); if (actualLeader != null) { report.ActualLeaderId = actualLeader.Id; } } _reportRepo.DetectChanges(); _reportRepo.Save(); }
public void AddLeadersToReportsThatHaveNone() { // Fail-safe as some reports for unknown reasons have not had a leader attached Console.WriteLine("Adding leaders to reports that have none"); var i = 0; var reports = _reportRepo.AsQueryable() .Where(r => (r.ResponsibleLeaders.Count == 0 || r.ActualLeader == null) && r.Status == ReportStatus.Pending) .ToList(); foreach (var report in reports) { try { i++; Console.WriteLine("Adding leaders to report " + i + " of " + reports.Count); report.UpdateResponsibleLeaders(_driveService.GetResponsibleLeadersForReport(report)); var actualLeader = _driveService.GetActualLeaderForReport(report); if (actualLeader != null) { report.ActualLeaderId = actualLeader.Id; } else { _logger.Error($"{this.GetType().Name}, AddLeadersToReportsThatHaveNone(), Could not find actual leader for person ? {report.PersonId} and report = {report.Id}"); } if (i % 100 == 0) { Console.WriteLine("Saving to database"); _reportRepo.Save(); } } catch (Exception e) { _logger.Error($"{this.GetType().Name}, AddLeadersToReportsThatHaveNone(), Error, report = {report.Id}", e); throw; } } _reportRepo.Save(); Console.WriteLine("Adding leaders to reports that have none finished"); _logger.Debug($"{this.GetType().Name}, AddLeadersToReportsThatHaveNone() finished"); }
public void IsLeader_TwoLeadersInOrgParent_ShouldPickOneOfThemAsActualLeader() { _subMock.AsQueryable().ReturnsForAnyArgs(new List <Core.DomainModel.Substitute>().AsQueryable()); var report = new DriveReport() { PersonId = 1, Person = new Person() { Id = 1 }, EmploymentId = 1, Employment = new Employment() { IsLeader = true, OrgUnit = new OrgUnit() { Id = 2 }, OrgUnitId = 2 } }; _orgUnitMock.AsQueryable().ReturnsForAnyArgs(new List <OrgUnit>() { new OrgUnit() { Id = 1, Level = 0 }, new OrgUnit() { Id = 2, Level = 1, ParentId = 1, Parent = new OrgUnit() { Id = 1, Level = 0 } } }.AsQueryable()); _emplMock.AsQueryable().ReturnsForAnyArgs(new List <Employment>() { new Employment() { PersonId = 1, Person = new Person() { Id = 1, FullName = "Jon Badstue" }, Id = 1, IsLeader = true, OrgUnit = new OrgUnit() { Id = 2, }, OrgUnitId = 2 }, new Employment() { PersonId = 2, Person = new Person() { Id = 2, FullName = "Eva Due", }, Id = 12, IsLeader = true, OrgUnit = new OrgUnit() { Id = 1, }, OrgUnitId = 1 }, new Employment() { PersonId = 3, Person = new Person() { Id = 3, FullName = "Trille Due", }, Id = 13, IsLeader = true, OrgUnit = new OrgUnit() { Id = 1, }, OrgUnitId = 1 }, }.AsQueryable()); var res = _uut.GetActualLeaderForReport(report); Assert.AreEqual("Eva Due", res.FullName); }