Exemplo n.º 1
0
    /// <summary>
    /// Gets the default appearance for the given character, or creates one if one does not exist.
    /// </summary>
    /// <param name="character">The character.</param>
    /// <param name="ct">The cancellation token in use.</param>
    /// <returns>A retrieval result which may or may not have succeeded.</returns>
    public async Task <Result <Appearance> > GetOrCreateDefaultAppearanceAsync
    (
        Character character,
        CancellationToken ct = default
    )
    {
        var getDefaultAppearance = await GetDefaultAppearanceAsync(character, ct);

        if (getDefaultAppearance.IsSuccess)
        {
            return(getDefaultAppearance);
        }

        var createDefaultAppearanceResult = await Appearance.CreateDefaultAsync(character, this);

        if (!createDefaultAppearanceResult.IsSuccess)
        {
            return(Result <Appearance> .FromError(createDefaultAppearanceResult));
        }

        var defaultAppearance = createDefaultAppearanceResult.Entity;

        defaultAppearance.IsDefault = true;

        _database.Appearances.Update(defaultAppearance);
        await _database.SaveChangesAsync(ct);

        return(defaultAppearance);
    }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the default appearance for the given character, or creates one if one does not exist.
        /// </summary>
        /// <param name="character">The character.</param>
        /// <returns>A retrieval result which may or may not have succeeded.</returns>
        public async Task <RetrieveEntityResult <Appearance> > GetOrCreateDefaultAppearanceAsync
        (
            Character character
        )
        {
            var getDefaultAppearance = await GetDefaultAppearanceAsync(character);

            if (getDefaultAppearance.IsSuccess)
            {
                return(getDefaultAppearance);
            }

            var createDefaultAppearanceResult = await Appearance.CreateDefaultAsync(character, this);

            if (!createDefaultAppearanceResult.IsSuccess)
            {
                return(RetrieveEntityResult <Appearance> .FromError(createDefaultAppearanceResult));
            }

            var defaultAppearance = createDefaultAppearanceResult.Entity;

            defaultAppearance.IsDefault = true;

            _database.Appearances.Update(defaultAppearance);

            await _database.SaveChangesAsync();

            // Requery the database
            return(await GetOrCreateDefaultAppearanceAsync(character));
        }