// GET api/values public IHttpActionResult Get(int page = 1, int pageSize = 20) { var list = svc.GetAll(); IPagedList<Customer> pagedList = list.OrderBy(x => x.Name) .ToPagedList(page, pageSize); var paginationHeader = new { TotalCount = pagedList.TotalItemCount, TotalPages = pagedList.PageCount }; System.Web.HttpContext.Current.Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationHeader)); return Ok(pagedList.ToList()); }
/// <summary> /// filter inovice by data range and status /// </summary> /// <param name="dateRange">AnyTime|ThisYear|ThisMonth|Last3Month|Last7Days|Last365Days</param> /// <param name="page"></param> /// <param name="pageSize"></param> /// <param name="status">All|Unpaid|Partial|Overdue|Paid</param> /// <returns></returns> //[Route("/{dateRange}")] public IHttpActionResult Get(string dateRange , [FromUri]List<string> status, int page = 1, int pageSize = 20) { DateRange.DateRangeFilter drFilter = (DateRange.DateRangeFilter)Enum.Parse(typeof(DateRange.DateRangeFilter), dateRange); //DateRange.DateRangeFilter drFilter =(DateRange.DateRangeFilter)dateRange; List<Order.StatusOptions> statusList = new List<Order.StatusOptions>(); if (status != null) { foreach (var item in status) { Order.StatusOptions _status; //Order.StatusOptions _status = //(Order.StatusOptions)Enum.Parse(typeof(Order.StatusOptions), item); if (Enum.TryParse(item, out _status)) { statusList.Add(_status); } } } else { statusList.Add(Order.StatusOptions.Unpaid); } IPagedList<Invoice> pagedList = svc.GetByFilter(statusList, null, drFilter) .ToPagedList(page, pageSize); var paginationHeader = new { TotalCount = pagedList.TotalItemCount, TotalPages = pagedList.PageCount }; System.Web.HttpContext.Current.Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationHeader)); return Ok(pagedList.ToList()); }
public IHttpActionResult Get() { InvoiceSvc svc = new InvoiceSvc(); List<Order.StatusOptions> Open = new List<Order.StatusOptions> { Order.StatusOptions.Unpaid, Order.StatusOptions.Partial, Order.StatusOptions.Overdue, }; List<Order.StatusOptions> Closed = new List<Order.StatusOptions> { Order.StatusOptions.Paid }; List<Invoice> OpenInvoicesLastYear = svc.GetByFilter(Open, null, common.Helper.DateRange.DateRangeFilter.Last365Days).ToList(); decimal OpenInvOutstandingAmount = OpenInvoicesLastYear == null ? 0 : OpenInvoicesLastYear.Sum(i => i.AmountOutstanding); int TotalNumOfOpenInv = OpenInvoicesLastYear == null ? 0 : OpenInvoicesLastYear.Count(); decimal ReceivedAmount = svc.GetByFilter(Closed, null, common.Helper.DateRange.DateRangeFilter.Last3Month) .Select(c => c.AmountPaid) .DefaultIfEmpty() .Sum(); int TotalNumOfPaidInv = svc.GetByFilter(Closed, null, common.Helper.DateRange.DateRangeFilter.Last3Month) .Count(); var dashModel = new { OpenInvOutstandingAmount = OpenInvOutstandingAmount, TotalNumOfOpenInv = TotalNumOfOpenInv, ReceivedAmount = ReceivedAmount, TotalNumOfPaidInv = TotalNumOfPaidInv }; return Ok(dashModel); }
public IHttpActionResult GetYearlyTopSalesman(int year) { DateTime _yearStart = new DateTime(year, 1, 1); DateTime _yearEnd = new DateTime(year, 12, 31); var summary = from s in svc.GetAll().Where(i => i.OrderDate >= _yearStart && i.OrderDate <= _yearEnd) group s by new { salesman = s.Salesman.Name } into g orderby g.Key.salesman select new { salesman = g.Key.salesman, total = g.Sum(x => x.TotalAmount) }; var json = from s in summary.OrderByDescending(s => s.total).Take(10).ToList() select new { salesman = s.salesman.TruncateLongString(20), total = Decimal.Round(s.total, 0) }; decimal others_total = 0; if (summary.OrderByDescending(s => s.total).Skip(10).Any()) { others_total = summary.OrderByDescending(s => s.total).Skip(10).Sum(s => s.total); } var others = new[] { new { salesman = "Others", total = Decimal.Round(others_total,0) } }; json = json.Concat(others); return Ok(json); }