private WaterUsageOverviewDto GetWaterUsageOverviewDtoForParcelIDs(List <int> parcelIDs) { var parcelMonthlyEvapotranspirationDtos = ParcelMonthlyEvapotranspiration.ListByParcelID(_dbContext, parcelIDs).ToList(); var cumulativeWaterUsageByYearDtos = parcelMonthlyEvapotranspirationDtos.GroupBy(x => x.WaterYear).Select(x => new CumulativeWaterUsageByYearDto { Year = x.Key, CumulativeWaterUsage = GetCurrentWaterUsageOverview(x) }).ToList(); var historicWaterUsageOverview = GetHistoricWaterUsageOverview(cumulativeWaterUsageByYearDtos.SelectMany(x => x.CumulativeWaterUsage).ToList()); // the chart needs value to be non null, so we need to set the cumulativewaterusage values to be 0 for the null ones; we need them to be null originally when calculating historic since we don't want them to count foreach (var cumulativeWaterUsageByMonthDto in cumulativeWaterUsageByYearDtos .SelectMany(x => x.CumulativeWaterUsage).Where(y => y.CumulativeWaterUsageInAcreFeet == null)) { cumulativeWaterUsageByMonthDto.CumulativeWaterUsageInAcreFeet = 0; } var waterUsageOverviewDto = new WaterUsageOverviewDto { Current = cumulativeWaterUsageByYearDtos, Historic = historicWaterUsageOverview }; return(waterUsageOverviewDto); }
public ActionResult <WaterUsageByParcelDto> GetWaterUsageByAccountIDAndYear([FromRoute] int accountID, [FromRoute] int year) { var parcelDtos = Parcel.ListByAccountIDAndYear(_dbContext, accountID, year).ToList(); var parcelIDs = parcelDtos.Select(x => x.ParcelID).ToList(); var parcelMonthlyEvapotranspirationDtos = ParcelMonthlyEvapotranspiration.ListByParcelIDAndYear(_dbContext, parcelIDs, parcelDtos, year); var monthlyWaterUsageDtos = parcelMonthlyEvapotranspirationDtos .GroupBy(x => x.WaterMonth) .OrderBy(x => x.Key) .Select(x => new MonthlyWaterUsageDto() { Month = ((DateUtilities.Month)x.Key).ShortMonthName(), WaterUsageByParcel = x.OrderBy(y => y.ParcelNumber).Select(y => new ParcelWaterUsageDto { ParcelNumber = y.ParcelNumber, WaterUsageInAcreFeet = y.OverriddenEvapotranspirationRate ?? y.EvapotranspirationRate ?? 0, IsOverridden = y.OverriddenEvapotranspirationRate != null, IsEmpty = y.IsEmpty }).ToList() }) .ToList(); var waterUsageDto = new WaterUsageByParcelDto { Year = year, WaterUsage = monthlyWaterUsageDtos.ToList() }; return(Ok(waterUsageDto)); }
public ActionResult <int> SaveParcelMonthlyEvapotranspirationOverrideValues([FromRoute] int accountID, [FromRoute] int year, [FromBody] List <ParcelMonthlyEvapotranspirationDto> overriddenValues) { var numChanging = ParcelMonthlyEvapotranspiration.SaveParcelMonthlyUsageOverrides(_dbContext, accountID, year, overriddenValues); return(Ok(numChanging)); }
public ActionResult <List <ParcelMonthlyEvapotranspirationDto> > ListWaterUsagesByParcelAndAccountID([FromRoute] int accountID, [FromRoute] int year) { var parcelDtos = Parcel.ListByAccountIDAndYear(_dbContext, accountID, year).OrderBy(x => x.ParcelID).ToList(); var parcelIDs = parcelDtos.Select(x => x.ParcelID).ToList(); var parcelMonthlyEvapotranspirationDtos = ParcelMonthlyEvapotranspiration.ListByParcelIDAndYear(_dbContext, parcelIDs, parcelDtos, year); return(Ok(parcelMonthlyEvapotranspirationDtos)); }
public ActionResult <ParcelAllocationAndConsumptionDto> GetAllocationAndConsumption([FromRoute] int parcelID) { var parcelDto = Parcel.GetByParcelID(_dbContext, parcelID); if (ThrowNotFound(parcelDto, "Parcel", parcelID, out var actionResult)) { return(actionResult); } var parcelMonthlyEvapotranspirationDtos = ParcelMonthlyEvapotranspiration.ListByParcelID(_dbContext, parcelID); return(Ok(parcelMonthlyEvapotranspirationDtos)); }