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
}
}