This commit is contained in:
2021-02-03 20:12:36 +00:00
parent 267b498e93
commit fd540f29ed
3 changed files with 23 additions and 23 deletions

2
.vscode/launch.json vendored
View File

@@ -53,7 +53,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
"AYANOVA_SERVER_TEST_MODE": "true",
"AYANOVA_SERVER_TEST_MODE": "false",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -103,7 +103,7 @@ namespace AyaNova.Api.Controllers
/// <param name="inObj"></param>
/// <returns></returns>
[HttpPut("{id}")]
public async Task<IActionResult> PutDataListSavedFilter([FromRoute] long id, [FromBody] DataListSavedFilter inObj)
public async Task<IActionResult> PutDataListSavedFilter([FromBody] DataListSavedFilter inObj)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
@@ -114,7 +114,7 @@ namespace AyaNova.Api.Controllers
//Instantiate the business object handler
DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext);
var o = await biz.GetAsync(id, false);
var o = await biz.GetAsync(inObj.Id, false);
if (o == null)
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
@@ -128,7 +128,7 @@ namespace AyaNova.Api.Controllers
}
catch (DbUpdateConcurrencyException)
{
if (!await biz.ExistsAsync(id))
if (!await biz.ExistsAsync(inObj.Id))
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
else
return StatusCode(409, new ApiErrorResponse(ApiErrorCode.CONCURRENCY_CONFLICT));

View File

@@ -49,7 +49,7 @@ namespace AyaNova.Biz
//CREATE
internal async Task<DataListSavedFilter> CreateAsync(DataListSavedFilter inObj)
{
await ValidateAsync(inObj, true);
Validate(inObj, true);
if (HasErrors)
return null;
else
@@ -134,11 +134,11 @@ namespace AyaNova.Biz
internal async Task<List<NameIdDefaultItem>> GetViewListAsync(string listKey)
{
await EnsureDefaultAsync(listKey);
return await ct.DataListSavedFilter
.AsNoTracking()
.Where(z => z.ListKey == listKey && (z.Public == true || z.UserId == UserId))
.OrderBy(z => z.Name)
.Select(z => new NameIdDefaultItem(z.Id, z.Name, z.DefaultFilter)).ToListAsync();
return await ct.DataListSavedFilter
.AsNoTracking()
.Where(z => z.ListKey == listKey && (z.Public == true || z.UserId == UserId))
.OrderBy(z => z.Name)
.Select(z => new NameIdDefaultItem(z.Id, z.Name, z.DefaultFilter)).ToListAsync();
}
@@ -185,7 +185,7 @@ namespace AyaNova.Biz
//this will allow EF to check it out
ct.Entry(dbObject).OriginalValues["Concurrency"] = inObj.Concurrency;
await ValidateAsync(dbObject, false);
Validate(dbObject, false);
if (HasErrors)
return false;
await ct.SaveChangesAsync();
@@ -233,7 +233,7 @@ namespace AyaNova.Biz
//
//Can save or update?
private async Task ValidateAsync(DataListSavedFilter inObj, bool isNew)
private void Validate(DataListSavedFilter inObj, bool isNew)
{
//UserId required
@@ -243,23 +243,23 @@ namespace AyaNova.Biz
AddError(ApiErrorCode.VALIDATION_REQUIRED, "UserId");
}
//can't save a filter for someone else
if (inObj.UserId != UserId && inObj.Public == false)
{
AddError(ApiErrorCode.NOT_AUTHORIZED, "generalerror", "Can only save private filters for self not other UserId's");
return;
}
//technically not "validation" but always ensure default filter has - name
if (inObj.DefaultFilter)
{
inObj.Name = "-";
}
//Name required
if (string.IsNullOrWhiteSpace(inObj.Name))
AddError(ApiErrorCode.VALIDATION_REQUIRED, "Name");
//If name is otherwise OK, check that name is unique
if (!PropertyHasErrors("Name"))
{
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
if (await ct.DataListSavedFilter.AnyAsync(z => z.Name == inObj.Name && z.Id != inObj.Id))
{
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
}
}
if (string.IsNullOrWhiteSpace(inObj.Filter))
AddError(ApiErrorCode.VALIDATION_REQUIRED, "Filter");