/// <summary>
        /// Deletes a flex field template
        /// </summary>
        /// <param name="id">Id of the template</param>
        /// <returns>Result Status Code</returns>
        protected async Task <IActionResult> BaseDeleteFlexFieldTemplate(string id)
        {
            T template = await _templateDbAccess.GetFlexFieldObjectById(id);

            await _templateDbAccess.DeleteFlexFieldObject(template);

            _logger.LogInformation("Template was deleted.");

            await RemoveUnusedTags(template.Tags);

            if (!string.IsNullOrEmpty(template.ImageFile))
            {
                _imageAccess.CheckAndDeleteUnusedImage(template.ImageFile);
            }

            if (!string.IsNullOrEmpty(template.ThumbnailImageFile))
            {
                _imageAccess.CheckAndDeleteUnusedImage(template.ThumbnailImageFile);
            }

            await DeleteExportTemplateIfExists(id);

            await _timelineService.AddTimelineEntry(TemplateDeletedEvent, template.Name);

            return(Ok(id));
        }
        public async Task <IActionResult> DeleteFlexFieldObject(string id)
        {
            // Check references
            string referenceError = await CheckObjectReferences(id);

            if (!string.IsNullOrEmpty(referenceError))
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, referenceError));
            }

            // Delete Object and dialog
            T flexFieldObject = await _objectDbAccess.GetFlexFieldObjectById(id);

            await _objectDbAccess.DeleteFlexFieldObject(flexFieldObject);

            _logger.LogInformation("Flex Field was deleted.");

            await DeleteAdditionalFlexFieldObjectDependencies(flexFieldObject);

            await RemoveUnusedTags(flexFieldObject.Tags);

            if (!string.IsNullOrEmpty(flexFieldObject.ImageFile))
            {
                _imageAccess.CheckAndDeleteUnusedImage(flexFieldObject.ImageFile);
            }

            await _timelineService.AddTimelineEntry(ObjectDeletedEvent, flexFieldObject.Name);

            return(Ok(id));
        }