public static async Task <IGeneration> AdvanceGenerationAsync(this SQLiteDatabase database) { IGeneration generation = await database.GetCurrentGenerationOrNullAsync(); if (generation != null) { // Update the end date of the current generation. generation.EndDate = DateUtilities.GetCurrentDateUtc(); await database.UpdateGenerationAsync(generation); } // Create and add the next generation. generation = new Generation { Number = generation is null ? 1 : generation.Number + 1, StartDate = generation is null ? DateTimeOffset.MinValue : DateUtilities.GetCurrentDateUtc(), EndDate = DateTimeOffset.MaxValue }; await database.AddGenerationAsync(generation); return(generation); }