public IEnumerable <BalanceModel> GetBalanceViewModel(Guid jobOrderId, DateTime dateFrom, DateTime dateTo, BalanceModel.Scale scale) { DateTime[] dates = null; switch (scale) { case BalanceModel.Scale.Daily: case BalanceModel.Scale.Weekly: var step = scale == BalanceModel.Scale.Weekly ? 7 : 1; dates = EachDay(dateFrom, dateTo, step).ToArray(); break; case BalanceModel.Scale.Monthly: dates = EachMonth(dateFrom, dateTo).ToArray(); break; case BalanceModel.Scale.Quarterly: dates = EachQuarter(dateFrom, dateTo).ToArray(); break; case BalanceModel.Scale.Yearly: dates = EachYear(dateFrom, dateTo).ToArray(); break; } var isTimeAndMaterial = (from jo in Database.JobOrders where jo.OriginalId == jobOrderId select jo.IsTimeAndMaterial).Single(); var jobOrders = Repository.GetSeriesById <JobOrder>(jobOrderId, dates); var model = new List <BalanceModel>(); for (int i = 0; i < dates.Count(); i++) { var balance = new BalanceModel() { Date = dates[i], Balance = jobOrders[i].Balance }; model.Add(balance); } return(model); }
public IActionResult GetBalance(Guid?jobOrderId, DateTime?dateFrom, DateTime?dateTo, BalanceModel.Scale scale) { if (!jobOrderId.HasValue || !dateFrom.HasValue || !dateTo.HasValue) { return(BadRequest()); } var model = WorkerServices.GetBalanceViewModel(jobOrderId.Value, dateFrom.Value, dateTo.Value, scale); return(Ok(model)); }