private static StudentSupportEmail GenerateAlertEmail(Election election, float participationRatio) { int participation = ElectionPhaseBase.ParticipationRatioToPercentage(participationRatio); int alarmThreshold = GetAlarmThreshold(election); StringBuilder emailBodyBuilder = new StringBuilder(); emailBodyBuilder.Append($"Election name: {election.Name}\r\n"); emailBodyBuilder.Append($"Election type: {election.Type}\r\n"); emailBodyBuilder.Append($"Election phase: {election.State}\r\n"); emailBodyBuilder.Append("\r\n"); emailBodyBuilder.Append($"Current participation: {participation}\r\n"); emailBodyBuilder.Append($"Alarm threshold: {alarmThreshold}\r\n"); return(new StudentSupportEmail { Subject = "Election alert - low participation", Body = emailBodyBuilder.ToString() }); }
private ElectionStateChange GetStateChangeRecord() { ElectionPhaseBase phase = Entity.GetPhaseByState(PhaseState); return(IsStart ? phase.BeginsInfo : phase.EndInfo); }
public override DateTime GetIntendedRunAt() { ElectionPhaseBase phase = Entity.GetPhaseByState(PhaseState); return(IsStart ? phase.BeginsAt : phase.EndsAt); }
public override bool ShouldBeScheduled() { ElectionPhaseBase jobPhase = GetPhase(); return(jobPhase.AlarmEnabled && Entity.State == jobPhase.AssociatedState); }