public void Delete(ImportData request)
        {
            using (Execute)
            {
                Execute.Run(ssn =>
                {
                    if (!(request?.Id > 0))
                    {
                        throw new HttpError(HttpStatusCode.NotFound, $"No Id provided for delete.");
                    }

                    var en = DocEntityImportData.Get(request?.Id);
                    if (null == en)
                    {
                        throw new HttpError(HttpStatusCode.NotFound, $"No ImportData could be found for Id {request?.Id}.");
                    }
                    if (en.IsRemoved)
                    {
                        return;
                    }

                    if (!DocPermissionFactory.HasPermission(en, currentUser, DocConstantPermission.DELETE))
                    {
                        throw new HttpError(HttpStatusCode.Forbidden, "You do not have DELETE permission for this route.");
                    }

                    en.Remove();

                    DocCacheClient.RemoveSearch(DocConstantModelName.IMPORTDATA);
                    DocCacheClient.RemoveById(request.Id);
                });
            }
        }
        private ImportData GetImportData(ImportData request)
        {
            var        id    = request?.Id;
            ImportData ret   = null;
            var        query = DocQuery.ActiveQuery ?? Execute;

            DocPermissionFactory.SetSelect <ImportData>(currentUser, "ImportData", request.Select);

            DocEntityImportData entity = null;

            if (id.HasValue)
            {
                entity = DocEntityImportData.Get(id.Value);
            }
            if (null == entity)
            {
                throw new HttpError(HttpStatusCode.NotFound, $"No ImportData found for Id {id.Value}");
            }

            if (!DocPermissionFactory.HasPermission(entity, currentUser, DocConstantPermission.VIEW))
            {
                throw new HttpError(HttpStatusCode.Forbidden, "You do not have VIEW permission for this route.");
            }

            ret = entity?.ToDto();
            return(ret);
        }
        public ImportData Post(ImportDataCopy request)
        {
            ImportData ret = null;

            using (Execute)
            {
                Execute.Run(ssn =>
                {
                    var entity = DocEntityImportData.Get(request?.Id);
                    if (null == entity)
                    {
                        throw new HttpError(HttpStatusCode.NoContent, "The COPY request did not succeed.");
                    }
                    if (!DocPermissionFactory.HasPermission(entity, currentUser, DocConstantPermission.ADD))
                    {
                        throw new HttpError(HttpStatusCode.Forbidden, "You do not have ADD permission for this route.");
                    }

                    var pCompletedOn = entity.CompletedOn;
                    var pDataSets    = entity.DataSets.ToList();
                    var pDocument    = entity.Document;
                    var pErrorData   = entity.ErrorData;
                    var pExtractUrl  = entity.ExtractUrl;
                    if (!DocTools.IsNullOrEmpty(pExtractUrl))
                    {
                        pExtractUrl += " (Copy)";
                    }
                    var pHighPriority   = entity.HighPriority;
                    var pImportFr       = entity.ImportFr;
                    var pImportLocation = entity.ImportLocation;
                    var pImportNewName  = entity.ImportNewName;
                    var pImportTable    = entity.ImportTable;
                    var pImportText     = entity.ImportText;
                    var pImportType     = entity.ImportType;
                    var pIsLegacy       = entity.IsLegacy;
                    var pOrder          = entity.Order;
                    var pReferenceId    = entity.ReferenceId;
                    var pRequestedBy    = entity.RequestedBy;
                    var pRequestedOn    = entity.RequestedOn;
                    var pStartedOn      = entity.StartedOn;
                    var pStatus         = entity.Status;
                    var copy            = new DocEntityImportData(ssn)
                    {
                        Hash             = Guid.NewGuid()
                        , CompletedOn    = pCompletedOn
                        , Document       = pDocument
                        , ErrorData      = pErrorData
                        , ExtractUrl     = pExtractUrl
                        , HighPriority   = pHighPriority
                        , ImportFr       = pImportFr
                        , ImportLocation = pImportLocation
                        , ImportNewName  = pImportNewName
                        , ImportTable    = pImportTable
                        , ImportText     = pImportText
                        , ImportType     = pImportType
                        , IsLegacy       = pIsLegacy
                        , Order          = pOrder
                        , ReferenceId    = pReferenceId
                        , RequestedBy    = pRequestedBy
                        , RequestedOn    = pRequestedOn
                        , StartedOn      = pStartedOn
                        , Status         = pStatus
                    };
                    foreach (var item in pDataSets)
                    {
                        entity.DataSets.Add(item);
                    }

                    copy.SaveChanges(DocConstantPermission.ADD);
                    ret = copy.ToDto();
                });
            }
            return(ret);
        }