//TODO use other class methods to calculate public async Task <BuildingsDataDto> buildingDashboardData() { var buildingListResult = await _buildingsRepo.GetAsync(); var buildingTypeListResult = await _buildingCategoryRepo.GetAsync(); var buildingsDataDto = new BuildingsDataDto() { BuildingList = _mapper.Map <IEnumerable <BuildingDataDto> >(buildingListResult), BuildingTypeList = _mapper.Map <List <BuildingTypeDataDto> >(buildingTypeListResult.ToList()) }; foreach (BuildingDataDto b in buildingsDataDto.BuildingList) { b.CurrentGuests = await _stayRepo.GetCount(s => s.CheckedOut == false && s.CheckedIn == true && !(DateTime.Compare(s.CheckInDate.Date, DateTime.Today) > 0) && s.BuildingId == b.Id); b.Capacity = await _roomRepo.GetSum(r => r.Capacity, r => r.BuildingId == b.Id); b.SurgeCapacity = await _roomRepo.GetSum(r => r.SurgeCapacity, r => r.BuildingId == b.Id); var bcat = buildingsDataDto.BuildingTypeList.Find(t => t.Id == b.BuildingCategoryId); if (bcat != null) { bcat.Capacity += b.Capacity; bcat.CurrentGuests += b.CurrentGuests; bcat.SurgeCapacity += b.SurgeCapacity; } } return(buildingsDataDto); }
public async Task <IActionResult> buildingDashboardData() { var buildingListResult = await _buildingService.GetBuildings(); var buildingTypeListResult = await _buildingService.GetBuildingTypes(); var buildingsDataDto = new BuildingsDataDto() { BuildingList = _mapper.Map <IEnumerable <BuildingDataDto> >(buildingListResult), BuildingTypeList = _mapper.Map <List <BuildingTypeDataDto> >(buildingTypeListResult.ToList()) }; foreach (BuildingDataDto b in buildingsDataDto.BuildingList) { b.CurrentGuests = await _buildingService.GetBuildingCurrentGuests(b.Id); b.Capacity = await _buildingService.GetBuildingCapacity(b.Id); b.SurgeCapacity = await _buildingService.GetBuildingSurgeCapacity(b.Id); var bcat = buildingsDataDto.BuildingTypeList.Find(t => t.Id == b.BuildingCategoryId); if (bcat != null) { bcat.SurgeCapacity += b.SurgeCapacity; bcat.Capacity += b.Capacity; bcat.CurrentGuests += b.CurrentGuests; } } return(Ok(buildingsDataDto)); }