StudioResourceRepository BuildExplorerItems(IResourceRepository resourceRepository)
{
var resourceModels = resourceRepository.All();
var localhostItemModel = new ExplorerItemModel { DisplayName = "localhost", EnvironmentId = Guid.Empty, ResourceType = ResourceType.Server };
if(resourceModels != null)
{
foreach(var resourceModel in resourceModels)
{
var resourceItemModel = new ExplorerItemModel { ResourceId = resourceModel.ID, ResourcePath = resourceModel.Category, EnvironmentId = Guid.Empty, DisplayName = resourceModel.ResourceName };
ResourceType correctTyping = ResourceType.WorkflowService;
switch(resourceModel.ResourceType)
{
case Studio.Core.AppResources.Enums.ResourceType.WorkflowService:
correctTyping = ResourceType.WorkflowService;
break;
case Studio.Core.AppResources.Enums.ResourceType.Service:
correctTyping = ResourceType.DbService;
break;
case Studio.Core.AppResources.Enums.ResourceType.Source:
correctTyping = ResourceType.WebSource;
break;
}
resourceItemModel.ResourceType = correctTyping;
var categoryItem = localhostItemModel.Children.FirstOrDefault(model => model.DisplayName == resourceModel.Category);
if(categoryItem == null)
{
categoryItem = new ExplorerItemModel { Parent = localhostItemModel, DisplayName = resourceModel.Category, EnvironmentId = Guid.Empty, ResourceType = ResourceType.Folder, ResourcePath = "" };
localhostItemModel.Children.Add(categoryItem);
}
resourceItemModel.Parent = categoryItem;
categoryItem.Children.Add(resourceItemModel);
}
}
var studioResourceRepository = new StudioResourceRepository(localhostItemModel, _Invoke);
var explorerResourceRepository = new Mock<IClientExplorerResourceRepository>().Object;
studioResourceRepository.GetExplorerProxy = guid => explorerResourceRepository;
return studioResourceRepository;
}