using Model; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Http; /// /// guadanStatisticsController 的摘要描述 /// public class guadanStatisticsController: ApiController { private Model.ezEntities _db = new Model.ezEntities(); [HttpGet] [Route("api/guadanStatistics/GetGuadanStatistics")] public async Task GetGuadanStatistics() { //挂单统计:房间,床位,挂单笔数,挂单人数的统计 var now = DateTime.Now; var roomCount = await _db.Room.Where(a => a.IsDeleted == false).CountAsync(); var rooms = await _db.Room.Include(r => r.RegionRoomBed).ToListAsync(); var emptyRoomCount = rooms .Where(r => r.RegionRoomBed.All(b => b.IsAvailableDuring(now, now, _db))) // 這裡就能用方法 .Count(); var bedCount = await _db.RegionRoomBed.Where(a => a.IsDeleted == false).CountAsync(); var maleBedCount = await _db.RegionRoomBed.Where(a => a.IsDeleted == false && a.Gender == true).CountAsync(); var femaleBedCount = await _db.RegionRoomBed.Where(a => a.IsDeleted == false && a.Gender == false).CountAsync(); var guadanTotalCount = await _db.GuaDanOrder.Where(a => a.IsDeleted == false).CountAsync(); var guadanPeopleTotal = await _db.GuaDanOrderGuest.Where(a => a.IsDeleted == false).CountAsync(); var guadanPeopleMale = await _db.GuaDanOrderGuest.Where(a => a.IsDeleted == false && a.followers.sex == "男眾").CountAsync(); var guadanPeopleFemale = await _db.GuaDanOrderGuest.Where(a => a.IsDeleted == false && a.followers.sex == "女眾").CountAsync(); dynamic bedCounts = await RegionAndRoomAndBedSchedule.GetAvailableBedCountsAsync(_db, DateTime.Now, DateTime.Now); var guadanCurrentCount = await _db.GuaDanOrder.Where(a => now < a.EndDate).CountAsync(); var guadanPeopleCurrent = await _db.GuaDanOrderGuest.Where( a => a.CheckOutAt > now).CountAsync(); var guadanPeopleCurrentMale = await _db.GuaDanOrderGuest.Where(a => a.CheckOutAt > now && a.followers.sex == "男眾").CountAsync(); var guadanPeopleCurrentFemale = await _db.GuaDanOrderGuest.Where(a => a.CheckOutAt > now && a.followers.sex == "女眾").CountAsync(); var result = new { roomStatistics = new { roomCount = roomCount, emptyRoomCount = emptyRoomCount, bedCount = bedCount, maleBedCount = maleBedCount, femaleBedCount = femaleBedCount, emptyBedCount = bedCounts.male + bedCounts.female, emptyMaleBedCount = bedCounts.male, emptyFemaleBedCount = bedCounts.female }, guadanStatistics = new { guadanTotalCount = guadanTotalCount, // 总挂单次数 guadanCurrentCount = guadanCurrentCount, // 当前挂单数量 guadanPeopleTotal = guadanPeopleTotal, // 总挂单人数 guadanPeopleMale = guadanPeopleMale, guadanPeopleFemale = guadanPeopleFemale, guadanPeopleCurrent = guadanPeopleCurrent, // 当前挂单人数 guadanPeopleCurrentMale = guadanPeopleCurrentMale, guadanPeopleCurrentFemale = guadanPeopleCurrentFemale } }; return Ok(result); } }