public CustomFieldsClient CreateCustomFieldsClient()
        {
            _customFieldsClient = new CustomFieldsClient(_binding, _endpointAddress);
            SetCredenticalProperties <CustomFieldsClient, CustomFields>(_customFieldsClient);

            return(_customFieldsClient);
        }
        public void DeleteCustomField(string target, string field)
        {
            CustomFieldDataSet cfDS = new CustomFieldDataSet();
            var RowField            = this.dsGenerico.Tables[0].Select("MD_PROP_NAME ='" + field + "'").CopyToDataTable();

            SvcCustomFields.CustomFieldsClient fieldTarget = new CustomFieldsClient(Binding, endPointAdress(target, "/_vti_bin/psi/CustomFields.asmx"));
            fieldTarget.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);
            Guid[] fieldsArray = new Guid[1];
            //fieldsArray[0] =
            fieldTarget.DeleteCustomFields(fieldsArray);
        }
        /// <summary>
        /// Metodo para Buscar os CustomFields e LookupTable pelo metodo internal (GetLookupTable)
        /// </summary>
        /// <param name="pwaUrl"></param>
        /// <returns></returns>
        public DataSet GetCustomfields(string pwaUrl, bool getLookupTable)
        {
            //CustomFieldDataSet cfDS = new CustomFieldDataSet();
            //PSLibrary.Filter cfFilter = new Microsoft.Office.Project.Server.Library.Filter();
            //cfFilter.FilterTableName = cfDS.CustomFields.TableName;

            //foreach (var item in cfDS.CustomFields.Columns)
            //{
            //    cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, item.ToString()));
            //}


            //cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, cfDS.CustomFields.MD_PROP_IS_REQUIREDColumn.ColumnName));
            //cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, cfDS.CustomFields.MD_PROP_IS_REQUIREDColumn.ColumnName));

            //var fields = cfFilter.GetXml();
            try
            {
                SvcCustomFields.CustomFieldsClient customFieldClient = new CustomFieldsClient(Binding, endPointAdress(pwaUrl, "/_vti_bin/psi/CustomFields.asmx"));
                customFieldClient.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);

                dsGenerico = new DataSet();
                dsGenerico.Tables.Add(customFieldClient.ReadCustomFields(null, false).Tables[0].Copy());


                if (getLookupTable)
                {
                    DataSet dsLookupTableOrigem = this.GetLookupTable(pwaUrl);
                    if (dsLookupTableOrigem != null)
                    {
                        var table = dsLookupTableOrigem.Tables[0].Copy();
                        dsGenerico.Tables.Add(table);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(dsGenerico);
        }
        /// <summary>
        /// Metodo para criar o Custom Field no Detino
        /// </summary>
        /// <param name="source">Origem</param>
        /// <param name="target">Destino</param>
        /// <param name="field">Nome CustomField</param>
        public void CreateCustomField(string source, string target, string field, string lookupTable)
        {
            CustomFieldDataSet cfDS = new CustomFieldDataSet();
            var RowField            = this.dsGenerico.Tables[0].Select("MD_PROP_NAME ='" + field + "'").CopyToDataTable();

            SvcCustomFields.CustomFieldsClient fieldTarget = new CustomFieldsClient(Binding, endPointAdress(target, "/_vti_bin/psi/CustomFields.asmx"));
            fieldTarget.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);

            Guid cfUid = Guid.NewGuid();

            foreach (DataRow item in RowField.Rows)
            {
                SvcCustomFields.CustomFieldDataSet.CustomFieldsRow cfRow = cfDS.CustomFields.NewCustomFieldsRow();

                foreach (DataColumn itemColumn in RowField.Columns)
                {
                    if (!cfDS.CustomFields.Columns.Contains(itemColumn.ToString()))
                    {
                        continue;
                    }

                    if (itemColumn.ToString() == "MD_LOOKUP_TABLE_UID" && lookupTable != string.Empty)
                    {
                        var  lt     = GetLookupTable(target).Tables[0].Select("LT_NAME ='" + lookupTable + "'").CopyToDataTable();
                        Guid lt_Uid = Guid.Parse(lt.Rows[0]["LT_UID"].ToString());
                        cfRow[itemColumn.ToString()] = lt_Uid;
                        continue;
                    }

                    if (itemColumn.ToString().Equals("MD_PROP_UID"))
                    {
                        cfRow[itemColumn.ToString()] = cfUid;
                        continue;
                    }

                    if (itemColumn.ToString().Equals("MD_PROP_DEFAULT_VALUE"))
                    {
                        continue;
                    }

                    if (item[itemColumn.ToString()] != null && !itemColumn.ReadOnly)
                    {
                        cfRow[itemColumn.ToString()] = item[itemColumn.ToString()];
                    }
                }
                cfDS.CustomFields.Rows.Add(cfRow);
            }

            try
            {
                bool validateOnly = false;
                bool autoCheckIn  = true;
                fieldTarget.CreateCustomFields(cfDS, validateOnly, autoCheckIn);
            }
            catch (SoapException ex)
            {
                string errMess = "";
                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();
                throw ex;
            }
        }
Example #5
0
        public void ClientSide()
        {
            int keyId = -1;
            CustomFieldsClientCollection coll = new CustomFieldsClientCollection();

            switch (coll.es.Connection.ProviderSignature.DataProviderName)
            {
            case "EntitySpaces.EffiProzProvider":
                Assert.Ignore("Not implemented");
                break;

            default:
                using (esTransactionScope scope = new esTransactionScope())
                {
                    // Setup
                    CustomFieldsClient entity = new CustomFieldsClient();

                    entity           = new CustomFieldsClient();
                    entity.FirstName = "Test";
                    entity.LastName  = "One";

                    // Insert
                    entity.Save();
                    keyId = entity.AutoKey.Value;

                    Assert.AreEqual(entity.FirstName, "Test");
                    Assert.AreEqual(entity.LastName, "One");
                    Assert.AreEqual(entity.Age.Value, 20);
                    Assert.AreEqual(entity.DateAdded.Value.Day, DateTime.UtcNow.Day);
                    Assert.AreEqual(entity.DateModified.Value.Day, DateTime.UtcNow.Day);
                    Assert.AreEqual(entity.AddedBy, "AddedBy Client User");
                    Assert.AreEqual(entity.ModifiedBy, "ModifiedBy Client User");
                    Assert.AreEqual(entity.EsVersion.Value, 1);

                    // Update
                    entity = new CustomFieldsClient();
                    entity.LoadByPrimaryKey(keyId);

                    Assert.AreEqual(entity.FirstName, "Test");
                    Assert.AreEqual(entity.LastName, "One");
                    Assert.AreEqual(entity.Age.Value, 20);
                    Assert.AreEqual(entity.DateAdded.Value.Day, DateTime.UtcNow.Day);
                    Assert.AreEqual(entity.DateModified.Value.Day, DateTime.UtcNow.Day);
                    Assert.AreEqual(entity.AddedBy, "AddedBy Client User");
                    Assert.AreEqual(entity.ModifiedBy, "ModifiedBy Client User");
                    Assert.AreEqual(entity.EsVersion.Value, 1);

                    DateTime modified = entity.DateModified.Value;
                    entity.LastName = "Two";
                    System.Threading.Thread.Sleep(4);
                    entity.Save();

                    Assert.AreEqual(entity.FirstName, "Test");
                    Assert.AreEqual(entity.LastName, "Two");
                    Assert.AreEqual(entity.Age.Value, 20);
                    Assert.AreEqual(entity.DateAdded.Value.Day, DateTime.UtcNow.Day);
                    Assert.AreEqual(entity.DateModified.Value.Day, DateTime.UtcNow.Day);
                    Assert.Greater(entity.DateModified.Value, modified);
                    Assert.AreEqual(entity.AddedBy, "AddedBy Client User");
                    Assert.AreEqual(entity.ModifiedBy, "ModifiedBy Client User");
                    Assert.AreEqual(entity.EsVersion.Value, 2);

                    // No Update
                    entity = new CustomFieldsClient();
                    entity.LoadByPrimaryKey(keyId);
                    DateTime added = entity.DateAdded.Value;
                    modified = entity.DateModified.Value;

                    entity.Save();

                    Assert.AreEqual(entity.FirstName, "Test");
                    Assert.AreEqual(entity.LastName, "Two");
                    Assert.AreEqual(entity.Age.Value, 20);
                    Assert.AreEqual(entity.DateAdded.Value, added);
                    Assert.AreEqual(entity.DateModified.Value, modified);
                    Assert.AreEqual(entity.AddedBy, "AddedBy Client User");
                    Assert.AreEqual(entity.ModifiedBy, "ModifiedBy Client User");
                    Assert.AreEqual(entity.EsVersion.Value, 2);

                    // Clean up
                    entity = new CustomFieldsClient();
                    entity.LoadByPrimaryKey(keyId);

                    Assert.AreEqual(entity.FirstName, "Test");
                    Assert.AreEqual(entity.LastName, "Two");
                    Assert.AreEqual(entity.Age.Value, 20);
                    Assert.AreEqual(entity.DateAdded.Value, added);
                    Assert.AreEqual(entity.DateModified.Value, modified);
                    Assert.AreEqual(entity.AddedBy, "AddedBy Client User");
                    Assert.AreEqual(entity.ModifiedBy, "ModifiedBy Client User");
                    Assert.AreEqual(entity.EsVersion.Value, 2);

                    entity.MarkAsDeleted();
                    entity.Save();

                    entity = new CustomFieldsClient();
                    if (entity.LoadByPrimaryKey(keyId))
                    {
                        Assert.Fail("Not deleted");
                    }
                }
                break;
            }
        }