public void AddExp(int exp) { if (exp <= 0) { return; } XRole role = DataManager.Instance.GetCurRole(); int maxLevel = ZTConfig.Instance.DictHeroLevel.Count; if (role.Level >= maxLevel) { return; } role.CurExp += exp; DBHeroLevel levelDB = ZTConfig.Instance.GetDBHeroLevel(role.Level); while (role.CurExp >= levelDB.RequireExp) { role.CurExp -= levelDB.RequireExp; role.Level++; if (role.Level >= maxLevel) { role.CurExp = 0; break; } levelDB = ZTConfig.Instance.GetDBHeroLevel(role.Level); } DataManager.Instance.DataRole.Update(role.Id, role); }
private void TestAvatar() { role = XEntityMgr.singleton.CreateTestRole(); role.EntityObject.AddComponent <XRotation>(); //时装 TempEquipSuit fashions = new TempEquipSuit(); m_FashionList = new List <EquipPart>(); var fashionsuit = XTableMgr.GetTable <FashionSuit>(); for (int i = 0, max = fashionsuit.length; i < max; ++i) { FashionSuit.RowData row = fashionsuit[i]; if (row.FashionID != null) { XEquipUtil.MakeEquip(row.SuitName, row.FashionID, m_FashionList, fashions, (int)row.SuitID); } } //装备 m_EquipList = new List <EquipPart>(); var equipsuit = XTableMgr.GetTable <EquipSuit>(); for (int i = 0, max = equipsuit.length; i < max; ++i) { EquipSuit.RowData row = equipsuit[i]; if (row.EquipID != null) { XEquipUtil.MakeEquip(row.SuitName, row.EquipID, m_EquipList, fashions, -1); } } }
public XRole GetCurRole() { XRole role = null; Roles.TryGetValue(mCurRoleID, out role); return(role); }
public bool SetMount(int mountID) { XRole role = DataManager.Instance.GetCurRole(); if (role == null) { return(false); } role.MountID = mountID; DataRole.Update(role.Id, role); return(true); }
public bool AddRole(int roleId, string name) { if (Roles.ContainsKey(roleId)) { return(false); } XRole role = new XRole(); role.Id = roleId; role.Level = 1; role.Name = name; role.VipLevel = 0; role.CurExp = 0; role.Position = Vector3.zero; role.Rotation = Vector3.zero; DataRole.Insert(roleId, role); return(true); }
//[Rework(Complete = false, Tested = false, Coverage = "0")] //internal bool Kill(Guid id) //{ // return base.ExecuteSql(StoredProcs.Role_Kill, new List<SqlParameter>() { new SqlParameter("@RoleId", id) }); //} public bool Save(XRole role, Guid userId) { List <SqlParameter> paramList = new List <SqlParameter>(); paramList.Add(new SqlParameter("@Id", role.Id)); paramList.Add(new SqlParameter("@Name", role.Name)); paramList.Add(new SqlParameter("@Description", role.Description)); paramList.Add(new SqlParameter("@IsSystem", role.IsSystem)); paramList.Add(new SqlParameter("@IsActive", role.IsActive)); paramList.Add(new SqlParameter("@Created", role.Created)); paramList.Add(new SqlParameter("@CreatedBy", role.CreatedBy)); paramList.Add(new SqlParameter("@LastModified", role.LastModified)); paramList.Add(new SqlParameter("@LastModifiedBy", role.LastModifiedBy)); paramList.Add(new SqlParameter("@Deleted", role.Deleted)); paramList.Add(new SqlParameter("@DeletedBy", role.DeletedBy)); paramList.Add(new SqlParameter() { ParameterName = "@RoleLead", Value = role.RoleLead.HasValue ? role.RoleLead : null }); if (base.ExecuteSql(StoredProcs.Role_Save, paramList)) { //StringBuilder sql = new StringBuilder(); // save the role members //foreach (RoleMember member in role.Members) { this.RoleMember_Save(member, role.Id); } // save the reports for this role //foreach (RoleReport rp in role.Reports) { this.RoleReport_Save(rp, role.Id); } // save the assetTypes //foreach (RoleAssetType rat in role.AssetTypes) { this.RoleAssetType_Save(rat, role.Id); } } return(true); }
/// <summary> /// Конструирует описание пользователя по наименованию. /// Если пользователя с таким наименованием не найдено, то возвращает null /// </summary> /// <param name="sUserName">Наименование пользователя</param> /// <returns></returns> public XUser CreateUser(string sUserName) { ITUser user; using (XStorageConnection con = getConnection()) { con.Open(); XDbCommand cmd = con.CreateCommand(); cmd.CommandText = /* Получим описание пользователя (который может быть сотрудником), * системные привилегии (как выданные явно, так и полученные через роли). * Примечания: - пользователь приложения может не быть сотрудником. * - для пользователя приложения могут быть не заданы роли * - GetWorkdayDuration возвращает количество минут * */ @"SELECT su.ObjectID AS SysUserID, su.IsAdmin, su.IsServiceAccount, emp.ObjectID AS EmpID, emp.LastName, emp.FirstName, emp.EMail, su.SystemPrivileges, sr.Name as RoleName, sr.Description as RoleDescription, sr.Priviliges as RolePrivileges, dbo.GetWorkdayGlobalDuration() as WorkingMinutesInDay, CASE WHEN emp.WorkEndDate < getDate() THEN 0 ELSE 1 END as AccessPermitted FROM SystemUser su WITH (nolock) LEFT JOIN Employee emp WITH (nolock) ON emp.SystemUser = su.ObjectID LEFT JOIN (SystemUser_SystemRoles su_sr WITH (nolock) JOIN SystemRole sr WITH (nolock) ON su_sr.Value = sr.ObjectID ) ON su.ObjectID = su_sr.ObjectID WHERE su.Login = @UserLogin"; cmd.Parameters.Add("UserLogin", DbType.String, ParameterDirection.Input, false, sUserName); using (IDataReader reader = cmd.ExecuteReader()) { XRole[] roles; // массив системных ролей Guid SystemUserID; // идентификатор пользователя Guid EmployeeID = Guid.Empty; // идентификатор сотрудника string sLastName = null; // фамилия сотрудника string sFirstName = null; // имя сотрудника string sEMail = null; // email сотрудника bool bIsAdmin; // признак админа (необграниченного пользователя) bool bIsServiceAccount; // признак сервисного аккаунта int nIndex; // временная - индекс колонки int nPrivileges; // числовая маска привилегий (в БД привилегии лежат как флаги) int nWorkingMinutesInDay; // количество рабочих часов в сутках bool bAccesssPermitted = true; if (reader.Read()) { // получим маску привилегий, выданных пользователю явно nPrivileges = reader.GetInt32(reader.GetOrdinal("SystemPrivileges")); // поле SystemPrivileges - not null SystemUserID = reader.GetGuid(reader.GetOrdinal("SysUserID")); bIsAdmin = reader.GetBoolean(reader.GetOrdinal("IsAdmin")); bIsServiceAccount = reader.GetBoolean(reader.GetOrdinal("IsServiceAccount")); nWorkingMinutesInDay = reader.GetInt32(reader.GetOrdinal("WorkingMinutesInDay")); nIndex = reader.GetOrdinal("EmpID"); if (!reader.IsDBNull(nIndex)) { // если пользователь является сотрудником EmployeeID = reader.GetGuid(nIndex); sLastName = reader.GetString(reader.GetOrdinal("LastName")); sFirstName = reader.GetString(reader.GetOrdinal("FirstName")); bAccesssPermitted = reader.GetInt32(reader.GetOrdinal("AccessPermitted")) == 1; nIndex = reader.GetOrdinal("EMail"); if (!reader.IsDBNull(nIndex)) { sEMail = reader.GetString(nIndex); } } } else { // не нашли пользователя return(CreateAnonymousUser()); } // зачитаем все роли текущего юзера ArrayList aRoles = new ArrayList(); // список объектов XRole - роли пользователя int nIndex_RoleName = reader.GetOrdinal("RoleName"); int nIndex_RoleDescription = reader.GetOrdinal("RoleDescription"); int nIndex_RolePrivileges = reader.GetOrdinal("RolePrivileges"); if (!reader.IsDBNull(nIndex_RoleName)) { // по всем ролям пользователя do { string sDescription = String.Empty; if (!reader.IsDBNull(nIndex_RoleDescription)) { sDescription = reader.GetString(nIndex_RoleDescription); } // объединим маску привилегий с привилегиями текущей роли nPrivileges = nPrivileges | reader.GetInt32(nIndex_RolePrivileges); aRoles.Add(new XRole(reader.GetString(nIndex_RoleName), sDescription)); } while(reader.Read()); } roles = new XRole[aRoles.Count]; aRoles.CopyTo(roles); // превратим маску привилегий в массив объектов XPrivilegeSet privilege_set = PrivilegesHelper.CreatePrivilegeSet((SystemPrivileges)nPrivileges); // создадим описание пользователя и дополним атрибуты, специфичные для нашего приложения user = new ITUser(sUserName, roles, privilege_set); user.SystemUserID = SystemUserID; user.IsUnrestricted = bIsAdmin; user.IsServiceAccount = bIsServiceAccount; user.AccessPermitted = bAccesssPermitted; if (EmployeeID != Guid.Empty) { // если пользователь - сотрудник user.EmployeeID = EmployeeID; user.LastName = sLastName; user.FirstName = sFirstName; user.EMail = sEMail; user.WorkdayDuration = nWorkingMinutesInDay; } } readUserActivityTypes(user, con); readUserManagedOrganizations(user, con); } return(user); }
public XRole Get(Guid Id) { XRole role = null; using (SqlDataReader rdr = base.OpenDataReader(StoredProcs.Role_Get, new List <SqlParameter>() { new SqlParameter("@Id", Id) })) { if ((rdr == null) || (!rdr.HasRows)) { return(null); } #region get the role object role = new XRole(); role.Id = Id; rdr.Read(); role.Name = rdr.IsDBNull(0) ? string.Empty : rdr.GetString(0); role.Description = rdr.IsDBNull(1) ? string.Empty : rdr.GetString(1); role.IsSystem = rdr.IsDBNull(2) ? false : (bool)rdr.GetValue(2); role.IsActive = rdr.IsDBNull(3) ? false : (bool)rdr.GetValue(3); if (!rdr.IsDBNull(4)) { role.RoleLead = rdr.GetGuid(4); } role.Created = rdr.GetDateTime(5); role.CreatedBy = rdr.GetGuid(6); if (!rdr.IsDBNull(7)) { role.LastModified = rdr.GetDateTime(7); } if (!rdr.IsDBNull(8)) { role.LastModifiedBy = rdr.GetGuid(8); } if (!rdr.IsDBNull(9)) { role.Deleted = rdr.GetDateTime(9); } if (!rdr.IsDBNull(10)) { role.DeletedBy = rdr.GetGuid(10); } bool lastModifiedHadValue = role.LastModified.HasValue; DateTime?lastModifiedValue = null; if (lastModifiedHadValue) { lastModifiedValue = role.LastModified.Value; } #endregion #region get the role members //rdr.NextResult(); //if ((rdr != null) && (rdr.HasRows)) //{ // while (rdr.Read()) // { // role.Members.Add(new RoleMember(rdr.GetGuid(0), rdr.GetGuid(1), rdr.GetString(2), rdr.GetDateTime(3), rdr.GetGuid(4), false, false)); // } //} #endregion #region get the reports available to this role //rdr.NextResult(); //if ((rdr != null) && (rdr.HasRows)) //{ // while (rdr.Read()) // { // role.Reports.Add(new RoleReport(rdr.GetGuid(0), rdr.GetGuid(1), rdr.GetString(2), rdr.GetDateTime(3), rdr.GetGuid(4), false, false)); // } //} #endregion #region get the asset types for this role (and their permissions) //rdr.NextResult(); //if ((rdr != null) && (rdr.HasRows)) //{ // while (rdr.Read()) // { // Guid ratId = rdr.GetGuid(0); // RoleAssetType rat = role.AssetType(ratId); // if (rat == null) // { // // load the RoleAssetType // rat = new RoleAssetType(); // rat.Id = ratId; // rat.AssetTypeId = rdr.GetGuid(1); // rat.IsInstance = (bool)rdr.GetValue(2); // rat.IncludeChildren = (bool)rdr.GetValue(3); // rat.IsDirty = false; // rat.IsNew = false; // rat.IsDeleted = false; // role.AssetTypes.Add(rat); // } // // get the permission portion // Guid rolePermissionId = rdr.GetGuid(4); // RolePermission perm = rat.Permission(rolePermissionId); // if (perm == null) // { // // load the RolePermission // perm = new RolePermission(); // perm.Id = rolePermissionId; // perm.PermissionId = rdr.GetInt32(5); // perm.IsIncludesPermission = (bool)rdr.GetValue(6); // perm.FilterExpression = rdr.IsDBNull(7) ? string.Empty : rdr.GetString(7); // perm.IsDirty = false; // perm.IsNew = false; // perm.IsDeleted = false; // rat.Permissions.Add(perm); // } // // get the filter portion // if (rdr.IsDBNull(8)) { continue; } // Filter f = new Filter(); // f.Id = rdr.GetGuid(8); // f.Order = rdr.GetInt32(9); // f.PropertyId = rdr.GetGuid(10); // f.Property = rdr.GetString(11); // f.OperatorId = Core.Enumerations.EnumerationOps.EFilterOperatorFromValue(rdr.GetInt32(12)); // f.Operator = rdr.GetString(13); // f.Value = rdr.IsDBNull(14) ? string.Empty : rdr.GetString(14); // f.DisplayValue = rdr.IsDBNull(15) ? string.Empty : rdr.GetString(15); // perm.Filters.Add(f); // } //} #endregion if (lastModifiedHadValue) { role.LastModified = lastModifiedValue.Value; } else { role.LastModified = null; } role.IsNew = false; role.IsDirty = false; } return(role); }