aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/User.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities/User.cs')
-rw-r--r--MediaBrowser.Controller/Entities/User.cs39
1 files changed, 38 insertions, 1 deletions
diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs
index e0682c9ee..6ba8701f7 100644
--- a/MediaBrowser.Controller/Entities/User.cs
+++ b/MediaBrowser.Controller/Entities/User.cs
@@ -6,6 +6,7 @@ using MediaBrowser.Model.Connect;
using MediaBrowser.Model.Serialization;
using System;
using System.IO;
+using System.Linq;
using System.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
@@ -35,7 +36,7 @@ namespace MediaBrowser.Controller.Entities
public string ConnectUserName { get; set; }
public string ConnectUserId { get; set; }
- public UserLinkType ConnectLinkType { get; set; }
+ public UserLinkType? ConnectLinkType { get; set; }
public string ConnectAccessKey { get; set; }
/// <summary>
@@ -259,5 +260,41 @@ namespace MediaBrowser.Controller.Entities
Configuration = config;
UserManager.UpdateConfiguration(this, Configuration);
}
+
+ public bool IsParentalScheduleAllowed()
+ {
+ return IsParentalScheduleAllowed(DateTime.UtcNow);
+ }
+
+ public bool IsParentalScheduleAllowed(DateTime date)
+ {
+ var schedules = Configuration.AccessSchedules;
+
+ if (schedules.Length == 0)
+ {
+ return true;
+ }
+
+ return schedules.Any(i => IsParentalScheduleAllowed(i, date));
+ }
+
+ private bool IsParentalScheduleAllowed(AccessSchedule schedule, DateTime date)
+ {
+ if (date.Kind != DateTimeKind.Utc)
+ {
+ throw new ArgumentException("Utc date expected");
+ }
+
+ var localTime = date.ToLocalTime();
+
+ return localTime.DayOfWeek == schedule.DayOfWeek && IsWithinTime(schedule, localTime);
+ }
+
+ private bool IsWithinTime(AccessSchedule schedule, DateTime localTime)
+ {
+ var hour = localTime.TimeOfDay.TotalHours;
+
+ return hour >= schedule.StartHour && hour <= schedule.EndHour;
+ }
}
}