private async Task <DoorState?> GetLastDoorStateAsync(string vehicleId, DoorKind kind, CancellationToken cancellationToken) { string key = MakeCacheKey(vehicleId, kind); var stateStr = await cache.GetStringAsync(key, cancellationToken); return(Enum.TryParse <DoorState>(stateStr, ignoreCase: true, out var state) ? (DoorState?)state : null); }
//=== Manage: Door Kind /// <summary> Get DoorKind. </summary> public DoorKind GetDoorKind(int id) { // Check if (id < 1) { return(null); } DoorKind kind = repository.GetEntity <DoorKind>(id); return(kind); }
/// <summary> Save DoorKind (new or existing). </summary> public int SaveDoorKind(DoorKind kind) { if (kind == null) { throw new CoreException("No DoorKind Specified!"); } // Insert or update if (kind.Id == 0) { kind.Id = repository.Insert(kind).InsertId.Value; } else { repository.Update(kind); } return(kind.Id); }
private async Task SaveDoorStateAsync(string vehicleId, DoorKind kind, DoorState state, CancellationToken cancellation) { string key = MakeCacheKey(vehicleId, kind); var stateStr = state.ToString().ToLowerInvariant(); await cache.SetStringAsync(key, stateStr, cancellation); }
private static string MakeCacheKey(string vehicleId, DoorKind kind) => $"{vehicleId}/{kind}".ToLowerInvariant();