// GET: odata/Data public IQueryable <DscQData> Get(string datasource, string path) { ClaimsPrincipal cp = (ClaimsPrincipal)User; string user = cp.FindFirst(ClaimTypes.Name)?.Value; string pswd = cp.FindFirst(BasicClaimTypes.Password)?.Value; // DscQParameters (из кеша) DscQParameterQuery parameterQuery = new DscQParameterQuery() { Path = path.Replace(DscQRouteHandler.RandomWord, "\\"), DataSource = datasource, UserId = user, Password = pswd }; DscQParameterQueryResult parameterResult = _queryDispatcher.Dispatch <DscQParameterQuery, DscQParameterQueryResult>(parameterQuery); DscQDataQuery dataQuery = new DscQDataQuery() { Path = path.Replace(DscQRouteHandler.RandomWord, "\\"), DataSource = datasource, UserId = user, Password = pswd, Parameters = Request.GetQueryNameValuePairs() .Where(p => !p.Key.StartsWith("$")) .Select((p, i) => new DscQParameter() { // заполнение ключа [No] для вычисления хеша No = i + 1, FieldCode = p.Key, Value = p.Value, // FlexField из списка DscQParameter's FlexField = parameterResult .Items .FirstOrDefault(item => item.FieldCode.Equals(p.Key, StringComparison.OrdinalIgnoreCase)) ?.FlexField }) .ToList() }; DscQDataQueryResult result = _queryDispatcher.Dispatch <DscQDataQuery, DscQDataQueryResult>(dataQuery); return(result.Items); }
public DscQData[] GetResults(DscQDataQuery query) { // DscQParameters (из кеша) DscQParameterQuery parameterQuery = new DscQParameterQuery() { Path = query.Path, DataSource = query.DataSource, UserId = _securityToken.UserName, Password = _securityToken.Password }; DscQParameterQueryResult parameterResult = _queryDispatcher.Dispatch <DscQParameterQuery, DscQParameterQueryResult>(parameterQuery); query.UserId = _securityToken.UserName; query.Password = _securityToken.Password; if (query.DynamicParameters != null) { query.Parameters = query.DynamicParameters .Select((p, i) => new DscQParameter() { // заполнение ключа [No] для вычисления хеша No = i + 1, FieldCode = p.Key, Value = p.Value, // FlexField из списка DscQParameter's FlexField = parameterResult .Items .FirstOrDefault(item => item.FieldCode.Equals(p.Key, StringComparison.OrdinalIgnoreCase)) ?.FlexField }) .ToList(); } DscQDataQueryResult result = _queryDispatcher.Dispatch <DscQDataQuery, DscQDataQueryResult>(query); return(result.Items.ToArray()); }