public async Task <OperationDataResult <OuterResourcesModel> > GetAllAreas(OuterResourceRequestModel requestModel)
 {
     return(await _outerResourceService.Index(requestModel));
 }
        public async Task <OperationDataResult <OuterResourcesModel> > Index(OuterResourceRequestModel requestModel)
        {
            try
            {
                var outerResourcesModel = new OuterResourcesModel();

                var query = _dbContext.OuterResources.AsQueryable();
                if (!string.IsNullOrEmpty(requestModel.Sort))
                {
                    if (requestModel.IsSortDsc)
                    {
                        query = query
                                .CustomOrderByDescending(requestModel.Sort);
                    }
                    else
                    {
                        query = query
                                .CustomOrderBy(requestModel.Sort);
                    }
                }
                else
                {
                    query = _dbContext.OuterResources
                            .OrderBy(x => x.Id);
                }

                query = query.Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

                if (requestModel.PageSize != null)
                {
                    query = query
                            .Skip(requestModel.Offset)
                            .Take((int)requestModel.PageSize);
                }

                var outerResourceList = await query.Select(x => new OuterResourceModel()
                {
                    Name       = x.Name,
                    Id         = x.Id,
                    ExternalId = x.ExternalId,
                    RelatedInnerResourcesIds = _dbContext.OuterInnerResources.AsNoTracking().Where(y =>
                                                                                                   y.OuterResourceId == x.Id && y.WorkflowState != Constants.WorkflowStates.Removed).Select(z => z.InnerResourceId).ToList()
                }).AsNoTracking().ToListAsync();

                outerResourcesModel.Total = await _dbContext.OuterResources.AsNoTracking().Where(x => x.WorkflowState != Constants.WorkflowStates.Removed).CountAsync();

                outerResourcesModel.OuterResourceList = outerResourceList;

                try
                {
                    outerResourcesModel.Name = _dbContext.PluginConfigurationValues.SingleOrDefault(x =>
                                                                                                    x.Name == "OuterInnerResourceSettings:OuterResourceName")
                                               ?.Value;
                }
                catch (Exception)
                {
                    // ignored
                }

                return(new OperationDataResult <OuterResourcesModel>(true, outerResourcesModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <OuterResourcesModel>(false,
                                                                     _localizationService.GetString("ErrorObtainOuterResources")));
            }
        }