/// <summary> /// /// </summary> /// <typeparam name="L">Latest</typeparam> /// <typeparam name="D">Data</typeparam> /// <param name="data"></param> /// <param name="device"></param> /// <returns></returns> internal static async Task <(int ret, Dic exceptions)> SaveAsync <L, D>(this ApplicationDbContext _context, Dictionary <string, object> data, Device device, DataSide dataSide) where L : DataStorage, new() where D : DataStorage, new()
public async Task <ActionResult <AttributeLatest> > Attributes(string access_token, DataSide dataSide, string keys) { Dic exceptions = new Dic(); var(ok, device) = _context.GetDeviceByToken(access_token); if (ok) { return(NotFound(new ApiResult <Dic>(ApiCode.NotFoundDevice, $"{access_token} not a device's access token", new Dic(new DicKV[] { new DicKV("access_token", access_token) })))); } else { var deviceId = device.Id; try { var attributes = from dev in _context.AttributeLatest where dev.DeviceId == deviceId select dev; var fs = from at in await attributes.ToListAsync() where at.DataSide == dataSide && keys.Split(',', options : StringSplitOptions.RemoveEmptyEntries).Contains(at.KeyName) select at; return(Ok(fs.ToArray())); } catch (Exception ex) { return(BadRequest(new ApiResult(ApiCode.Exception, $"{deviceId} {ex.Message}"))); } } }