From 75b51c7fda4b36787b99bb50046e262a11dad090 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 29 Jun 2020 22:05:02 +0000 Subject: [PATCH] --- .../Controllers/AttachmentController.cs | 30 +++++++++++++++++++ server/AyaNova/DataList/AttachmentDataList.cs | 2 +- .../DataListSqlFilterCriteriaBuilder.cs | 1 + server/AyaNova/biz/CustomFieldType.cs | 1 + server/AyaNova/biz/UiFieldDataType.cs | 3 +- 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/server/AyaNova/Controllers/AttachmentController.cs b/server/AyaNova/Controllers/AttachmentController.cs index fa8d5bef..f6346ae5 100644 --- a/server/AyaNova/Controllers/AttachmentController.cs +++ b/server/AyaNova/Controllers/AttachmentController.cs @@ -164,6 +164,36 @@ namespace AyaNova.Api.Controllers } + /// + /// Get parent object type and id + /// for specified attachment id + /// + /// + /// + [Authorize] + [HttpGet("parent/{id}")] + public async Task GetParent([FromRoute] long id) + { + if (serverState.IsClosed) + return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); + + if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.FileAttachment)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + + + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + + var at = await ct.FileAttachment.AsNoTracking().Where(z => z.Id == id).FirstOrDefaultAsync(); + if (at == null) + return NotFound(); + + + return Ok(ApiOkResponse.Response(new { id = at.AttachToObjectId, type = at.AttachToObjectType })); + } + + + //used to hold extra file data sent by client // public class UploadFileData // { diff --git a/server/AyaNova/DataList/AttachmentDataList.cs b/server/AyaNova/DataList/AttachmentDataList.cs index a744b9e3..a1a20f95 100644 --- a/server/AyaNova/DataList/AttachmentDataList.cs +++ b/server/AyaNova/DataList/AttachmentDataList.cs @@ -78,7 +78,7 @@ namespace AyaNova.DataList { TKey = "FileSize", FieldKey = "size", - UiFieldDataType = (int)UiFieldDataType.Integer, + UiFieldDataType = (int)UiFieldDataType.MemorySize, SqlValueColumnName = "afileattachment.size" }); diff --git a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs index e11e475e..81fb86a0 100644 --- a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -468,6 +468,7 @@ namespace AyaNova.DataList } break; case UiFieldDataType.Enum://enums are just ints to the db, but it's a special type so the client can recognize it + case UiFieldDataType.MemorySize://memory / file size, just a long but this type is for display formatting only case UiFieldDataType.Decimal: case UiFieldDataType.Currency: case UiFieldDataType.InternalId: diff --git a/server/AyaNova/biz/CustomFieldType.cs b/server/AyaNova/biz/CustomFieldType.cs index 61d9ff89..f874f85e 100644 --- a/server/AyaNova/biz/CustomFieldType.cs +++ b/server/AyaNova/biz/CustomFieldType.cs @@ -24,6 +24,7 @@ namespace AyaNova.Biz _validCustomFieldTypes.Add((int)UiFieldDataType.Decimal); _validCustomFieldTypes.Add((int)UiFieldDataType.Integer); _validCustomFieldTypes.Add((int)UiFieldDataType.Bool); + } diff --git a/server/AyaNova/biz/UiFieldDataType.cs b/server/AyaNova/biz/UiFieldDataType.cs index bf038a99..46a37f63 100644 --- a/server/AyaNova/biz/UiFieldDataType.cs +++ b/server/AyaNova/biz/UiFieldDataType.cs @@ -18,6 +18,7 @@ namespace AyaNova.Biz Enum = 10, EmailAddress = 11, HTTP = 12, - InternalId = 13 + InternalId = 13, + MemorySize = 14//this is so client can convert what would normally be an Integer type to human readable file / ram size value } }