private ParticpantsData FillAttendanceData(ParticpantsData particpant, DateTime meetingStartTime, DateTime meetingEndTime) { double randLateJoin = random.NextDouble(); double randEarlyLeaving = random.NextDouble(); DateTime joinTime = randLateJoin < 0.8 ? meetingStartTime.AddMinutes(random.Next(0, 5) + random.NextDouble()): meetingStartTime.AddMinutes(random.Next(0, (int)(meetingEndTime - meetingStartTime).TotalMinutes)); DateTime leftTime = randEarlyLeaving < 0.8 ? meetingEndTime.AddMinutes(-1 * (random.Next(0, 5)) + random.NextDouble()) : //sub meetingEndTime.AddMinutes(-1 * random.Next(0, (int)(meetingEndTime - meetingStartTime).TotalMinutes)); if (leftTime < joinTime) { leftTime = joinTime; } particpant.AttendanceData = new AttendanceData { MeetingAttendanceIntervals = new MeetingAttendanceInterval[] { new MeetingAttendanceInterval { JoinTimeUTC = joinTime, LeaveTimeUTC = leftTime, DurationInSeconds = (leftTime - joinTime).TotalSeconds, } }, TotalMeetingDurationInSeconds = (leftTime - joinTime).TotalSeconds, }; return(particpant); }
private void FillRaiseHandsData(ParticpantsData particpant) { DateTime joinTimeUTC = particpant.AttendanceData.MeetingAttendanceIntervals[0].JoinTimeUTC; DateTime leaveTimeUTC = particpant.AttendanceData.MeetingAttendanceIntervals[0].LeaveTimeUTC; var prevTime = joinTimeUTC; var curTime = prevTime.AddMinutes(5) < leaveTimeUTC?prevTime.AddMinutes(10) : leaveTimeUTC; var curiousUser = random.NextDouble(); var extraCuriousity = curiousUser > 0.7 ? 0.1 :0; List <RaiseHandsInterval> raisedHandsIntervals = new List <RaiseHandsInterval>(); while (curTime < leaveTimeUTC) { var rand = random.NextDouble(); if (rand < chanceToRaiseHands + extraCuriousity) // 10% prob { var raisedHandIntervalStartTime = curTime.AddMinutes((curTime - prevTime).TotalMinutes * random.NextDouble()); raisedHandsIntervals.Add(new RaiseHandsInterval { StartTimeUTC = raisedHandIntervalStartTime, EndTimeUTC = raisedHandIntervalStartTime.AddMinutes((curTime - raisedHandIntervalStartTime).TotalMinutes * random.NextDouble()) }); } prevTime = curTime; curTime = curTime.AddMinutes(5); } particpant.RaiseHandsData = new RaiseHandsData { TotalCount = raisedHandsIntervals.Count, RaiseHandsIntervals = raisedHandsIntervals.ToArray(), }; }