コード例 #1
0
 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");
 }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
 /// <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());
 }