public async Task <ThermostatCollection> List(ThermostatQuery query) { var dbQuery = await query.Create(this.Entities); var total = await dbQuery.CountAsync(); dbQuery = dbQuery.Skip(query.SkipTo(total)).Take(query.Limit); var resultQuery = dbQuery.Select(i => mapper.Map <Thermostat>(i)); var results = await resultQuery.ToListAsync(); return(new ThermostatCollection(query, total, results)); }
public async Task <ThermostatCollection> List([FromQuery] ThermostatQuery query, [FromServices] IThermostatSubsystemManager <ThermostatInput, Thermostat> thermostats) { var result = await repo.List(query); if (query.UpdateStatus && query.ThermostatId != null) { //Allow status update for 1 item var cached = result.Items.FirstOrDefault(); if (cached != null) { var live = await thermostats.Get(cached.Subsystem, cached.Bridge, cached.Id); var item = await repo.Update(cached.ThermostatId, live); return(new ThermostatCollection(query, 1, new Thermostat[] { item })); } } return(result); }