Example #1
0
        /// <summary>
        /// Create, update and delete of a preference key
        /// </summary>
        private async Task <int> UpsertPreferenceKey(PreferenceEventType eventType, Guid?prefKeyUID, string prefKeyName)
        {
            if (eventType == PreferenceEventType.CreatePreferenceKeyEvent || eventType == PreferenceEventType.UpdatePreferenceKeyEvent)
            {
                //Check name doesn't already exist as it must be unique
                if (await GetPreferenceKey(prefKeyName: prefKeyName) != null)
                {
                    Log.LogDebug($"PreferenceRepository/StorePreferenceKey: No action as preference key name already exists");
                    return(0);
                }
            }
            var upsertedCount = 0;
            var existing      = await GetPreferenceKey(prefKeyUID);

            var prefKey = new PrefKeyDataModel
            {
                KeyName          = prefKeyName,
                PreferenceKeyUID = prefKeyUID?.ToString(),
                PreferenceKeyID  = existing?.PreferenceKeyID ?? 0
            };

            if (eventType == PreferenceEventType.CreatePreferenceKeyEvent)
            {
                upsertedCount = await CreatePreferenceKey(prefKey, existing);
            }

            if (eventType == PreferenceEventType.UpdatePreferenceKeyEvent)
            {
                upsertedCount = await UpdatePreferenceKey(prefKey, existing);
            }

            if (eventType == PreferenceEventType.DeletePreferenceKeyEvent)
            {
                upsertedCount = await DeletePreferenceKey(prefKey, existing);
            }
            return(upsertedCount);
        }
Example #2
0
        /// <summary>
        /// Create, update or delete a user preference.
        /// </summary>
        private async Task <int> UpsertUserPreference(PreferenceEventType eventType, Guid?prefKeyUID, string prefKeyName, Guid userUID, string schemaVersion = null, string prefJson = null)
        {
            // Look up the preference key to get the foreign key for user preferences
            var prefKey = await GetPreferenceKey(prefKeyUID, prefKeyName);

            if (prefKey == null)
            {
                return(0);
            }

            var userPref = new UserPrefDataModel
            {
                PreferenceKeyID = prefKey.PreferenceKeyID,
                SchemaVersion   = schemaVersion,
                UserUID         = userUID.ToString(),
                PreferenceJson  = prefJson
            };

            var upsertedCount = 0;
            var existing      = await GetUserPreference(userUID, prefKey.PreferenceKeyID);

            if (eventType == PreferenceEventType.CreateUserPreferenceEvent)
            {
                upsertedCount = await CreateUserPreference(userPref, existing);
            }

            if (eventType == PreferenceEventType.UpdateUserPreferenceEvent)
            {
                upsertedCount = await UpdateUserPreference(userPref, existing);
            }

            if (eventType == PreferenceEventType.DeleteUserPreferenceEvent)
            {
                upsertedCount = await DeleteUserPreference(userPref, existing);
            }
            return(upsertedCount);
        }