/// <summary> /// Get all itens filtering direct in DB. Up: More optimized because filters DB. Down: less flexible, don't support dynamic filters. /// </summary> /// <param name="generalBodyGet"></param> /// <param name="error"></param> /// <returns></returns> public List <GetTagView> GetAllWithDBFilter(GeneralBodyGet generalBodyGet, out RestExceptionError error) { try { if ((generalBodyGet == null) || (generalBodyGet.Filters == null) || (generalBodyGet.Filters.Count == 0)) { error = new RestExceptionError(); error.ExceptionMessage = ""; error.InternalMessage = "Url does not contains filter section"; } error = null; TagBsn bsn = new TagBsn(restConfig); List <DataFilterExpressionDB> dbFilter = HelperRESTFilterToDB.FilterRestFilterToDBExpression(generalBodyGet.Filters); List <TagInfo> dbItems = bsn.GetAll(dbFilter); List <GetTagView> result = new List <GetTagView>(); foreach (TagInfo item in dbItems) { GetTagView view = new GetTagView(); Cloner.CopyAllTo(typeof(TagInfo), item, typeof(GetTagView), view); result.Add(view); } return(result); } catch (Exception ex) { error = new RestExceptionError(); error.ExceptionMessage = ex.Message; } return(null); }
public IActionResult GetAll(GeneralBodyGet GeneralBodyGet) { string transactionID = Guid.NewGuid().ToString(); string currentURL = this.Request.Method; HelperRestError helperRestError = new HelperRestError(); HelperHTTPLog helperHTTPLog = new HelperHTTPLog(HelperHTTPLog.WhatToLog.All); try { RestExceptionError restExceptionError = null; RESTSuppliersDB rESTSuppliersDB = new RESTSuppliersDB(base.RESTConfig); //1)Get all rows. Note: Create "select * from MyTable". DB filter must be mannually done List <GetSuppliersView> rawResult = rESTSuppliersDB.GetAll(out restExceptionError); if (restExceptionError != null) { CreatedResult errorResult = helperRestError.GetError412_PreConditionFailed(transactionID, restExceptionError.ExceptionMessage, restExceptionError.InternalMessage, "Suppliers/GetAll"); return(errorResult); } //2)Apply filters in result set. List <GetSuppliersView> filteredResult = rESTSuppliersDB.Filter(rawResult, GeneralBodyGet, out restExceptionError); if (restExceptionError != null) { CreatedResult errorResult = helperRestError.GetError500_InternalServerError(transactionID, restExceptionError.ExceptionMessage, restExceptionError.InternalMessage, "Suppliers/GetAll"); return(errorResult); } //3)Cut data, apply ordering List <GetSuppliersView> orderedResultAndTrimed = rESTSuppliersDB.OrderByAndTrim(filteredResult, GeneralBodyGet, out restExceptionError); if (restExceptionError != null) { CreatedResult errorResult = helperRestError.GetError500_InternalServerError(transactionID, restExceptionError.ExceptionMessage, restExceptionError.InternalMessage, "Suppliers/GetAll"); return(errorResult); } var finalResult = orderedResultAndTrimed; GeneralGetResponse resultContainer = new GeneralGetResponse(); resultContainer.Data = finalResult; resultContainer.ReportHeader.TotalItensAvailable = rawResult.Count; resultContainer.ReportHeader.TotalItensRetrieved = finalResult.Count; resultContainer.ReportHeader.TransactionID = transactionID; HttpResponseMessage httpResponseMessage = new HttpResponseMessage(); httpResponseMessage.StatusCode = System.Net.HttpStatusCode.OK; CreatedResult createdResult = new CreatedResult("Suppliers/GetAll", httpResponseMessage); createdResult.Value = resultContainer; return(createdResult); } catch (Exception ex) { CreatedResult errorResult = helperRestError.GetError500_InternalServerError(transactionID, ex.Message, "x", "Suppliers/GetAll"); return(errorResult); } }
public List <T> GetAllX <T>(List <DataFilterExpressionREST> dataFilterExpressionRESTs, out string error) { error = null; try { Uri basePath = new Uri(wpfConfig.RESTBasePath); Uri requestUri = new Uri(basePath, "CustomerDemographics/GetAllX"); GeneralBodyGet getRequest = new GeneralBodyGet(); getRequest.NumberOfItens = 0; getRequest.ItensToSkip = 0; getRequest.Filters = dataFilterExpressionRESTs; string requestBody = Newtonsoft.Json.JsonConvert.SerializeObject(getRequest); using (var client = new HttpClient()) { client.DefaultRequestHeaders.Clear(); var request = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = requestUri, Content = new StringContent(requestBody, Encoding.UTF8, "application/json") }; var response = client.SendAsync(request).Result; var responseContent = response.Content; string responseString = responseContent.ReadAsStringAsync().Result; GeneralGetResponse generalGetResponse = JsonConvert.DeserializeObject <GeneralGetResponse>(responseString); if (response.IsSuccessStatusCode) { Newtonsoft.Json.Linq.JArray jArray = (Newtonsoft.Json.Linq.JArray)generalGetResponse.Data; List <GetCustomerDemographicsView> dataRetrieved = jArray.ToObject <List <GetCustomerDemographicsView> >(); List <T> result = new List <T>(); foreach (GetCustomerDemographicsView item in dataRetrieved) { T modelNotifiedForCustomerDemographicsNew = (T)Activator.CreateInstance(typeof(T)); Cloner.CopyAllTo(typeof(GetCustomerDemographicsView), item, typeof(T), modelNotifiedForCustomerDemographicsNew); result.Add(modelNotifiedForCustomerDemographicsNew); } return(result); } else { error = "Server side refused this request and returned status {0}. Reason {1}. TransactionID:{0}"; error = string.Format(error, response.StatusCode, generalGetResponse.ReportHeader.MessageFromServer, generalGetResponse.ReportHeader.TransactionID); } return(null); } } catch (Exception ex) { error = "Error trying during data request. Request crash: " + ex.Message; } return(null); }
public List <GetTagView> OrderByAndTrim(List <GetTagView> list, GeneralBodyGet GeneralBodyGet, out RestExceptionError error) { try { error = null; if ((list == null) || (GeneralBodyGet == null)) { return(list); } IQueryable <GetTagView> queryableData = list.AsQueryable <GetTagView>(); List <GetTagView> filteredList = null; //1)Ordering if (GeneralBodyGet.OrderBy != null) { filteredList = queryableData.OrderBy(GeneralBodyGet.OrderBy).ToList(); } else { filteredList = queryableData.ToList(); } //2)Skipping if (GeneralBodyGet.ItensToSkip > 0) { filteredList = filteredList.Skip(GeneralBodyGet.ItensToSkip).ToList(); } //3)Trimming if (GeneralBodyGet.NumberOfItens > 0) { filteredList = filteredList.Take(GeneralBodyGet.NumberOfItens).ToList(); } return(filteredList); } catch (Exception ex) { error = new RestExceptionError(); error.ExceptionMessage = ex.Message; error.InternalMessage = "Error ocurred during 'OrderByAndTrim' "; } return(null); }
public IActionResult GetAllX(GeneralBodyGet GeneralBodyGet) { string transactionID = Guid.NewGuid().ToString(); string currentURL = this.Request.Method; HelperRestError helperRestError = new HelperRestError(); HelperHTTPLog helperHTTPLog = new HelperHTTPLog(HelperHTTPLog.WhatToLog.All); try { RestExceptionError restExceptionError = null; RESTCustomerDemographicsDB rESTCustomerDemographicsDB = new RESTCustomerDemographicsDB(base.RESTConfig); //1)Get all rows. Note: Create "select * from MyTable". DB filter must be mannually done List <GetCustomerDemographicsView> rawResult = rESTCustomerDemographicsDB.GetAllWithDBFilter(GeneralBodyGet, out restExceptionError); if (restExceptionError != null) { CreatedResult errorResult = helperRestError.GetError412_PreConditionFailed(transactionID, restExceptionError.ExceptionMessage, restExceptionError.InternalMessage, "CustomerDemographics/GetAllX"); return(errorResult); } GeneralGetResponse resultContainer = new GeneralGetResponse(); resultContainer.Data = rawResult; resultContainer.ReportHeader.TotalItensAvailable = 1; resultContainer.ReportHeader.TotalItensRetrieved = 1; resultContainer.ReportHeader.TransactionID = transactionID; HttpResponseMessage httpResponseMessage = new HttpResponseMessage(); httpResponseMessage.StatusCode = System.Net.HttpStatusCode.OK; CreatedResult createdResult = new CreatedResult("CustomerDemographics/GetAllX", httpResponseMessage); createdResult.Value = resultContainer; return(createdResult); } catch (Exception ex) { CreatedResult errorResult = helperRestError.GetError500_InternalServerError(transactionID, ex.Message, "x", "CustomerDemographics/GetAllX"); return(errorResult); } }
/// <summary> /// Filters a raw list based on GeneralBodyGet.Filters /// </summary> public List <GetTagView> Filter(List <GetTagView> rawList, GeneralBodyGet GeneralBodyGet, out RestExceptionError error) { try { error = null; if ((GeneralBodyGet == null) || (GeneralBodyGet.Filters == null) || (GeneralBodyGet.Filters.Count == 0)) { return(rawList); } //Search request data if dynamic filtering is send. DataFilterExpressionREST linqQuery = GeneralBodyGet.Filters.Where(x => x.FilterType == DataFilterExpressionREST._FilterType.Dynamic).FirstOrDefault(); List <GetTagView> result = null; if (linqQuery != null) { result = DynamicLinqQuery(rawList, linqQuery.Filter, out error); } else { var filteredList = base.FilterRawList(rawList, GeneralBodyGet, out error); result = filteredList.Cast <GetTagView>().ToList(); } if (error != null) { return(null); } return(result); } catch (Exception ex) { error = new RestExceptionError(); error.ExceptionMessage = ex.Message; error.InternalMessage = "Error ocurred during 'Filter' "; } return(null); }