Skip to content

Commit a7593b5

Browse files
committed
Merge remote-tracking branch 'origin/release-19.0' into develop
2 parents ce3e98b + 1de4f37 commit a7593b5

1 file changed

Lines changed: 20 additions & 5 deletions

File tree

Rock/Bulk/SampleData/SampleDataManager.cs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2842,6 +2842,8 @@ private void AddFamilyAttendance( Group family, XElement elemFamily, RockContext
28422842
/// <param name="rockContext">The rock context.</param>
28432843
private void CreateAttendance( ICollection<GroupMember> familyMembers, DateTime startingDate, DateTime endDate, int pctAttendance, int pctAttendedRegularService, int scheduleId, int altScheduleId, Dictionary<Guid, List<Attendance>> attendanceData, RockContext rockContext )
28442844
{
2845+
var generatedAttendanceCodes = attendanceData.SelectMany( kvp => kvp.Value ).Select( a => a.AttendanceCode.Code ).ToList();
2846+
28452847
// for each weekend between the starting and ending date...
28462848
for ( DateTime date = startingDate; date <= endDate; date = date.AddDays( 7 ) )
28472849
{
@@ -2887,9 +2889,10 @@ private void CreateAttendance( ICollection<GroupMember> familyMembers, DateTime
28872889
// Only create one attendance record per day for each person/schedule/group/location
28882890
AttendanceCode attendanceCode = new AttendanceCode()
28892891
{
2890-
Code = GenerateRandomCode( _securityCodeLength ),
2892+
Code = GenerateRandomCode( _securityCodeLength, generatedAttendanceCodes ),
28912893
IssueDateTime = _args.AttendanceCodeIssuedDateTime ?? RockDateTime.Now,
28922894
};
2895+
Trace.WriteLine( $"Creating Attendance Code {attendanceCode.Code}." );
28932896

28942897
var attendance = attendanceService.AddOrUpdate( member.Person.PrimaryAliasId, checkinDateTime, item.GroupId, item.LocationId, scheduleId, 1, _kioskDeviceId, null, null, null, null );
28952898
attendance.AttendanceCode = attendanceCode;
@@ -2908,12 +2911,24 @@ private void CreateAttendance( ICollection<GroupMember> familyMembers, DateTime
29082911
/// A little method to generate a random sequence of characters of a certain length.
29092912
/// </summary>
29102913
/// <param name="len">length of code to generate</param>
2914+
/// <param name="existingCodes">The existing codes that have already been generated.</param>
29112915
/// <returns>a random sequence of alpha numeric characters</returns>
2912-
private static string GenerateRandomCode( int len )
2916+
private static string GenerateRandomCode( int len, List<string> existingCodes )
29132917
{
2914-
string chars = "BCDFGHJKMNPQRTVWXYZ0123456789";
2915-
var code = Enumerable.Range( 0, len ).Select( x => chars[_random.Next( 0, chars.Length )] );
2916-
return new string( code.ToArray() );
2918+
string randomCode;
2919+
2920+
do
2921+
{
2922+
string chars = "BCDFGHJKMNPQRTVWXYZ0123456789";
2923+
var code = Enumerable.Range( 0, len ).Select( x => chars[_random.Next( 0, chars.Length )] );
2924+
2925+
randomCode = new string( code.ToArray() );
2926+
2927+
} while ( existingCodes.Contains( randomCode ) );
2928+
2929+
existingCodes.Add( randomCode );
2930+
2931+
return randomCode;
29172932
}
29182933

29192934
/// <summary>

0 commit comments

Comments
 (0)