/// <summary> /// Returns all TargetUser's recordings that are watchable by the AccessingUser /// </summary> /// <param name="AccessingUser"></param> /// <param name="TargetUser"></param> /// <returns>OCL.Recordings</returns> internal Recordings GetAllWatchableRecordings(OCL.User AccessingUser, OCL.User TargetUser) { string sSQL = ""; bool GetOwned = false; if(AccessingUser.mvarIsSuperUser) { sSQL = "SELECT ID FROM tblRecording WHERE ID <> " + ((OCL.Recording)(GetUnassignedObject(OCL.OysterUnassignedObjects.Recording))).ID + " AND OwnerId = " + TargetUser.ID; } else { GetOwned = true; sSQL = "SELECT DISTINCT tblGroupTokens.ObjectId FROM tblGroupTokens LEFT OUTER JOIN tblRecording " + "ON tblRecording.OwnerId = tblGroupTokens.UserId WHERE tblGroupTokens.UserId = " + AccessingUser.ID + " AND tblGroupTokens.ObjectTypeId = 2" + " AND tblGroupTokens.IsVisible <> 0" + " AND tblGroupTokens.IsUsable <> 0" + " AND tblGroupTokens.ObjectId <> " + ((OCL.Recording)(GetUnassignedObject(OCL.OysterUnassignedObjects.Recording))).ID + " AND tblRecording.OwnerId = " + TargetUser.ID; } System.Data.DataSet DS = RF.GetDataSet(sSQL); OCL.Recordings AR = new OCL.Recordings(); foreach(DataRow r in DS.Tables[0].Rows) { AR.Add(GetRecording(Convert.ToInt32(r[0]))); } if(GetOwned == true) { sSQL = "SELECT * FROM tblRecording WHERE OwnerId = " + AccessingUser.ID; DS = RF.GetDataSet(sSQL); foreach(DataRow r in DS.Tables[0].Rows) { foreach(OCL.Recording OR in AR) { if(OR.ID == Convert.ToInt32(r[0])) goto skipAdd; } AR.Add(FillRecording(r)); skipAdd:{} } } return AR; }
/// <summary> /// Returns all TargetGroup's recordings that are watchable to the AccessingUser /// </summary> /// <param name="AccessingUser"></param> /// <param name="TargetUser"></param> /// <returns>OCL.Recordings</returns> internal Recordings GetAllWatchableRecordings(OCL.User AccessingUser, OCL.Group TargetGroup) { string sSQL = ""; if(AccessingUser.mvarIsSuperUser) { sSQL = "SELECT ObjectId FROM tblGroupTokens WHERE GroupId = " + TargetGroup.ID + " AND ObjectTypeId = 2" + " AND IsVisible <> 0 " + " AND IsUsable <> 0" + " AND ObjectId <> " + ((OCL.Recording)(GetUnassignedObject(OCL.OysterUnassignedObjects.Recording))).ID; } else { sSQL = "SELECT ObjectId FROM tblGroupTokens WHERE GroupId = " + TargetGroup.ID + " AND UserId = " + AccessingUser.ID + " AND ObjectTypeId = 2" + " AND IsVisible <> 0" + " AND IsUsable <> 0" + " AND ObjectId <> " + ((OCL.Recording)(GetUnassignedObject(OCL.OysterUnassignedObjects.Recording))).ID; } System.Data.DataSet DS = RF.GetDataSet(sSQL); OCL.Recordings S = new OCL.Recordings(); if(DS.Tables[0].Rows.Count == 0) { foreach(DataRow r in DS.Tables[0].Rows) { S.Add(GetRecording(Convert.ToInt32(r[0]))); } } return S; }
internal object GetAllGroupObjectsWithPermission(OCL.User AccessingUser, OCL.OysterObjectType OBT, OCL.OysterPermissions OP) { string sSQL = "SELECT DISTINCT ObjectId FROM tblGroupTokens WHERE UserId = " + AccessingUser.ID + " AND ObjectTypeId = " + Convert.ToInt32(OBT) + " AND " + GetPermissionColumnName(OP) + " = " + Convert.ToInt32(OP); DataSet DS = RF.GetDataSet(sSQL); if(DS.Tables[0].Rows.Count == 0) return null; switch(OBT) { case OCL.OysterObjectType.User: OCL.Users US = new OCL.Users(); foreach(DataRow R in DS.Tables[0].Rows) { US.Add(GetUser(Convert.ToInt32(R[0]))); } return US; case OCL.OysterObjectType.Recording: OCL.Recordings RS = new OCL.Recordings(); foreach(DataRow R in DS.Tables[0].Rows) { RS.Add(GetRecording(Convert.ToInt32(R[0]))); } return RS; case OCL.OysterObjectType.Control: OCL.Controls XS = new OCL.Controls(); foreach(DataRow R in DS.Tables[0].Rows) { XS.Add(GetControl(Convert.ToInt32(R[0]))); } return XS; case OCL.OysterObjectType.Source: OCL.Sources S = new OCL.Sources(); foreach(DataRow R in DS.Tables[0].Rows) { S.Add(GetSource(Convert.ToInt32(R[0]))); } return S; case OCL.OysterObjectType.Scene: OCL.Scenes SS = new OCL.Scenes(); foreach(DataRow R in DS.Tables[0].Rows) { SS.Add(GetScene(Convert.ToInt32(R[0]))); } return SS; case OCL.OysterObjectType.Note: OCL.Notes N = new OCL.Notes(); foreach(DataRow R in DS.Tables[0].Rows) { N.Add(GetNote(Convert.ToInt32(R[0]))); } return N; default: return null; } }