public static OrgInfo getOrgInfo(OrgChart manager, OrgChart reportOne, OrgChart reportTwo) { int numImportantReports = 0; foreach (OrgChart directReport in manager.directReports) { OrgInfo orgInfo = getOrgInfo(directReport, reportOne, reportTwo); if (orgInfo.lowestCommonManager != null) { return(orgInfo); } numImportantReports += orgInfo.numImportantReports; } if (manager == reportOne || manager == reportTwo) { numImportantReports++; } OrgChart lowestCommonManager = numImportantReports == 2 ? manager : null; OrgInfo newOrgInfo = new OrgInfo(lowestCommonManager, numImportantReports); return(newOrgInfo); }
private List <OrgChart> DataTableToList(DataTable dt, string name) { List <OrgChart> lstUsers = new List <OrgChart>(); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { OrgChart User = new OrgChart(); User.UserId = DataType.ToInt64(dt.Rows[i]["UserId"].ToString()); User.CompanyId = DataType.ToInt64(dt.Rows[i]["CompanyId"].ToString()); User.ReportToId = DataType.ToInt64(dt.Rows[i]["ReportToId"].ToString()); User.Id = DataType.ToInt32(dt.Rows[i]["UserId"].ToString()); User.FirstName = dt.Rows[i]["FirstName"].ToString(); User.LastName = dt.Rows[i]["LastName"].ToString(); if (dt.Columns.Contains("ModifyDate") && !string.IsNullOrEmpty(dt.Rows[i]["ModifyDate"].ToString())) { User.Update_at = DateTime.Parse(dt.Rows[i]["ModifyDate"].ToString()); } User.Picture = dt.Columns.Contains("Picture") ? dt.Rows[i]["Picture"].ToString() : null; User.UserName = dt.Columns.Contains("UserName") ? dt.Rows[i]["UserName"].ToString() : null; User.Email = dt.Columns.Contains("Email") ? dt.Rows[i]["Email"].ToString() : null; User.Address = dt.Columns.Contains("Address") ? dt.Rows[i]["Address"].ToString() : null; User.Contact = dt.Columns.Contains("Contact") ? dt.Rows[i]["Contact"].ToString() : null; User.ActiveStatus = dt.Columns.Contains("IsActive") ? bool.Parse(dt.Rows[i]["IsActive"].ToString()) : false; User.RoleId = (dt.Columns.Contains("RoleId")) ? Convert.ToInt32(dt.Rows[i]["RoleId"].ToString()) : 0; User.RoleName = (dt.Columns.Contains("RoleName")) ? dt.Rows[i]["RoleName"].ToString() : ""; User.ClientName = (dt.Columns.Contains("ClientName")) ? dt.Rows[i]["ClientName"].ToString() : ""; User.ReportTo = (dt.Columns.Contains("ReportTo")) ? dt.Rows[i]["ReportTo"].ToString() : ""; User.Designation = (dt.Columns.Contains("Designation")) ? dt.Rows[i]["Designation"].ToString() : ""; lstUsers.Add(User); } } return(lstUsers); }
private int PopulateOrgChart(Person person, int currentDepth, OrgChart node) { if (person != null) { int maxdepth = currentDepth; List <Person> subordinates = Data.Where(x => x.BossId == person.Id).ToList(); if (subordinates != null) { foreach (var subordinate in subordinates) { maxdepth = currentDepth + 1; //var temp = new OrgChart { Name = person.GivenName + " " + person.FamilyName + "(" + person.Title + ")", Subordinates = new List<OrgChart>() }; var subordinateOrgChart = new OrgChart { Name = subordinate.GivenName + " " + subordinate.FamilyName + "(" + subordinate.Title + ")", Subordinates = new List <OrgChart>() }; node.Subordinates.Add(subordinateOrgChart); int depth = PopulateOrgChart(subordinate, maxdepth, subordinateOrgChart); if (depth > maxdepth) { maxdepth = depth; } } } return(maxdepth); } return(0); }
public override string GetDesignTimeHtml() { StringWriter sw = new StringWriter(); HtmlTextWriter writer = new HtmlTextWriter(sw); //HtmlTextWriterStyle.Width //writer.AddStyleAttribute ( HtmlTextWriterStyle.Width ,); wb=(OrgChart)Component; //wb.RecordCount=225; wb.RenderControl(writer); //wb.RenderEndTag (writer); /* writer.Write("<table bgcolor=silver width=100% cellpadding=2 cellspacing=0 border=1 style='border-collapse:collapse;'>"); writer.Write("<tr><td valign='top'>"); writer.Write("<div>组织结构图</div>"); writer.Write("</td><tr>"); writer.Write("<tr><td valign='top'>"); writer.Write("Version 1.0.0.0,2004.10," + this.AllowResize.ToString () ); writer.Write("</td><tr>"); writer.Write("</td></tr></table>"); */ return sw.ToString(); }
private text Text(OrgChart l) { text a = new text(); a.contact = l.Contact; a.name = l.FirstName + " " + l.LastName + "???" + "/User/Edit?Id=" + l.Id; a.title = l.Designation; return(a); }
public void GetOrgChartForExistingPersonWithMOQ() { Mock <PersonDataAccess> mockPersonDataAccess = new Mock <PersonDataAccess>(); UserController _controller = new UserController(mockPersonDataAccess.Object); var orgChart = new OrgChart(); int depth; mockPersonDataAccess.Setup(i => i.GetOrgChart(1, out depth)).Returns(orgChart); var orgChartFromController = _controller.GetOrgChart(1) as JsonResult <OrgChart>; Assert.AreEqual(orgChart, orgChartFromController.Content); }
/// <summary> /// Generated Org chart that reports to the specified person /// </summary> /// <param name="personId"></param> /// <param name="depth">Depth of the Org tree</param> /// <returns></returns> //Method made virtual for MOQ support public virtual OrgChart GetOrgChart(int personId, out int depth) { Person person = Data.Find(x => x.Id == personId); depth = 0; if (person != null) { OrgChart org = new OrgChart { Name = person.GivenName + " " + person.FamilyName + "(" + person.Title + ")", Subordinates = new List <OrgChart>() }; depth = PopulateOrgChart(person, 0, org); return(org); } return(null); }
public void DisplayEmployeeHierarchy(IList <Employee> employees) { OrgChart.Nodes.Clear(); foreach (Employee employee in employees) { TreeNode node = GetNode(employee); IList <TreeNode> children = GetChildren(employee); foreach (TreeNode childNode in children) { node.Nodes.Add(childNode); } OrgChart.Nodes.Add(node); } OrgChart.ExpandAll(); }
protected void SetOrgObjectItemDate(AuxiliaryItem OrgObjItem, string sItemFldName, DateTime dtDat) { ItemField Fld = null; //--- Get the item field name Fld = GetSBMItemFieldByDatabaseName(OrgObjItem, sItemFldName); //--- Set the null value or date value to the item field if (OrgChart.IsNullDate(dtDat)) { Fld.SetNullValue(); } else { Fld.SetDateOnlyValue(dtDat); } }
public IHttpActionResult GetOrgChart(int personId) { try { int orgDepth = 0; OrgChart orgChart = _personDataAccess.GetOrgChart(personId, out orgDepth); if (orgChart == null) { return(Content(HttpStatusCode.NotFound, "The Org Chart could not be found")); } return(Json(orgChart)); } catch (Exception ex) { //We can add some logging here in production environment return(InternalServerError(ex)); } }
public ActionResult EditPrecedence(OrgChart Org) { DSRCManagementSystemEntities1 db = new DSRCManagementSystemEntities1(); var UpdatePrecedenceOrder = db.OrgCharts.FirstOrDefault(x => x.UserID == Org.UserID); var PrecedenceOrderCheck = db.OrgCharts.FirstOrDefault(x => x.DepartmentID == Org.DepartmentID && x.PrecedenceOrder == Org.PrecedenceOrder); //var ExistingPrecedenceOrder = db.OrgCharts.FirstOrDefault(x => x.PrecedenceOrder == Org.PrecedenceOrder); if (PrecedenceOrderCheck == null) { if (TryUpdateModel(UpdatePrecedenceOrder)) { db.SaveChanges(); } return(Json(new { Result = "Success", URL = @Url.Action("AlertPopUp", "Popup") }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { Result = "PrecedenceOrderCheck", URL = @Url.Action("AlertPopUp", "Popup") }, JsonRequestBehavior.AllowGet)); } }
public IHttpActionResult GetOrgChartDepth() { try { int depth = 0; OrgChart orgChart = _personDataAccess.GetOrgChart(1, out depth); if (orgChart == null) { return(Content(HttpStatusCode.NotFound, "The Org Chart depth could not be found")); } //return Json(new { Depth = depth }); //return Json(depth); return(Content(HttpStatusCode.OK, depth)); } catch (Exception ex) { //We can add some logging here in production environment return(InternalServerError(ex)); } }
public static OrgChart GetLowestCommonManager(OrgChart topManager, OrgChart reportOne, OrgChart reportTwo) { return(getOrgInfo(topManager, reportOne, reportTwo).lowestCommonManager); }
public OrgInfo(OrgChart lowestCommonManager, int numImportantReports) { this.lowestCommonManager = lowestCommonManager; this.numImportantReports = numImportantReports; }
public static OrgChart GetLowestCommonManager(OrgChart topManager, OrgChart reportOne, OrgChart reportTwo) { // Write your code here. return(getOrgInfo(topManager, reportOne, reportTwo).lowestCommonManager); // Replace this line. }
public ActionResult CreatePrecedence(OrgPrecedence OrgChart) { ViewBag.Lbl_department = CommonLogic.getLabelName(2).ToString(); ViewBag.Lbl_depgroup = CommonLogic.getLabelName(3).ToString(); try { DSRCManagementSystemEntities1 db = new DSRCManagementSystemEntities1(); var DepartmentList = db.Departments.ToList(); var UserNameFilteration = db.Users.ToList(); ViewBag.DepartmentIdList = new SelectList(DepartmentList, "DepartmentId", "DepartmentName"); ViewBag.FirstNameList = new SelectList(UserNameFilteration, "UserID", "FirstName"); var NameAndPrecedenceCheck = db.OrgCharts.FirstOrDefault(x => x.UserID == OrgChart.UserID && x.PrecedenceOrder == OrgChart.PrecedenceOrder); var DepartmentPrecedenceCheck = db.OrgCharts.FirstOrDefault(x => x.DepartmentID == OrgChart.DepartmentID && x.PrecedenceOrder == OrgChart.PrecedenceOrder); var UserNameCheck = db.OrgCharts.FirstOrDefault(x => x.UserID == OrgChart.UserID); if (OrgChart.UserID != 0) { if (UserNameCheck == null) { if (DepartmentPrecedenceCheck == null) { if (NameAndPrecedenceCheck == null) { if (ModelState.IsValid) { var t = new OrgChart { UserID = OrgChart.UserID, DepartmentID = OrgChart.DepartmentID, PrecedenceOrder = OrgChart.PrecedenceOrder }; db.OrgCharts.AddObject(t); db.SaveChanges(); return(Json(new { Result = "Success", URL = @Url.Action("AlertPopUp", "Popup") }, JsonRequestBehavior.AllowGet)); } } else { return(Json("ExistingPrecedenceOrder", JsonRequestBehavior.AllowGet)); } } else { return(Json("ExistingDepartmentPrecedenceCheck", JsonRequestBehavior.AllowGet)); } } else { return(Json("UserNameCheck", JsonRequestBehavior.AllowGet)); } } else { return(Json("EmployeeCheck", JsonRequestBehavior.AllowGet)); } } catch (Exception Ex) { string actionName = this.ControllerContext.RouteData.Values["action"].ToString(); string controllerName = this.ControllerContext.RouteData.Values["controller"].ToString(); ExceptionHandlingController.ExceptionDetails(Ex, actionName, controllerName); } return(View()); }
public override void Run() { /*TEST * Library.Windows.Windows.Pause(20000); * return; */ OrgChart SAPOrgCha = null; OrgObject SAPOrgObj = null; Table Tab = null; AuxiliaryItem OrgChaItem = null, OrgObjItem = null; UserList UsrLst = null; User Usr = null; Hashtable UsrTab = null; ItemList OrgChaItemLst = null, UnitItemLst = null, PosItemLst = null, PerItemLst = null, CosCenItemLst = null, OrgObjItemLst = null; int nPerNum = Global.IntegerNull, nProgIdx = Global.IntegerNull, nAllCnt = Global.IntegerNull; //--- Create a new start import message CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_StartImpSAPOrgCha); //--- Read the SAP org-chart SAPOrgCha = new OrgChart(); SAPOrgCha = OrgChart.FromSAPFiles(ObjectFileWatcher.FileName, ReferenceFileWatcher.FileName); //--- Create a new read server users message CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_ReadOrgObjsSvr.Replace("%svr%", GetServer().ServerName)); //--- Read the users UsrLst = ReadAllSBMUsers(); //--- Init the user table and the AD user info UsrTab = new Hashtable(); //--- Add the user to the user table for (int nIdx = 0; nIdx < UsrLst.Count; nIdx++) { //--- Get the user and the personnel number Usr = UsrLst[nIdx]; nPerNum = String.IsNullOrEmpty(Usr.GetEmailCC()) ? 0 : Convert.ToInt32(Usr.GetEmailCC()); //--- Check personnel number not exists if (nPerNum == 0) { continue; } //--- Check user exists in the user table else if (UsrTab[nPerNum] == null) { UsrTab.Add(nPerNum, Usr); } else { //--- Create a new start import message CreateMessage ( ProgressMessage.enMessageState.Warning, ProgMsg_UsrPerNumExi .Replace("%usr%", Usr.GetDisplayName()) .Replace("%num%", nPerNum.ToString()) ); } } //--- Read the orag objects OrgChaItemLst = ReadSBMItems(TabName_OrgCha, SQLWhere_OrgCha_NumSky.Replace("%num%", FldVal_OrgCha_Num_Sky.ToString())); UnitItemLst = ReadSBMItems(TabName_Unit); PosItemLst = ReadSBMItems(TabName_Pos); PerItemLst = ReadSBMItems(TabName_Per); CosCenItemLst = ReadSBMItems(TabName_CosCen); //--- Find the org-chart item wit the Sky number OrgChaItem = (AuxiliaryItem)OrgChaItemLst.FindByItemFieldValue(FldName_OrgCha_Num, FieldList.enFieldIdent.DatabaseName, FldVal_OrgCha_Num_Sky); //--- Check org-chart item exists if (OrgChaItem == null) { //--- Init the Sky org-chart and add to the org-chart items OrgChaItem = GetSBMTable(TabName_OrgCha).NewAuxiliaryItem(); OrgChaItemLst.Add(OrgChaItem); //--- Tag the org-chart item for create OrgChaItem.Tag = enAction.Create; } //--- Tag the org-chart item for update else { OrgChaItem.Tag = enAction.Update; } //--- Update the org-chart item values GetSBMItemFieldByDatabaseName(OrgChaItem, FldName_OrgCha_Num).SetIntegerValue(FldVal_OrgCha_Num_Sky); OrgChaItem.SetActive(true); //--- Create a new read AD users message CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_ImpSAPOrgObjs); //--- Import the SAP org-objects for (int nIdx = 0; nIdx < SAPOrgCha.OrgObjects.Count; nIdx++) { //--- Get the SAP object and the table SAPOrgObj = SAPOrgCha.OrgObjects[nIdx]; Tab = GetOrgObjectTable(SAPOrgObj.ObjectType); //--- Get the table name dependend on the SAP object type if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Unit) { OrgObjItemLst = UnitItemLst; } else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Position) { OrgObjItemLst = PosItemLst; } else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Person) { OrgObjItemLst = PerItemLst; } else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.CostCenter) { OrgObjItemLst = CosCenItemLst; } else { throw new Exception(ErrMsg_InvSAPObjTyp.Replace("%typ%", SAPOrgObj.ObjectType.ToString())); } //--- Find the orga object item OrgObjItem = (AuxiliaryItem)OrgObjItemLst.FindByItemFieldValue(FldName_OrgObj_Num, FieldList.enFieldIdent.DatabaseName, SAPOrgObj.ObjectNumber); //--- Check org-object item exists if (OrgObjItem == null) { //--- Init the orga object and add to the org-object items OrgObjItem = Tab.NewAuxiliaryItem(); OrgObjItemLst.Add(OrgObjItem); //--- Tag the org-object item with the crsate action OrgObjItem.Tag = enAction.Create; } //--- Tag the org-object item with the update action else { OrgObjItem.Tag = enAction.Update; } //--- Set the values OrgObjItem.SetTitle(SAPOrgObj.LongName); OrgObjItem.SetActive(SAPOrgObj.IsActiveNow()); GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_OrgObj_Num).SetIntegerValue(SAPOrgObj.ObjectNumber); SetOrgObjectItemDate(OrgObjItem, FldName_OrgObj_StartDat, SAPOrgObj.StartDate); SetOrgObjectItemDate(OrgObjItem, FldName_OrgObj_EndDat, SAPOrgObj.EndDate); //--- Check position obejct type if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Position) { GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_Pos_JobID).SetTextValue(SAPOrgObj.ShortName); } //--- Check person object type else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Person) { //--- Get the user Usr = (User)UsrTab[SAPOrgObj.ObjectNumber]; //--- Set the user in the person item if (Usr == null) { GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_Per_Usr).SetNullValue(); } else { GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_Per_Usr).SetRelationalID(Usr.GetID()); } //--- Set the user active dependend if the user exists and is active OrgObjItem.SetActive(Usr != null ? !Usr.IsDeleted() : false); } //--- Tag the SAP org-object with the org-object item SAPOrgObj.Tag = OrgObjItem; } //--- Set the chart objects of the org-chart SetChartObjects(SAPOrgCha.ChartObjects, null, OrgChaItem); //--- Activate and tag the item lists ActivateOrgObjectItems(UnitItemLst, false, enAction.Delete); ActivateOrgObjectItems(PosItemLst, false, enAction.Delete); ActivateOrgObjectItems(PerItemLst, false, enAction.Delete); ActivateOrgObjectItems(CosCenItemLst, true, enAction.None); //--- Create a new read AD users message CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_AddOrUpdSAPOrgObjs); //--- Init the progress index and calculate the all count nProgIdx = 0; nAllCnt = OrgChaItemLst.Count + UnitItemLst.Count + PosItemLst.Count + PerItemLst.Count + CosCenItemLst.Count; //--- Add or update the org-objects AddOrUpdateOrgObjItems(OrgChaItemLst, ObjTypStr_OrgCha, ref nProgIdx, nAllCnt); AddOrUpdateOrgObjItems(UnitItemLst, OrgObject.enObjectType.Unit.ToString(), ref nProgIdx, nAllCnt); AddOrUpdateOrgObjItems(PosItemLst, OrgObject.enObjectType.Position.ToString(), ref nProgIdx, nAllCnt); AddOrUpdateOrgObjItems(PerItemLst, OrgObject.enObjectType.Person.ToString(), ref nProgIdx, nAllCnt); AddOrUpdateOrgObjItems(CosCenItemLst, OrgObject.enObjectType.CostCenter.ToString(), ref nProgIdx, nAllCnt); //--- Create a new message CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_FinImpADUsrs, nAllCnt, nAllCnt); }