/// <summary> /// Checks whether the current user to personalize workspace /// </summary> /// <returns></returns> public static bool CheckPersonalization() { int profileId = GetProfileIdByUser(); CustomizationProfileEntity profile = (CustomizationProfileEntity)BusinessManager.Load(CustomizationProfileEntity.ClassName, PrimaryKeyId.Parse(profileId.ToString())); return(profile.WorkspacePersonalization); }
/// <summary> /// Creates the entity object. /// </summary> /// <param name="metaClassName">Name of the meta class.</param> /// <param name="primaryKeyId">The primary key id.</param> /// <returns></returns> protected override EntityObject CreateEntityObject(string metaClassName, PrimaryKeyId?primaryKeyId) { if (metaClassName == CustomizationProfileEntity.ClassName) { CustomizationProfileEntity retVal = new CustomizationProfileEntity(); retVal.PrimaryKeyId = primaryKeyId; return(retVal); } return(base.CreateEntityObject(metaClassName, primaryKeyId)); }
/// <summary> /// Creates the entity object. /// </summary> /// <param name="metaClassName">Name of the meta class.</param> /// <param name="primaryKeyId">The primary key id.</param> /// <returns></returns> protected override EntityObject CreateEntityObject(string metaClassName, PrimaryKeyId? primaryKeyId) { if (metaClassName == CustomizationProfileEntity.ClassName) { CustomizationProfileEntity retVal = new CustomizationProfileEntity(); retVal.PrimaryKeyId = primaryKeyId; return retVal; } return base.CreateEntityObject(metaClassName, primaryKeyId); }
/// <summary> /// Pres the delete inside transaction. /// </summary> /// <param name="context">The context.</param> protected override void PreDeleteInsideTransaction(BusinessContext context) { base.PreDeleteInsideTransaction(context); CustomizationProfileEntity entity = (CustomizationProfileEntity)BusinessManager.Load(CustomizationProfileEntity.ClassName, context.GetTargetPrimaryKeyId().Value); int profileId = (int)entity.PrimaryKeyId.Value; // Reset users to default profile if (profileId != -1) { EntityObject[] list = BusinessManager.List(CustomizationProfileUserEntity.ClassName, new FilterElementCollection(FilterElement.EqualElement(CustomizationProfileUserEntity.FieldProfileId, profileId)).ToArray()); foreach (CustomizationProfileUserEntity userProfile in list) { string userId = userProfile.PrincipalId.ToString(); BusinessManager.Delete(userProfile); DataCache.RemoveByUser(userId); } } // Delete profile info from cls_CustomizationItem EntityObject[] customizationItems = BusinessManager.List(CustomizationItemEntity.ClassName, new FilterElementCollection(FilterElement.EqualElement(CustomizationItemEntity.FieldProfileId, profileId)).ToArray()); foreach (EntityObject obj in customizationItems) { BusinessManager.Delete(obj); } // Delete profile info from cls_CustomPage EntityObject[] customPageItems = BusinessManager.List(CustomPageEntity.ClassName, new FilterElementCollection(FilterElement.EqualElement(CustomPageEntity.FieldProfileId, profileId)).ToArray()); foreach (EntityObject obj in customizationItems) { BusinessManager.Delete(obj); } // Delete history SqlHelper.ExecuteNonQuery(SqlContext.Current, System.Data.CommandType.StoredProcedure, "HistoryEntityDelete", SqlHelper.SqlParameter("@ClassName", SqlDbType.NVarChar, 250, CustomizationProfileEntity.ClassName), SqlHelper.SqlParameter("@ObjectId", SqlDbType.VarChar, 36, profileId.ToString())); }
/// <summary> /// Postcreate inside transaction. /// </summary> /// <param name="context">The context.</param> protected override void PostCreateInsideTransaction(BusinessContext context) { base.PostCreateInsideTransaction(context); int userId = (int)(PrimaryKeyId)context.Request.Target.Properties[CustomizationProfileUserEntity.FieldPrincipalId].Value; // New profile defines new Left Menu so we should empty cache. DataCache.RemoveByUser(userId.ToString()); // Check WorkspacePersonalization flag in profile and clear user settings for dashboards if the value is False. CustomizationProfileUserEntity profileUserEntity = (CustomizationProfileUserEntity)context.Request.Target; PrimaryKeyId profileId = profileUserEntity.ProfileId; CustomizationProfileEntity profileEntity = (CustomizationProfileEntity)BusinessManager.Load(CustomizationProfileEntity.ClassName, profileId); if (!profileEntity.WorkspacePersonalization) { FilterElementCollection filters = new FilterElementCollection(); filters.Add(FilterElement.EqualElement(CustomPageEntity.FieldUserId, userId)); foreach (EntityObject page in BusinessManager.List(CustomPageEntity.ClassName, filters.ToArray())) BusinessManager.Delete(page); } }
/// <summary> /// Preupdates inside transaction. /// </summary> /// <param name="context">The context.</param> protected override void PreUpdateInsideTransaction(BusinessContext context) { base.PreUpdateInsideTransaction(context); // Check that the value of WorkspacePersonalization property changed from True to False CustomizationProfileEntity entity = (CustomizationProfileEntity)BusinessManager.Load(CustomizationProfileEntity.ClassName, context.GetTargetPrimaryKeyId().Value); if (entity != null && (bool)entity.WorkspacePersonalization && !(bool)context.Request.Target.Properties[CustomizationProfileEntity.FieldWorkspacePersonalization].Value) { int profileId = (int)context.GetTargetPrimaryKeyId().Value; List <string> users = new List <string>(); if (profileId > 0) { // Get users by profile FilterElementCollection fec = new FilterElementCollection(); fec.Add(FilterElement.EqualElement(CustomizationProfileUserEntity.FieldProfileId, profileId)); foreach (CustomizationProfileUserEntity user in BusinessManager.List(CustomizationProfileUserEntity.ClassName, fec.ToArray())) { users.Add(user.PrimaryKeyId.Value.ToString()); } } else // default profile { // 1. Get list all users using (IDataReader reader = Mediachase.IBN.Business.User.GetListAll()) { while (reader.Read()) { users.Add(reader["UserId"].ToString()); } } // 2. Exclude users with non-default profile EntityObject[] entityList = BusinessManager.List(CustomizationProfileUserEntity.ClassName, (new FilterElementCollection()).ToArray()); foreach (CustomizationProfileUserEntity puEntity in entityList) { users.Remove(puEntity.PrincipalId.ToString()); } } // Remove CustomPages for all users in Profile FilterElementCollection filters = new FilterElementCollection(); OrBlockFilterElement orBlock = new OrBlockFilterElement(); foreach (string userId in users) { orBlock.ChildElements.Add(FilterElement.EqualElement(CustomPageEntity.FieldUserId, userId)); } filters.Add(orBlock); foreach (EntityObject page in BusinessManager.List(CustomPageEntity.ClassName, filters.ToArray())) { BusinessManager.Delete(page); } } }