public List <QvxTable> GetTables()
        {
            List <QvxTable> tables = new List <QvxTable>();

            string folder_name;

            try
            {
                this.MParameters.TryGetValue("folder_name", out folder_name);
            }
            catch
            {
                return(tables);
            }

            if (string.IsNullOrEmpty(folder_name))
            {
                return(tables);
            }

            IDictionary <string, string> tableDictionary = EndpointCalls.GetTableNameList(this, folder_name);

            List <QvxTable> newTables = BuildTablesAsync(this, tableDictionary);

            //List<QvxTable> newTables = BuildTablesSync(this, tableDictionary);

            return(newTables);
        }
        private IEnumerable <QvxDataRow> GetData(QvxConnection connection, QvxFieldsWrapper fields, string reportID)
        {
            IEnumerable <QvxDataRow> rows = EndpointCalls.GetReportData(connection, fields, reportID);

            if (rows.Count() == 0)
            {
                QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Notice, "No rows were returned for report ID: '" + reportID + "'.");
            }
            return(rows);
        }
        public QvDataContractResponse getDatabases(QvxConnection connection)
        {
            IEnumerable <string> databases = EndpointCalls.GetReportFoldersList(connection);

            return(new QvDataContractDatabaseListResponse
            {
                qDatabases = databases.Select(name => new Database()
                {
                    qName = name
                }).ToArray()
            });
        }
        private string HandleAPIRequests(string method, string[] userParameters, QvxConnection connection)
        {
            QvDataContractResponse response;

            switch (method)
            {
            case "API-getSalesforcePath":
                Uri    baseUri = new Uri(userParameters[0]);
                string url     = new Uri(baseUri, string.Format("services/oauth2/authorize?response_type=token&client_id={0}&redirect_uri=https%3A%2F%2Flogin.salesforce.com%2Fservices%2Foauth2%2Fsuccess", QvxSalesforceConnectionInfo.CLIENT_ID)).AbsoluteUri;
                response = new Info {
                    qMessage = url
                };
                break;

            case "API-BuildConnectionString":
                string connectionString = String.Format("{0}={1};{2}={3};{4}={5};{6}={7};",
                                                        QvxSalesforceConnectionInfo.CONNECTION_HOST,
                                                        userParameters[0],
                                                        QvxSalesforceConnectionInfo.CONNECTION_AUTHHOST,
                                                        userParameters[1],
                                                        QvxSalesforceConnectionInfo.CONNECTION_ACCESS_TOKEN,
                                                        userParameters[2],
                                                        QvxSalesforceConnectionInfo.CONNECTION_REFRESH_TOKEN,
                                                        userParameters[3]);
                response = new Info {
                    qMessage = connectionString
                };
                break;

            case "API-getUsername":
                string username = EndpointCalls.GetUsername(connection, userParameters[0], userParameters[1], userParameters[2], Uri.UnescapeDataString(userParameters[3]), Uri.UnescapeDataString(userParameters[4]));
                response = new Info
                {
                    qMessage = string.Format("{{\"username\": \"{0}\", \"host\": \"{1}\" }}", username, Uri.UnescapeDataString(userParameters[3]))
                };
                break;

            default:
                response = new Info {
                    qMessage = "Unknown command"
                };
                break;
            }
            return(ToJson(response));
        }
        private QvxFieldsWrapper GetFields(QvxConnection connection, string tableID)
        {
            IDictionary <string, SalesforceDataType> fields = EndpointCalls.GetFieldsFromReport(connection, tableID);

            if (fields == default(IDictionary <string, Type>))
            {
                return(new QvxFieldsWrapper(0));
            }

            QvxFieldsWrapper qvxFields = new QvxFieldsWrapper(fields.Count);

            for (int i = 0; i < fields.Count; i++)
            {
                if (fields.ElementAt(i).Value == SalesforceDataType.String)
                {
                    qvxFields.SetFieldValue(i, new QvxField(fields.ElementAt(i).Key, QvxFieldType.QVX_TEXT, QvxNullRepresentation.QVX_NULL_FLAG_SUPPRESS_DATA, FieldAttrType.ASCII), fields.ElementAt(i).Value);
                }
                else if (fields.ElementAt(i).Value == SalesforceDataType.Integer || fields.ElementAt(i).Value == SalesforceDataType.Boolean)
                {
                    qvxFields.SetFieldValue(i, new QvxField(fields.ElementAt(i).Key, QvxFieldType.QVX_SIGNED_INTEGER, QvxNullRepresentation.QVX_NULL_FLAG_SUPPRESS_DATA, FieldAttrType.INTEGER), fields.ElementAt(i).Value);
                }
                else if (fields.ElementAt(i).Value == SalesforceDataType.Double || fields.ElementAt(i).Value == SalesforceDataType.Currency || fields.ElementAt(i).Value == SalesforceDataType.Percent)
                {
                    qvxFields.SetFieldValue(i, new QvxField(fields.ElementAt(i).Key, QvxFieldType.QVX_IEEE_REAL, QvxNullRepresentation.QVX_NULL_FLAG_SUPPRESS_DATA, FieldAttrType.REAL), fields.ElementAt(i).Value);
                }
                else if (fields.ElementAt(i).Value == SalesforceDataType.Date)
                {
                    qvxFields.SetFieldValue(i, new QvxField(fields.ElementAt(i).Key, QvxFieldType.QVX_IEEE_REAL, QvxNullRepresentation.QVX_NULL_FLAG_SUPPRESS_DATA, FieldAttrType.DATE), fields.ElementAt(i).Value);
                }
                else if (fields.ElementAt(i).Value == SalesforceDataType.DateTime)
                {
                    qvxFields.SetFieldValue(i, new QvxField(fields.ElementAt(i).Key, QvxFieldType.QVX_IEEE_REAL, QvxNullRepresentation.QVX_NULL_FLAG_SUPPRESS_DATA, FieldAttrType.TIMESTAMP), fields.ElementAt(i).Value);
                }
                else
                {
                    qvxFields.SetFieldValue(i, new QvxField(fields.ElementAt(i).Key, QvxFieldType.QVX_TEXT, QvxNullRepresentation.QVX_NULL_FLAG_WITH_UNDEFINED_DATA, FieldAttrType.ASCII), fields.ElementAt(i).Value);
                }
            }

            return(qvxFields);
        }