This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -53,7 +53,7 @@
|
|||||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||||
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
"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_SEEDLEVEL": "small",
|
||||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
||||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
/// <param name="inObj"></param>
|
/// <param name="inObj"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPut("{id}")]
|
[HttpPut("{id}")]
|
||||||
public async Task<IActionResult> PutDataListSavedFilter([FromRoute] long id, [FromBody] DataListSavedFilter inObj)
|
public async Task<IActionResult> PutDataListSavedFilter([FromBody] DataListSavedFilter inObj)
|
||||||
{
|
{
|
||||||
if (!serverState.IsOpen)
|
if (!serverState.IsOpen)
|
||||||
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
||||||
@@ -114,7 +114,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
//Instantiate the business object handler
|
//Instantiate the business object handler
|
||||||
DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext);
|
DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext);
|
||||||
|
|
||||||
var o = await biz.GetAsync(id, false);
|
var o = await biz.GetAsync(inObj.Id, false);
|
||||||
if (o == null)
|
if (o == null)
|
||||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
}
|
}
|
||||||
catch (DbUpdateConcurrencyException)
|
catch (DbUpdateConcurrencyException)
|
||||||
{
|
{
|
||||||
if (!await biz.ExistsAsync(id))
|
if (!await biz.ExistsAsync(inObj.Id))
|
||||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||||
else
|
else
|
||||||
return StatusCode(409, new ApiErrorResponse(ApiErrorCode.CONCURRENCY_CONFLICT));
|
return StatusCode(409, new ApiErrorResponse(ApiErrorCode.CONCURRENCY_CONFLICT));
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace AyaNova.Biz
|
|||||||
//CREATE
|
//CREATE
|
||||||
internal async Task<DataListSavedFilter> CreateAsync(DataListSavedFilter inObj)
|
internal async Task<DataListSavedFilter> CreateAsync(DataListSavedFilter inObj)
|
||||||
{
|
{
|
||||||
await ValidateAsync(inObj, true);
|
Validate(inObj, true);
|
||||||
if (HasErrors)
|
if (HasErrors)
|
||||||
return null;
|
return null;
|
||||||
else
|
else
|
||||||
@@ -134,11 +134,11 @@ namespace AyaNova.Biz
|
|||||||
internal async Task<List<NameIdDefaultItem>> GetViewListAsync(string listKey)
|
internal async Task<List<NameIdDefaultItem>> GetViewListAsync(string listKey)
|
||||||
{
|
{
|
||||||
await EnsureDefaultAsync(listKey);
|
await EnsureDefaultAsync(listKey);
|
||||||
return await ct.DataListSavedFilter
|
return await ct.DataListSavedFilter
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Where(z => z.ListKey == listKey && (z.Public == true || z.UserId == UserId))
|
.Where(z => z.ListKey == listKey && (z.Public == true || z.UserId == UserId))
|
||||||
.OrderBy(z => z.Name)
|
.OrderBy(z => z.Name)
|
||||||
.Select(z => new NameIdDefaultItem(z.Id, z.Name, z.DefaultFilter)).ToListAsync();
|
.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
|
//this will allow EF to check it out
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = inObj.Concurrency;
|
ct.Entry(dbObject).OriginalValues["Concurrency"] = inObj.Concurrency;
|
||||||
|
|
||||||
await ValidateAsync(dbObject, false);
|
Validate(dbObject, false);
|
||||||
if (HasErrors)
|
if (HasErrors)
|
||||||
return false;
|
return false;
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -233,7 +233,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
|
|
||||||
//Can save or update?
|
//Can save or update?
|
||||||
private async Task ValidateAsync(DataListSavedFilter inObj, bool isNew)
|
private void Validate(DataListSavedFilter inObj, bool isNew)
|
||||||
{
|
{
|
||||||
|
|
||||||
//UserId required
|
//UserId required
|
||||||
@@ -243,23 +243,23 @@ namespace AyaNova.Biz
|
|||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, "UserId");
|
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
|
//Name required
|
||||||
if (string.IsNullOrWhiteSpace(inObj.Name))
|
if (string.IsNullOrWhiteSpace(inObj.Name))
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, "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))
|
if (string.IsNullOrWhiteSpace(inObj.Filter))
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, "Filter");
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, "Filter");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user