// factory methods for child generics
        private static DataQuery CreateTraverse(ClarifyDataAccessWS clarifyDataAccessWS, string traverseRelation, string resultTableName)
        {
            DataQuery gen = new DataQuery(clarifyDataAccessWS, null, resultTableName);

            gen.Protocol.TraverseRelation = traverseRelation;
            return(gen);
        }
 internal DataQuery( ClarifyDataAccessWS clarifyDataAccessWS, string objectName, string resultTableName )
 {
     this.clarifyDataAccessWS = clarifyDataAccessWS;
     genericProtocol = new Protocol.QueryProtocol();
     genericProtocol.ObjectName = objectName;
     genericProtocol.ResultTableName = resultTableName;
 }
 internal DataQuery(ClarifyDataAccessWS clarifyDataAccessWS, string objectName, string resultTableName)
 {
     this.clarifyDataAccessWS        = clarifyDataAccessWS;
     genericProtocol                 = new Protocol.QueryProtocol();
     genericProtocol.ObjectName      = objectName;
     genericProtocol.ResultTableName = resultTableName;
 }
        public override void DataBind()
        {
            base.DataBind ();

            string username = ConfigurationManager.AppSettings["fcsdk.clarifysession.username"];

            // Show username to currect user
            currentUserLabel.Text = String.Format( " <i>({0})</i>", username );

            // Get session from Global.asax.cs
            ClarifySessionWS session = Global.ClarifySessWS;

            // Create ClarifyDataAccessWS
            ClarifyDataAccessWS dataAccess = new ClarifyDataAccessWS( session );

            // Create new DataQuery to query view "qry_case_view"
            DataQuery caseQuery = dataAccess.CreateDataQuery("qry_case_view");

            // Set fields to select
            caseQuery.DataFields.AddRange(
                new string[]{"id_number", "site_name", "title", "condition", "status", "creation_time", "owner"} );

            // Append filters for query
            caseQuery.AppendFilter( "owner", "Equals", username );
            caseQuery.AppendFilter( "condition", "Like", "Open%" );

            // Append sorting for query
            caseQuery.AppendSort( "creation_time", false );

            // Get Xml result
            string result = caseQuery.Query(true);

            // Create a string reader to read the result
            System.IO.StringReader reader = new System.IO.StringReader(result);

            // Create and load the DataSet with the result
            DataSet ds = new DataSet();
            ds.ReadXml( reader );

            // Data bind DataGrid to result table in DataSet
            this.openCasesGrid.DataSource = ds.Tables["qry_case_view"];
            this.openCasesGrid.DataBind();
        }
        public override void DataBind()
        {
            base.DataBind ();

            // Get session from Global.asax.cs
            ClarifySessionWS session = Global.ClarifySessWS;

            // Create ClarifyDataAccessWS
            ClarifyDataAccessWS dataAccess = new ClarifyDataAccessWS( session );

            // Create new DataQuery to query view "qry_case_view"
            DataQuery caseQuery = dataAccess.CreateDataQuery("qry_case_view");

            // Set fields to select
            caseQuery.DataFields.AddRange(
                new string[]{"id_number", "site_name", "title", "condition", "status", "creation_time", "owner"} );

            // Append filters for query
            caseQuery.AppendFilter( "creation_time", "MoreThanOrEqual", DateTime.Now.AddDays(DaysBack * -1).ToShortDateString() );

            // Append sorting for query
            caseQuery.AppendSort( "creation_time", false );

            // Get Xml result
            string result = caseQuery.Query(true);

            // Create a string reader to read the result
            System.IO.StringReader reader = new System.IO.StringReader(result);

            // Create and load the DataSet with the result
            DataSet ds = new DataSet();
            ds.ReadXml( reader );

            // Data bind DataGrid to result table in DataSet
            this.casesCreatedGrid.DataSource = ds.Tables["qry_case_view"];
            this.casesCreatedGrid.DataBind();
        }
        private void CreateNewContact()
        {
            try
            {
                EnableValidators();
                Page.Validate();

                if( Page.IsValid )
                {
                    // Create new Clarify Data Access Web Service Client
                    ClarifyDataAccessWS dataAccess = new ClarifyDataAccessWS( Global.ClarifySessWS );

                    // Create a DataModifier for modifying data on the database
                    DataModifier dataModifier = dataAccess.CreateDataModifier();

                    // Create modify items for the tables we want to insert new records
                    InsertModifier contactInsert = dataModifier.CreateInsertModifier( "contactInsert", "contact" );
                    InsertModifier contactRoleInsert = dataModifier.CreateInsertModifier( "contactRoleInsert", "contact_role" );
                    InsertModifier siteInsert = dataModifier.CreateInsertModifier( "siteInsert", "site" );
                    InsertModifier addressInsert = dataModifier.CreateInsertModifier( "addressInsert", "address" );
                    ReferenceModifier stateProvRef = dataModifier.CreateReferenceModifier( "stateProvRef", "state_prov" );
                    ReferenceModifier timezoneRef = dataModifier.CreateReferenceModifier( "timezoneRef", "time_zone" );
                    ReferenceModifier countryRef = dataModifier.CreateReferenceModifier( "countryRef", "country" );

                    // Append fields that we want to insert values into
                    contactInsert.SetField("first_name", this.firstName.Text);
                    contactInsert.SetField("last_name", this.lastName.Text);
                    contactInsert.SetField("phone", this.phoneNumber.Text);

                    // Relate this inserted record to another Modifier
                    contactInsert.RelateRecord("contact2contact_role", contactRoleInsert);

                    contactRoleInsert.SetField("role_name", "Default");
                    contactRoleInsert.SetField("primary_site", "1");
                    contactRoleInsert.RelateRecord("contact_role2site", siteInsert);

                    // Get next Site ID from web service
                    string siteID = Global.ClarifySessWS.GetNextNumScheme("Site ID");

                    siteInsert.SetField("site_id", siteID);
                    siteInsert.SetField("name", this.siteName.Text);
                    siteInsert.RelateRecord("cust_primaddr2address", addressInsert);
                    siteInsert.RelateRecord("cust_billaddr2address", addressInsert);
                    siteInsert.RelateRecord("cust_shipaddr2address", addressInsert);

                    addressInsert.SetField("address", this.address1.Text);
                    addressInsert.SetField("address_2", this.address2.Text);
                    addressInsert.SetField("city", this.city.Text);
                    addressInsert.SetField("state", this.state.SelectedValue);
                    addressInsert.SetField("zipcode", this.zip.Text);
                    addressInsert.RelateRecord("address2state_prov", stateProvRef);
                    addressInsert.RelateRecord("address2time_zone", timezoneRef);
                    addressInsert.RelateRecord("address2country", countryRef);

                    // This we select an existing record to use as a relation for addressInsert
                    stateProvRef.AppendUniqueFilter("full_name", this.state.SelectedValue);
                    timezoneRef.AppendUniqueFilter("name", "CST");
                    countryRef.AppendUniqueFilter("name", "USA");

                    // Run the query and retrieve the results
                    ModifierResultProtocol[] results =  dataModifier.Update();

                    //  Show the results to the user
                    System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    foreach(ModifierResultProtocol result in results)
                    {
                        if(sb.Length > 0)
                            sb.Append("<br/>");

                        sb.Append( string.Format("{0} on table [{1}] with objid of [{2}]", result.Action, result.Table, result.Objid) );
                    }

                    this.messageLabel.Text = String.Format("<b>Save successful.</b><br/>" + sb.ToString() );

                    // Clear form
                    ClearEntryFields();
                }
            }
            catch(SoapException ex)
            {
                string message = ex.Detail.InnerText.Trim().Length > 0 ? ex.Detail.InnerText.Trim() : ex.Message;
                this.messageLabel.Text += String.Format("<b>Error adding contact.</b><br/>{0}", message.Replace("\n","<br/>") );
            }
        }
 internal DataModifier(ClarifyDataAccessWS clarifyDataAccessWS)
 {
     this.clarifyDataAccessWS = clarifyDataAccessWS;
 }
 // constructor for root generics
 internal DataQuery( ClarifyDataAccessWS clarifyDataAccessWS, string objectName )
     : this(clarifyDataAccessWS, objectName, null)
 {
 }
 // factory methods for child generics
 private static DataQuery CreateTraverse( ClarifyDataAccessWS clarifyDataAccessWS, string traverseRelation, string resultTableName )
 {
     DataQuery gen = new DataQuery( clarifyDataAccessWS, null, resultTableName );
     gen.Protocol.TraverseRelation = traverseRelation;
     return gen;
 }
 // constructor for root generics
 internal DataQuery(ClarifyDataAccessWS clarifyDataAccessWS, string objectName) : this(clarifyDataAccessWS, objectName, null)
 {
 }
 internal DataModifier(ClarifyDataAccessWS clarifyDataAccessWS)
 {
     this.clarifyDataAccessWS = clarifyDataAccessWS;
 }