protected ResponseEM <T> GetGrid <T>(RequestEM request, string spName, Func <string, DynamicParameters, IEnumerable <T> > query = null) where T : class { DynamicParameters parameters = new DynamicParameters(); parameters.Add("@Search", request.SearchExpression); parameters.Add("@Offset", request.Offset); parameters.Add("@Length", request.Length); parameters.Add("@OrderBy", request.OrderBy); parameters.Add("@OrderDir", request.IsDescending); parameters.Add("@Total", 0, direction: ParameterDirection.Output); IEnumerable <T> result; if (query == null) { result = ExecuteMultiSP <T>(spName, param: parameters); } else { result = query(spName, parameters); } int total = parameters.Get <int>("@Total"); return(new ResponseEM <T> { Total = total, Rows = result }); }
public ResponseEM <Books> GetBooks(RequestEM request) { return(GetGrid(request, "uspSelectBooks", query: (spName, parameters) => { var result = ExecuteMultiSetSP <Books, BookAuthor>(spName, param: parameters); result.Item1.ToList().ForEach(b => b.Authors = result.Item2 .Where(a => a.BookId == b.Id) .Select(a => new Author { Id = a.AuthorId, FirstName = a.FirstName, LastName = a.LastName }) ); return result.Item1; })); }
public ResponseEM <Authors> GetAuthors(RequestEM request) { return(GetGrid <Authors>(request, "uspSelectAuthors")); }