public string VerifyPDPExist(string pwaOrigem, string pwaDestino, Guid EPT_UID)
        {
            SvcWorkflow.WorkflowClient clientWorkflowOrigem = new SvcWorkflow.WorkflowClient(Binding, endPointAdress(pwaOrigem, "/_vti_bin/psi/Workflow.asmx"));
            clientWorkflowOrigem.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);

            SvcWorkflow.WorkflowClient clientWorkflowDestino = new SvcWorkflow.WorkflowClient(Binding, endPointAdress(pwaDestino, "/_vti_bin/psi/Workflow.asmx"));
            clientWorkflowDestino.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);

            SvcWorkflow.WorkflowDataSet dsEnterpriseOrigem  = clientWorkflowOrigem.ReadEnterpriseProjectType(EPT_UID);
            SvcWorkflow.WorkflowDataSet dsEnterpriseDestino = clientWorkflowDestino.ReadEnterpriseProjectTypeList();

            string PDPs = string.Empty;

            foreach (DataRow item in dsEnterpriseOrigem.EnterpriseProjectTypePDPs.Rows)
            {
                var oRowPDP = dsEnterpriseDestino.EnterpriseProjectTypePDPs.Select(string.Format("PDP_NAME = '{0}'", item["PDP_NAME"].ToString())).FirstOrDefault();
                if (oRowPDP == null)
                {
                    PDPs += item["PDP_NAME"].ToString() + ",";
                }
            }

            if (PDPs.Length == 0)
            {
                return(string.Empty);
            }

            return(PDPs.Substring(0, PDPs.Length - 1));
        }
        public void CreateEnterpriseProjectType(string pwaOrigem, string pwaDestino, string nameProjecType, Guid Uid)
        {
            //SvcWorkflow.WorkflowDataSet.EnterpriseProjectTypeDataTable dt = new SvcWorkflow.WorkflowDataSet.EnterpriseProjectTypeDataTable();
            try
            {
                SvcWorkflow.WorkflowClient clientWorkflowOrigem = new SvcWorkflow.WorkflowClient(Binding, endPointAdress(pwaOrigem, "/_vti_bin/psi/Workflow.asmx"));
                clientWorkflowOrigem.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);

                SvcWorkflow.WorkflowClient clientWorkflowDestino = new SvcWorkflow.WorkflowClient(Binding, endPointAdress(pwaDestino, "/_vti_bin/psi/Workflow.asmx"));
                clientWorkflowDestino.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);

                SvcWorkflow.WorkflowDataSet dsEnterpriseOrigem   = clientWorkflowOrigem.ReadEnterpriseProjectType(Uid);
                SvcWorkflow.WorkflowDataSet dsEnterpriseDestino  = new SvcWorkflow.WorkflowDataSet();
                SvcWorkflow.WorkflowDataSet dsEnterpriseDestino2 = clientWorkflowDestino.ReadEnterpriseProjectTypeList();

                //SvcWorkflow.WorkflowDataSet.EnterpriseProjectTypePDPsDataTable dtPDP = clientWorkflowOrigem.read

                Guid ENTERPRISE_PROJECT_TYPE_UID = Guid.Empty;

                foreach (SvcWorkflow.WorkflowDataSet.EnterpriseProjectTypeRow itemEnterprise in dsEnterpriseOrigem.EnterpriseProjectType.Rows)
                {
                    SvcWorkflow.WorkflowDataSet.EnterpriseProjectTypeRow oRow = dsEnterpriseDestino.EnterpriseProjectType.NewEnterpriseProjectTypeRow();
                    foreach (DataColumn itemColumn in dsEnterpriseOrigem.EnterpriseProjectType.Columns)
                    {
                        if (!dsEnterpriseDestino.EnterpriseProjectType.Columns.Contains(itemColumn.ToString()))
                        {
                            continue;
                        }

                        if (itemColumn.ToString().Equals("WORKFLOW_ASSOCIATION_UID") || itemColumn.ToString().Equals("WORKFLOW_ASSOCIATION_NAME"))
                        {
                            continue;
                        }

                        var dnsEquals = GetDnsName(pwaOrigem) == GetDnsName(pwaDestino);

                        if (nameProjecType.Length > 0 && itemColumn.ToString().Equals("ENTERPRISE_PROJECT_TYPE_NAME"))
                        {
                            oRow[itemColumn.ToString()] = nameProjecType;
                            continue;
                        }

                        if (itemColumn.ToString().Equals("ENTERPRISE_PROJECT_TYPE_UID"))
                        {
                            ENTERPRISE_PROJECT_TYPE_UID = Guid.Parse(itemEnterprise[itemColumn.ToString()].ToString());
                        }

                        if (itemColumn.ToString().Equals("ENTERPRISE_PROJECT_TYPE_UID") && dnsEquals)
                        {
                            ENTERPRISE_PROJECT_TYPE_UID = Guid.NewGuid();
                            oRow[itemColumn.ToString()] = ENTERPRISE_PROJECT_TYPE_UID;
                            continue;
                        }

                        if (itemColumn.ToString().Equals("ENTERPRISE_PROJECT_WORKSPACE_TEMPLATE_NAME"))
                        {
                            oRow[itemColumn.ToString()] = "ProjectSite#0";
                            continue;
                        }

                        if (itemColumn.ToString().Equals("ENTERPRISE_PROJECT_TYPE_IMAGE_URL"))
                        {
                            oRow[itemColumn.ToString()] = string.Format("/_layouts/15/inc/{0}/images/CenterNormalProject.png", GetPwaName(pwaDestino).Replace("/", string.Empty));
                            continue;
                        }

                        //EnterpriseProjectTypeInvalidWorkspaceTemplateName

                        if (itemEnterprise[itemColumn.ToString()] != null && !itemColumn.ReadOnly)
                        {
                            oRow[itemColumn.ToString()] = itemEnterprise[itemColumn.ToString()];
                        }
                    }
                    dsEnterpriseDestino.EnterpriseProjectType.AddEnterpriseProjectTypeRow(oRow);
                    //dsWorkflow.EnterpriseProjectType.AddEnterpriseProjectTypeRow(oRow);
                }

                foreach (SvcWorkflow.WorkflowDataSet.EnterpriseProjectTypePDPsRow itemPDPs in dsEnterpriseOrigem.EnterpriseProjectTypePDPs.Rows)
                {
                    SvcWorkflow.WorkflowDataSet.EnterpriseProjectTypePDPsRow oRowPDP = dsEnterpriseDestino.EnterpriseProjectTypePDPs.NewEnterpriseProjectTypePDPsRow();
                    foreach (DataColumn itemColumn in dsEnterpriseOrigem.EnterpriseProjectTypePDPs.Columns)
                    {
                        if (itemColumn.ToString().Equals("PDP_UID"))
                        {
                            continue;
                        }

                        if (itemColumn.ToString().Equals("PDP_NAME"))
                        {
                            var oDataRow = dsEnterpriseDestino2.EnterpriseProjectTypePDPs.Select(string.Format("PDP_NAME = '{0}'", itemPDPs[itemColumn.ToString()])).FirstOrDefault();
                            if (oDataRow != null)
                            {
                                oRowPDP["PDP_UID"] = oDataRow["PDP_UID"];
                            }
                            else
                            {
                                var oDataRow2 = dsEnterpriseDestino2.EnterpriseProjectTypePDPs.Select().FirstOrDefault();
                                oRowPDP["PDP_UID"] = oDataRow2["PDP_UID"];
                            }
                        }

                        if (itemColumn.ToString().Equals("ENTERPRISE_PROJECT_TYPE_UID"))
                        {
                            oRowPDP[itemColumn.ToString()] = ENTERPRISE_PROJECT_TYPE_UID;
                            continue;
                        }

                        if (itemPDPs[itemColumn.ToString()] != null && !itemColumn.ReadOnly)
                        {
                            oRowPDP[itemColumn.ToString()] = itemPDPs[itemColumn.ToString()];
                        }
                    }
                    dsEnterpriseDestino.EnterpriseProjectTypePDPs.AddEnterpriseProjectTypePDPsRow(oRowPDP);
                }
                //dsWorkflow.EnterpriseProjectType.AcceptChanges();
                //dsWorkflow.EnterpriseProjectTypePDPs.AcceptChanges();
                clientWorkflowDestino.CreateEnterpriseProjectType(dsEnterpriseDestino);
            }
            catch (SoapException ex)
            {
                string errMess = "";
                // Pass the exception to the PSClientError constructor to
                // get all error information.
                PSLibrary.PSClientError psiError  = new PSLibrary.PSClientError(ex);
                PSLibrary.PSErrorInfo[] psiErrors = psiError.GetAllErrors();

                for (int j = 0; j < psiErrors.Length; j++)
                {
                    errMess += psiErrors[j].ErrId.ToString() + "\n";
                }
                errMess += "\n" + ex.Message.ToString();

                MessageBox.Show(errMess);
                // Send error string to console or message box.
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }