private XTreeMenuInfo getMenuForEmployee(Guid ObjectID, DomainObjectDataSet dataSet, IXExecutionContext context) { XTreeMenuInfo menu = new XTreeMenuInfo("@@Title", true); menu.CacheMode = XTreeMenuCacheMode.NoCache; menu.ExecutionHandlers.Add(new XUserCodeWeb("CompanyTree_Menu_ExecutionHandler")); // просмотр // Раскоментировать после удаления ссылок на НСИ //menu.Items.AddActionItem("Просмотр", StdActions.DoView).Parameters.Add("ReportURL", StdMenuUtils.GetEmployeeReportURL(context.Config, ObjectID)); DomainObjectData xobj = dataSet.GetLoadedStub("Employee", ObjectID); XObjectRights rights = XSecurityManager.Instance.GetObjectRights(xobj); // Редактировать if (rights.AllowParticalOrFullChange) { menu.Items.AddActionItem("Редактировать", StdActions.DoEdit).Default = true; } // Удалить if (rights.AllowDelete) { menu.Items.AddActionItem("Удалить", StdActions.DoDelete); } // Секция "Отчеты" //XMenuActionItem item; //XMenuSection sec = menu.Items.AddSection("Отчеты"); //item = sec.Items.AddActionItem("Сальдо ДС", "DoView"); //item.Parameters.Add("ReportURL", "x-get-report.aspx?name=r-EmployeeSaldoDS.xml&EmployeeID=@@ObjectID"); /* * item = sec.Items.AddActionItem("Инциденты и списания времени сотрудника", "DoRunReport"); * item.Parameters.Add("ReportName", "ReportEmployeeExpensesList"); * item.Parameters.Add("UrlParams", ".Employee=" + ObjectID); * item = sec.Items.AddActionItem("Баланс списаний сотрудника", "DoRunReport"); * item.Parameters.Add("ReportName", "EmployeeExpensesBalance"); * item.Parameters.Add("UrlParams", ".Employee=" + ObjectID); * item = sec.Items.AddActionItem("Плановая занятость сотрудников", "DoRunReport"); * item.Parameters.Add("ReportName", "Employment"); * item.Parameters.Add("UrlParams", ".Employees=" + ObjectID + "&.Organizations=&.Departments="); */ // Секция "Информация" XMenuSection sec = menu.Items.AddSection("Информация"); fillEmployeeInfoSection(sec, ObjectID, context.Connection); return(menu); }
internal static bool fillEmployeeInfoSection(XMenuSection sec, Guid EmployeeID, XStorageConnection cn) { using (XDbCommand cmd = cn.CreateCommand( "SELECT " + " emp.EMail, emp.Phone, emp.PhoneExt, p.Name AS PositionName, o.Home "+ "FROM Employee emp " + " LEFT JOIN Position p ON emp.Position = p.ObjectID "+ " JOIN Organization o ON emp.Organization = o.ObjectID "+ "WHERE emp.ObjectID = @ObjectID" )) { cmd.Parameters.Add("ObjectID", DbType.Guid, ParameterDirection.Input, false, EmployeeID); bool bIsHome; string sEMail = null; string sPhone = null; string sPhoneExt = null; string sPositionName = null; using (IXDataReader reader = cmd.ExecuteXReader()) { if (reader.Read()) { bIsHome = reader.GetBoolean(reader.GetOrdinal("Home")); if (!reader.IsDBNull(reader.GetOrdinal("EMail"))) { sEMail = reader.GetString(reader.GetOrdinal("EMail")); } if (!reader.IsDBNull(reader.GetOrdinal("Phone"))) { sPhone = reader.GetString(reader.GetOrdinal("Phone")); } if (!reader.IsDBNull(reader.GetOrdinal("PhoneExt"))) { sPhoneExt = reader.GetString(reader.GetOrdinal("PhoneExt")); } if (!reader.IsDBNull(reader.GetOrdinal("PositionName"))) { sPositionName = reader.GetString(reader.GetOrdinal("PositionName")); } sec.Items.AddInfoItem("EMail", sEMail); if (bIsHome && sPhoneExt != null) { sec.Items.AddInfoItem("Внутренний телефон", sPhoneExt); } else { sec.Items.AddInfoItem("Телефон", (sPhone != null && sPhone.Length > 0 ? sPhone : "") + (sPhoneExt != null && sPhoneExt.Length > 0 ? "(" + sPhoneExt + ")" : "") ); } if (sPositionName != null) { sec.Items.AddInfoItem("Должность", sPositionName); } return(true); } } return(false); } }