public static List<EpgListing> LoadEpgListings(int UserOid, int[] ChannelOids, IEnumerable<NUtility.EPGEvent> Data, RecordingDirectory UserDefault = null) { Stopwatch timer = new Stopwatch(); timer.Start(); Logger.Log("Loading EPG Listings [0]: " + timer.Elapsed); var config = new Configuration(); if(UserDefault == null) UserDefault = RecordingDirectory.LoadUserDefault(UserOid); var allowedRecordings = EpgRecordingData.LoadAllowedRecordings(UserOid); Logger.Log("Loading EPG Listings [2]: " + timer.Elapsed); timer.Stop(); return Data.Select(x => { var listing = new EpgListing(x); if (allowedRecordings.ContainsKey(x.OID)) { listing.PrePadding = allowedRecordings[x.OID].PrePadding; listing.PostPadding = allowedRecordings[x.OID].PostPadding; listing.RecordingDirectoryId = allowedRecordings[x.OID].RecordingDirectoryId; listing.Keep = allowedRecordings[x.OID].Keep; listing.IsRecurring = allowedRecordings[x.OID].IsRecurring; listing.RecordingType = allowedRecordings[x.OID].RecordingType; listing.RecordingOid = allowedRecordings[x.OID].RecordingOid; listing.IsRecording = true; } else { listing.PrePadding = config.PrePadding; listing.PostPadding = config.PostPadding; listing.RecordingDirectoryId = UserDefault == null ? null : UserDefault.RecordingDirectoryId; } return listing; }).ToList(); }
public static RecordingDirectory Create(int UserOid, string Name) { var db = DbHelper.GetDatabase(); // check if exists if (db.ExecuteScalar<int>("select count(*) from recordingdirectory where useroid = @0 and lower(name) = @1", UserOid, Name.Trim().ToLower()) > 0) throw new ArgumentException("A Recording Directory with the name '{0}' already exists.".FormatStr(Name)); string username = User.GetUsername(UserOid); RecordingDirectory directory = new RecordingDirectory() { UserOid = UserOid, Name = Name.Trim(), Username = username }; db.Insert(directory); Configuration.Write(); return directory; }
public static User CreateUser(string Username, string EmailAddress, string Password, UserRole UserRole, bool Administrator = false, DateTime? LastLoggedInUtc = null) { var db = DbHelper.GetDatabase(); db.BeginTransaction(); try { User user = new User(); user.Username = Username; user.EmailAddress = EmailAddress; if(LastLoggedInUtc == null) LastLoggedInUtc = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); user.LastLoggedInUtc = LastLoggedInUtc.Value; user.Password = Password; user.Administrator = Administrator; user.UserRole = UserRole; user.DateCreatedUtc = DateTime.UtcNow; if (db.Insert("user", "oid", true, user) == null) throw new Exception("Failed to create user."); // insert default channels. db.Execute("insert into [userchannel](useroid, channeloid,[enabled],number) select @0, oid, [enabled], number from channel", user.Oid); // insert default groups var channelGroups = ChannelGroup.LoadAll(Globals.SHARED_USER_OID); foreach(var cg in channelGroups) { ChannelGroup cgNew = new ChannelGroup(); cgNew.UserOid = user.Oid; cgNew.ParentOid = cg.Oid; cgNew.Enabled = true; cgNew.Name = ""; cgNew.OrderOid = cg.OrderOid; db.Insert("channelgroup", "oid", true, cgNew); } // create default recording directory RecordingDirectory dir = new RecordingDirectory() { UserOid = user.Oid, Username = user.Username, IsDefault = true, Name = "Default", Path = "" }; db.Insert("recordingdirectory", "oid", true, dir); user.DefaultRecordingDirectoryOid = dir.Oid; db.Save(user); db.CompleteTransaction(); return user; } catch (Exception ex) { Logger.Log("Failed to create user: " + ex.Message + Environment.NewLine + ex.StackTrace); db.AbortTransaction(); return null; } }