public IHttpActionResult GetSalesReport(int?userId, string fromDate, string toDate) { var repo = CarMasterRepoFactory.Create(); try { DateTime fDate = DateTime.Parse(fromDate); DateTime tDate = DateTime.Parse(toDate); var parameters = new TotalSalesViewModel() { UserId = userId, FromDate = fDate, ToDate = tDate }; var result = repo.SearchPurchases(parameters); return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public List <Purchase> SearchPurchases(TotalSalesViewModel purchase) { var query = context.Purchases.AsQueryable(); //No parameters if (!purchase.UserId.HasValue && purchase.FromDate == null && purchase.ToDate == null) { query = context.Purchases; } //Id null, from, to null if (!purchase.UserId.HasValue && purchase.FromDate != null && purchase.ToDate == null) { query = query.Where(x => x.DatePurchased >= purchase.FromDate); } //id null, from null, to if (!purchase.UserId.HasValue && purchase.FromDate == null && purchase.ToDate != null) { query = query.Where(x => x.DatePurchased <= purchase.ToDate); } //id null, from, to if (!purchase.UserId.HasValue && purchase.FromDate != null && purchase.ToDate != null) { var product = (from x in query where x.DatePurchased >= purchase.FromDate && x.DatePurchased <= purchase.ToDate select x).ToList(); return(product); } //id, from null, to null if (purchase.UserId.HasValue && purchase.FromDate == null && purchase.ToDate == null) { var product = (from x in query where x.UserId == purchase.UserId select x).ToList(); return(product); } //id, from null, to if (purchase.UserId.HasValue && purchase.FromDate == null && purchase.ToDate != null) { var product = (from x in query where (x.UserId == purchase.UserId) && (x.DatePurchased <= purchase.ToDate) select x).ToList(); return(product); } //id, from, to null if (purchase.UserId.HasValue && purchase.FromDate != null && purchase.ToDate == null) { var product = (from x in query where (x.UserId == purchase.UserId) && (x.DatePurchased >= purchase.FromDate) select x).ToList(); return(product); } //All parameters else if (purchase.UserId.HasValue && purchase.FromDate != null && purchase.ToDate != null) { var product = (from x in query where (x.UserId == purchase.UserId) && (x.DatePurchased >= purchase.FromDate) && (x.DatePurchased <= purchase.ToDate) select x).ToList(); return(product); } var res = from q in query group q by q.UserId into g select new { UserId = g.Key, totalVehicles = g.Count(), totalSales = g.Sum(r => r.PurchasePrice) }; return(query.ToList()); }
public List <Purchase> SearchPurchases(TotalSalesViewModel purchase) { throw new NotImplementedException(); }