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