mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 12:44:58 +00:00
Working on getting meeting change events to trigger properly
This commit is contained in:
@@ -764,6 +764,10 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint NextMeetingModalVisible = 15049;
|
public const uint NextMeetingModalVisible = 15049;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 15050
|
||||||
|
/// </summary>
|
||||||
|
public const uint NextMeetingNotificationRibbonVisible = 15050;
|
||||||
|
/// <summary>
|
||||||
/// 15051
|
/// 15051
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint Display1SelectPressAndFb = 15051;
|
public const uint Display1SelectPressAndFb = 15051;
|
||||||
|
|||||||
@@ -4,13 +4,15 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Devices.Common.Codec
|
namespace PepperDash.Essentials.Devices.Common.Codec
|
||||||
{
|
{
|
||||||
public enum eMeetingEventChangeType
|
public enum eMeetingEventChangeType
|
||||||
{
|
{
|
||||||
Unkown = 0,
|
Unknown = 0,
|
||||||
MeetingStartWarning,
|
MeetingStartWarning,
|
||||||
MeetingStart,
|
MeetingStart,
|
||||||
MeetingEndWarning,
|
MeetingEndWarning,
|
||||||
@@ -34,6 +36,10 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
|||||||
|
|
||||||
private int _meetingWarningMinutes = 5;
|
private int _meetingWarningMinutes = 5;
|
||||||
|
|
||||||
|
private Meeting _previousChangedMeeting;
|
||||||
|
|
||||||
|
private eMeetingEventChangeType _previousChangeType = eMeetingEventChangeType.Unknown;
|
||||||
|
|
||||||
public int MeetingWarningMinutes
|
public int MeetingWarningMinutes
|
||||||
{
|
{
|
||||||
get { return _meetingWarningMinutes; }
|
get { return _meetingWarningMinutes; }
|
||||||
@@ -90,24 +96,39 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
|||||||
{
|
{
|
||||||
// Iterate the meeting list and check if any meeting need to do anythingk
|
// Iterate the meeting list and check if any meeting need to do anythingk
|
||||||
|
|
||||||
const double meetingTimeEpsilon = 0.0001;
|
const double meetingTimeEpsilon = 0.05;
|
||||||
foreach (var m in Meetings)
|
foreach (var m in Meetings)
|
||||||
{
|
{
|
||||||
var changeType = eMeetingEventChangeType.Unkown;
|
var changeType = eMeetingEventChangeType.Unknown;
|
||||||
|
|
||||||
if (m.TimeToMeetingStart.TotalMinutes <= m.MeetingWarningMinutes.TotalMinutes) // Meeting is about to start
|
//Debug.Console(2, "Math.Abs(m.TimeToMeetingEnd.TotalMinutes) = {0}", Math.Abs(m.TimeToMeetingEnd.TotalMinutes));
|
||||||
|
if (_previousChangeType != eMeetingEventChangeType.MeetingStartWarning && m.TimeToMeetingStart.TotalMinutes <= m.MeetingWarningMinutes.TotalMinutes && m.TimeToMeetingStart.Seconds > 0) // Meeting is about to start
|
||||||
|
{
|
||||||
|
Debug.Console(2, "MeetingStartWarning. TotalMinutes: {0} Seconds: {1}", m.TimeToMeetingStart.TotalMinutes, m.TimeToMeetingStart.Seconds);
|
||||||
changeType = eMeetingEventChangeType.MeetingStartWarning;
|
changeType = eMeetingEventChangeType.MeetingStartWarning;
|
||||||
else if (Math.Abs(m.TimeToMeetingStart.TotalMinutes) < meetingTimeEpsilon) // Meeting Start
|
}
|
||||||
|
else if (_previousChangeType != eMeetingEventChangeType.MeetingStart && Math.Abs(m.TimeToMeetingEnd.TotalMinutes) < meetingTimeEpsilon) // Meeting Start
|
||||||
|
{
|
||||||
|
Debug.Console(2, "MeetingStart");
|
||||||
changeType = eMeetingEventChangeType.MeetingStart;
|
changeType = eMeetingEventChangeType.MeetingStart;
|
||||||
else if (m.TimeToMeetingEnd.TotalMinutes <= m.MeetingWarningMinutes.TotalMinutes) // Meeting is about to end
|
}
|
||||||
|
else if (_previousChangeType != eMeetingEventChangeType.MeetingEndWarning && m.TimeToMeetingEnd.TotalMinutes <= m.MeetingWarningMinutes.TotalMinutes && m.TimeToMeetingEnd.Seconds > 0) // Meeting is about to end
|
||||||
changeType = eMeetingEventChangeType.MeetingEndWarning;
|
changeType = eMeetingEventChangeType.MeetingEndWarning;
|
||||||
else if (Math.Abs(m.TimeToMeetingEnd.TotalMinutes) < meetingTimeEpsilon) // Meeting has ended
|
else if (_previousChangeType != eMeetingEventChangeType.MeetingEnd && Math.Abs(m.TimeToMeetingEnd.TotalMinutes) < meetingTimeEpsilon) // Meeting has ended
|
||||||
changeType = eMeetingEventChangeType.MeetingEnd;
|
changeType = eMeetingEventChangeType.MeetingEnd;
|
||||||
|
|
||||||
if (changeType != eMeetingEventChangeType.Unkown)
|
if (changeType != eMeetingEventChangeType.Unknown)
|
||||||
OnMeetingChange(changeType, m);
|
{
|
||||||
}
|
// check to make sure this is not a redundant event for one that was fired last
|
||||||
|
if (_previousChangedMeeting == null || (_previousChangedMeeting != m && _previousChangeType != changeType))
|
||||||
|
{
|
||||||
|
_previousChangeType = changeType;
|
||||||
|
_previousChangedMeeting = m;
|
||||||
|
|
||||||
|
OnMeetingChange(changeType, m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -169,8 +190,10 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return StartTime.AddMinutes(-MinutesBeforeMeeting) <= DateTime.Now
|
var joinable = StartTime.AddMinutes(-MinutesBeforeMeeting) <= DateTime.Now
|
||||||
&& DateTime.Now <= EndTime; //.AddMinutes(-5);
|
&& DateTime.Now <= EndTime; //.AddMinutes(-5);
|
||||||
|
Debug.Console(2, "Meeting Id: {0} joinable: {1}", Id, joinable);
|
||||||
|
return joinable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//public string ConferenceNumberToDial { get; set; }
|
//public string ConferenceNumberToDial { get; set; }
|
||||||
|
|||||||
@@ -139,7 +139,20 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
|
|
||||||
public override void Dial(Meeting meeting)
|
public override void Dial(Meeting meeting)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
Debug.Console(1, this, "Dial Meeting: {0}", meeting.Id);
|
||||||
|
var call = new CodecActiveCallItem() { Name = meeting.Title, Number = meeting.Id, Id = meeting.Id, Status = eCodecCallStatus.Dialing, Direction = eCodecCallDirection.Outgoing, Type = eCodecCallType.Video };
|
||||||
|
ActiveCalls.Add(call);
|
||||||
|
OnCallStatusChange(call);
|
||||||
|
|
||||||
|
//ActiveCallCountFeedback.FireUpdate();
|
||||||
|
// Simulate 2-second ring, then connecting, then connected
|
||||||
|
new CTimer(o =>
|
||||||
|
{
|
||||||
|
call.Type = eCodecCallType.Video;
|
||||||
|
SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus.Connecting, call);
|
||||||
|
new CTimer(oo => SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus.Connected, call), 1000);
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -396,14 +409,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
if (_CodecSchedule == null || _CodecSchedule.Meetings.Count == 0
|
if (_CodecSchedule == null || _CodecSchedule.Meetings.Count == 0
|
||||||
|| _CodecSchedule.Meetings[_CodecSchedule.Meetings.Count - 1].StartTime < DateTime.Now)
|
|| _CodecSchedule.Meetings[_CodecSchedule.Meetings.Count - 1].StartTime < DateTime.Now)
|
||||||
{
|
{
|
||||||
_CodecSchedule = new CodecScheduleAwareness(10000);
|
_CodecSchedule = new CodecScheduleAwareness(1000);
|
||||||
for (int i = 0; i < 5; i++)
|
for (int i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
var m = new Meeting();
|
var m = new Meeting();
|
||||||
|
m.MinutesBeforeMeeting = 5;
|
||||||
m.Id = i.ToString();
|
m.Id = i.ToString();
|
||||||
m.Organizer = "Employee " + 1;
|
m.Organizer = "Employee " + 1;
|
||||||
m.StartTime = DateTime.Now.AddMinutes(3).AddHours(i);
|
m.StartTime = DateTime.Now.AddMinutes(3).AddHours(i);
|
||||||
m.EndTime = DateTime.Now.AddHours(i).AddMinutes(30);
|
m.EndTime = DateTime.Now.AddHours(i).AddMinutes(55);
|
||||||
m.Title = "Meeting " + i;
|
m.Title = "Meeting " + i;
|
||||||
m.Calls.Add(new Call() { Number = i + "meeting@fake.com"});
|
m.Calls.Add(new Call() { Number = i + "meeting@fake.com"});
|
||||||
_CodecSchedule.Meetings.Add(m);
|
_CodecSchedule.Meetings.Add(m);
|
||||||
|
|||||||
Reference in New Issue
Block a user