public async Task <ActionResult> List(FilterTOTReportModel filter) { var response = await WepApiMethod.SendApiAsync <DataTableResponse>(HttpVerbs.Post, $"eLearning/TOTReport/GetAll", filter); return(Content(JsonConvert.SerializeObject(response.Data), "application/json")); }
public IHttpActionResult Post(FilterTOTReportModel request) { var query = db.TOTReport.AsEnumerable(); var totalCount = query.Count(); //advance search query = query.Where(s => (request.Module == null || s.Module.Contains(request.Module)) && (request.Date == null || s.StartDate <= request.Date && s.EndDate >= request.Date) && (request.Venue == null || s.Venue.Contains(request.Venue)) ); //quick search if (!string.IsNullOrEmpty(request.search.value)) { var value = request.search.value.Trim(); query = query.Where(p => p.Module.Contains(value) || p.Venue.Contains(value) ); } var filteredCount = query.Count(); //order if (request.order != null) { string sortBy = request.columns[request.order[0].column].data; bool sortAscending = request.order[0].dir.ToLower() == "asc"; switch (sortBy) { case "Module": if (sortAscending) { query = query.OrderBy(o => o.Module); } else { query = query.OrderByDescending(o => o.Module); } break; case "Date": if (sortAscending) { query = query.OrderBy(o => o.StartDate); } else { query = query.OrderByDescending(o => o.StartDate); } break; case "Venue": if (sortAscending) { query = query.OrderBy(o => o.Venue); } else { query = query.OrderByDescending(o => o.Venue); } break; case "CreatedBy": if (sortAscending) { query = query.OrderBy(o => o.User.Name); } else { query = query.OrderByDescending(o => o.User.Name); } break; default: query = query.OrderByDescending(o => o.CreatedDate); break; } } else { query = query.OrderByDescending(o => o.CreatedDate); } var data = query.Skip(request.start).Take(request.length) .Select(s => new TOTReportModel { Id = s.Id, Module = s.Module, Date = s.StartDate.ToString("dd/MM/yyyy"), Venue = s.Venue, CreatedBy = s.User.Name + " (" + s.CreatedDate.ToString("dd/MM/yyyy HH:mm:ss") + ")" }).ToList(); return(Ok(new DataTableResponse { draw = request.draw, recordsTotal = totalCount, recordsFiltered = filteredCount, data = data.ToArray() })); }