private PSI() { _context = new ProjectContext(System.Configuration.ConfigurationManager.AppSettings["PwaUrl"]); //credentials of currently running acount or enable line below //_context.Credentials = new System.Net.NetworkCredential("user", "pass", "domain"); timeoutSeconds = int.Parse(System.Configuration.ConfigurationManager.AppSettings["DefaultTimeoutPwa"]); _prClient = new SvcProject.ProjectClient("basicHttp_Project"); }
public void CreateProject(string pwaOrigem, string pwaDestino, Guid projectUid) { try { SvcProject.ProjectClient clientProjectOrigem = new SvcProject.ProjectClient(Binding, endPointAdress(pwaOrigem, "/_vti_bin/psi/Workflow.asmx")); clientProjectOrigem.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain); SvcProject.ProjectClient clientProjectDestino = new SvcProject.ProjectClient(Binding, endPointAdress(pwaDestino, "/_vti_bin/psi/Workflow.asmx")); clientProjectDestino.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain); SvcProject.ProjectDataSet dsProject = clientProjectOrigem.ReadProject(projectUid, SvcProject.DataStoreEnum.PublishedStore); SvcProject.ProjectDataSet dsProjectDestino = new SvcProject.ProjectDataSet(); //var projectType = GetEnterpriseProjectTypeList(pwaDestino); var PROJ_UID = Guid.NewGuid(); //informações do projeto foreach (SvcProject.ProjectDataSet.ProjectRow oRow in dsProject.Project.Rows) { SvcProject.ProjectDataSet.ProjectRow oRowDestino = dsProjectDestino.Project.NewProjectRow(); oRowDestino.PROJ_TYPE = (int)PSLibrary.Project.ProjectType.Project; oRowDestino.PROJ_UID = PROJ_UID; oRowDestino.PROJ_NAME = oRow.PROJ_NAME; oRowDestino.WPROJ_DESCRIPTION = oRow.WPROJ_DESCRIPTION; //if (oRow.IsPROJ_PROP_MANAGERNull() || oRow.PROJ_PROP_MANAGER.Length == 0) // oRowDestino.SetPROJ_PROP_MANAGERNull(); //else // oRowDestino.PROJ_PROP_MANAGER = oRow.PROJ_PROP_MANAGER; if (oRow.IsPROJ_PROP_TITLENull() || oRow.PROJ_PROP_TITLE.Length == 0) { oRowDestino.SetPROJ_PROP_TITLENull(); } else { oRowDestino.PROJ_PROP_TITLE = oRow.PROJ_PROP_TITLE; } if (oRow.IsPROJ_PROP_SUBJECTNull() || oRow.PROJ_PROP_SUBJECT.Length == 0) { oRowDestino.SetPROJ_PROP_SUBJECTNull(); } else { oRowDestino.PROJ_PROP_SUBJECT = oRow.PROJ_PROP_SUBJECT; } dsProjectDestino.Project.AddProjectRow(oRowDestino); } DataSet dsCustomField = this.GetCustomfields(pwaDestino, false); DataSet dsLookupTableDestino = this.GetLookupTable(pwaDestino); DataSet dsLookupTableOrigem = this.GetLookupTable(pwaOrigem); /// informações custom fields do projeto foreach (SvcProject.ProjectDataSet.ProjectCustomFieldsRow oRow in dsProject.ProjectCustomFields.Rows) { SvcProject.ProjectDataSet.ProjectCustomFieldsRow oRowDestino = dsProjectDestino.ProjectCustomFields.NewProjectCustomFieldsRow(); CustomFieldDataSet.CustomFieldsRow oRowCustomFieldDestino = (CustomFieldDataSet.CustomFieldsRow)dsCustomField.Tables[0].Select(string.Format("MD_PROP_ID = '{0}'", oRow.MD_PROP_ID)).SingleOrDefault(); if (!oRowCustomFieldDestino.IsMD_PROP_FORMULANull()) { continue; } foreach (DataColumn itemColumn in dsProject.ProjectCustomFields.Columns) { if (!dsProjectDestino.ProjectCustomFields.Columns.Contains(itemColumn.ToString())) { continue; } //if (itemColumn.ColumnName.Equals("CUSTOM_FIELD_UID ")) //{ // oRowDestino[itemColumn.ToString()] = Guid.NewGuid(); // continue; //} if (itemColumn.ColumnName.Equals("PROJ_UID")) { oRowDestino[itemColumn.ToString()] = PROJ_UID; continue; } if (itemColumn.ColumnName.Equals("MD_PROP_ID")) { oRowDestino[itemColumn.ToString()] = oRowCustomFieldDestino.MD_PROP_ID; continue; } if (itemColumn.ColumnName.Equals("MD_PROP_UID")) { oRowDestino[itemColumn.ToString()] = oRowCustomFieldDestino.MD_PROP_UID; continue; } if (itemColumn.ColumnName.Equals("CODE_VALUE") && oRow[itemColumn.ToString()] != null && oRow[itemColumn.ToString()].ToString().Length > 0) { LookupTableDataSet.LookupTableTreesRow ltTreesRowOrigem = (LookupTableDataSet.LookupTableTreesRow)dsLookupTableOrigem.Tables[2].Select(string.Format("LT_STRUCT_UID = '{0}'", oRow[itemColumn.ToString()])).SingleOrDefault(); LookupTableDataSet.LookupTableTreesRow ltTreesRowDestino = (LookupTableDataSet.LookupTableTreesRow)dsLookupTableDestino.Tables[2].Select(string.Format("LT_VALUE_FULL = '{0}'", ltTreesRowOrigem.LT_VALUE_FULL)).FirstOrDefault(); oRowDestino[itemColumn.ToString()] = ltTreesRowDestino.LT_STRUCT_UID; continue; } if (oRow[itemColumn.ToString()] != null && !itemColumn.ReadOnly && oRow[itemColumn.ToString()].ToString().Length > 0) { oRowDestino[itemColumn.ToString()] = oRow[itemColumn.ToString()]; } } dsProjectDestino.ProjectCustomFields.AddProjectCustomFieldsRow(oRowDestino); } /////informações das task do projeto foreach (SvcProject.ProjectDataSet.TaskRow oRow in dsProject.Task.Rows) { SvcProject.ProjectDataSet.TaskRow oRowDestino = dsProjectDestino.Task.NewTaskRow(); foreach (DataColumn itemColumn in dsProject.Task.Columns) { if (!dsProjectDestino.Task.Columns.Contains(itemColumn.ToString())) { continue; } if (itemColumn.ColumnName.Equals("PROJ_UID")) { oRowDestino[itemColumn.ToString()] = PROJ_UID; continue; } if (itemColumn.ToString().Equals("TASK_UID")) { oRowDestino[itemColumn.ToString()] = Guid.NewGuid(); continue; } if (itemColumn.ToString().Equals("TASK_OUTLINE_LEVEL")) { continue; } if (oRow[itemColumn.ToString()] != null) // && !itemColumn.ReadOnly) { oRowDestino[itemColumn.ToString()] = oRow[itemColumn.ToString()]; } } dsProjectDestino.Task.AddTaskRow(oRowDestino); } /////informações customfields da task //foreach (SvcProject.ProjectDataSet.TaskCustomFieldsRow oRow in dsProject.TaskCustomFields.Rows) //{ // SvcProject.ProjectDataSet.TaskCustomFieldsRow oRowDestino = dsProjectDestino.TaskCustomFields.NewTaskCustomFieldsRow(); // foreach (DataColumn itemColumn in dsProject.TaskCustomFields.Columns) // { // if (!dsProjectDestino.TaskCustomFields.Columns.Contains(itemColumn.ToString())) // continue; // if (oRow[itemColumn.ToString()] != null && !itemColumn.ReadOnly) // oRowDestino[itemColumn.ToString()] = oRow[itemColumn.ToString()]; // } // dsProjectDestino.TaskCustomFields.AddTaskCustomFieldsRow(oRowDestino); //} var createJobUid = Guid.NewGuid(); clientProjectDestino.QueueCreateProject(createJobUid, dsProjectDestino, false); var publishJobUid = Guid.NewGuid(); clientProjectDestino.QueuePublish(publishJobUid, PROJ_UID, true, string.Empty); } catch (Exception ex) { throw ex; } }
/// <summary> /// Buca os Projetos /// </summary> /// <param name="pwaUrl">url do pwa</param> /// <returns></returns> public SvcProject.ProjectDataSet GetProjectsList(string pwaUrl) { SvcProject.ProjectClient clientProject = new SvcProject.ProjectClient(Binding, endPointAdress(pwaUrl, "/_vti_bin/psi/Workflow.asmx")); clientProject.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain); return(clientProject.ReadProjectList()); }