diff --git a/server/AyaNova/Controllers/DataListSavedColumnViewController.cs b/server/AyaNova/Controllers/DataListSavedColumnViewController.cs
index cc5b2ea4..41e0701d 100644
--- a/server/AyaNova/Controllers/DataListSavedColumnViewController.cs
+++ b/server/AyaNova/Controllers/DataListSavedColumnViewController.cs
@@ -41,13 +41,12 @@ namespace AyaNova.Api.Controllers
///
- /// Get DataListSavedColumnView
- ///
- ///
+ /// Get DataListSavedColumnView for current user
+ ///
///
/// DataListSavedColumnView
[HttpGet("{userId}/{listKey}")]
- public async Task GetDataListSavedColumnView([FromRoute] long userId, [FromRoute] string listKey)
+ public async Task GetDataListSavedColumnView([FromRoute] string listKey)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
@@ -56,7 +55,7 @@ namespace AyaNova.Api.Controllers
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
- var o = await biz.GetAsync(userId, listKey, true);
+ var o = await biz.GetAsync(biz.UserId, listKey, true);
if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
return Ok(ApiOkResponse.Response(o));
}
@@ -89,23 +88,21 @@ namespace AyaNova.Api.Controllers
///
/// Reset DataListSavedColumnView to factory defaults
- ///
- ///
+ ///
///
/// NoContent
[HttpDelete("{id}")]
- public async Task DeleteProject([FromRoute] long userId, [FromRoute] string listKey)
+ public async Task ResetDataListSavedColumnView([FromRoute] string listKey)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
DataListSavedColumnViewBiz biz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
- if (!Authorized.HasDeleteRole(HttpContext.Items, biz.BizType))
- return StatusCode(403, new ApiNotAuthorizedResponse());
- if (!await biz.DeleteAsync(userId, listKey))
+ var o = await biz.DeleteAsync(biz.UserId, listKey);
+ if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
- return NoContent();
+ return Ok(ApiOkResponse.Response(o));
}
//------------
diff --git a/server/AyaNova/biz/DataListSavedColumnViewBiz.cs b/server/AyaNova/biz/DataListSavedColumnViewBiz.cs
index bdb2f83a..ca109210 100644
--- a/server/AyaNova/biz/DataListSavedColumnViewBiz.cs
+++ b/server/AyaNova/biz/DataListSavedColumnViewBiz.cs
@@ -53,8 +53,13 @@ namespace AyaNova.Biz
else
{
//delete the existing one in favor of this one
- if (!await DeleteAsync(newObject.UserId, newObject.ListKey))
- return null;
+ var dbObject = await GetAsync(newObject.UserId, newObject.ListKey, false);
+ if (dbObject != null)
+ {
+ ct.DataListSavedColumnView.Remove(dbObject);
+ await ct.SaveChangesAsync();
+ }
+
await ct.DataListSavedColumnView.AddAsync(newObject);
await ct.SaveChangesAsync();
@@ -72,17 +77,19 @@ namespace AyaNova.Biz
internal async Task GetAsync(long userId, string listKey, bool createDefaultIfNecessary)
{
var ret = await ct.DataListSavedColumnView.AsNoTracking().SingleOrDefaultAsync(z => z.UserId == userId && z.ListKey == listKey);
- if(ret==null && createDefaultIfNecessary){
- if(!DataListFactory.ListKeyIsValid(listKey)){
+ if (ret == null && createDefaultIfNecessary)
+ {
+ if (!DataListFactory.ListKeyIsValid(listKey))
+ {
throw new System.ArgumentOutOfRangeException($"ListKey '{listKey}' is not a valid DataListKey");
}
- ret=new DataListSavedColumnView();
- ret.UserId=UserId;
- ret.ListKey=listKey;
- var dataList=DataListFactory.GetAyaDataList(listKey);
- ret.Columns=JsonConvert.SerializeObject(dataList.DefaultColumns);
- ret.Sort=JsonConvert.SerializeObject(dataList.DefaultSortBy);
- return await CreateAsync(ret);
+ ret = new DataListSavedColumnView();
+ ret.UserId = UserId;
+ ret.ListKey = listKey;
+ var dataList = DataListFactory.GetAyaDataList(listKey);
+ ret.Columns = JsonConvert.SerializeObject(dataList.DefaultColumns);
+ ret.Sort = JsonConvert.SerializeObject(dataList.DefaultSortBy);
+ return await CreateAsync(ret);
}
return ret;
}
@@ -90,20 +97,22 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
- //DELETE
+ //DELETE (RESET)
//
- internal async Task DeleteAsync(long userId, string listKey)
+ internal async Task DeleteAsync(long userId, string listKey)
{
//this is effectively the RESET route handler
//so it can be called any time even if there is no default list and it's a-ok
//because a new default will be created if needed
+
var dbObject = await GetAsync(userId, listKey, false);
if (dbObject != null)
{
ct.DataListSavedColumnView.Remove(dbObject);
await ct.SaveChangesAsync();
+ dbObject = await GetAsync(userId, listKey, true);
}
- return true;
+ return dbObject;
}
@@ -121,10 +130,10 @@ namespace AyaNova.Biz
if (string.IsNullOrWhiteSpace(inObj.ListKey))
AddError(ApiErrorCode.VALIDATION_REQUIRED, "ListKey");
- if (!DataListFactory.ListKeyIsValid(inObj.ListKey))
+ if (!DataListFactory.ListKeyIsValid(inObj.ListKey))
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "ListKey", $"ListKey \"{inObj.ListKey}\" DataListKey is not valid");
-
-
+
+
//Validate Sort JSON
try
{