Exemple #1
0
        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);
        }