Beispiel #1
0
        public async virtual Task <ActionResult> PostParent([FromRoute][Required] string accountId, [FromRoute][Required] string gpid,
                                                            [FromBody][Required] SettingsOnly body)
        {
            var pData = ProcessDataHelpers.InitiateProcessData((Permissions)RouteData.Values["access"],
                                                               Resource.Parent, accountId, gpid, null, null, null);

            var result = await pManager.CreateSettingAsync(pData, body);

            return(StatusCode(result.Item1, result.Item2));
        }
Beispiel #2
0
        public async virtual Task <ActionResult> PatchGrandchild([FromRoute][Required] string accountId, [FromRoute][Required] string gpid,
                                                                 [FromRoute][Required] string pid, [FromRoute][Required] string cid, [FromRoute][Required] string gcid,
                                                                 [FromBody][Required] SettingsOnly body)
        {
            var pData = ProcessDataHelpers.InitiateProcessData((Permissions)RouteData.Values["access"],
                                                               Resource.Grandchild, accountId, gpid, pid, cid, gcid);

            var result = await gcManager.UpdateSettingAsync(pData, body);

            return(StatusCode(result));
        }
Beispiel #3
0
        public async Task <int> UpdateAsync(ProcessData pData, SettingsOnly settings, bool byName = false)
        {
            var DbConnection = new NpgsqlConnection(connectionString);

            using (DbConnection)
            {
                try
                {
                    DbConnection.Open();
                    string sql   = "";
                    string value = MutateString.ConvertToJsonbString(settings.Values);
                    switch (pData.Resource)
                    {
                    case Resource.Account:
                        sql = $"SELECT dbo.account_update({pData.AccountId},'{settings.Name}');";
                        break;

                    case Resource.Grandparent:
                        sql = $"SELECT dbo.setting_gp_update({pData.Gpid},'{settings.Name ?? "null"}',{value ?? "null"});";
                        break;

                    case Resource.Parent:
                        sql = $"SELECT dbo.setting_p_update({pData.Pid},'{settings.Name ?? "null"}',{value ?? "null"});";
                        break;

                    case Resource.Child:
                        sql = $"SELECT dbo.setting_c_update({pData.Cid},'{settings.Name ?? "null"}',{value ?? "null"});";
                        break;

                    case Resource.Grandchild:
                        sql = $"SELECT dbo.setting_gc_update({pData.Gcid},'{settings.Name ?? "null"}',{value ?? "null"});";
                        break;

                    default:
                        throw new InvalidResourceTypeException();
                    }
                    var result = await DbConnection.QueryAsync <int>(sql);

                    DbConnection.Close();
                    return(result.FirstOrDefault());
                }
                catch (Exception)
                {
                    DbConnection.Close();
                    throw;
                }
            }
        }
Beispiel #4
0
        public async Task <(int, object)> CreateSettingAsync(ProcessData pData, SettingsOnly payload)
        {
            long createdRecordId = await _db.CreateAsync(pData, payload);

            // Assume this retuened zero because a data issue prevented it from being successful.
            if (createdRecordId <= 0)
            {
                return(400, new FailureResponse("na", "Failed to create resource!"));
            }

            // Remove cached items this change will affect.
            _cache.Remove($"{pData.Resource.ToString()}List_{pData.AccountId}");

            Log.Debug($"{pData.Resource.ToString()} setting {createdRecordId} created for account {pData.AccountId}.");
            return(201, new CreatedResponse(createdRecordId, ""));
        }
Beispiel #5
0
        public async Task <int> UpdateSettingAsync(ProcessData pData, SettingsOnly payload)
        {
            long updatedRecordId = await _db.UpdateAsync(pData, payload);

            if (updatedRecordId <= 0)
            {
                return(404);
            }

            // Remove cached items this change will affect.
            _cache.Remove($"{pData.Resource.ToString()}List_{pData.AccountId}");
            _cache.Remove($"{pData.Resource.ToString()}_{pData.Gpid}");

            Log.Debug($"Updated {pData.Resource.ToString()} setting {pData.Gpid} in account {pData.AccountId}.");
            return(204);
        }