private void Process([NotNull] Project project, [NotNull] EnvDTE.ProjectItem item) { Debug.ArgumentNotNull(project, nameof(project)); Debug.ArgumentNotNull(item, nameof(item)); var projectFile = project.GetProjectItem(item) as ProjectFileItem; if (projectFile != null) { var itemIds = projectFile.Items; if (itemIds.Count > 0) { return; } } var fileName = item.GetFileName(); var handler = FileItemManager.GetFileItemHandler(fileName); if (handler == null) { return; } if (projectFile != null) { if (createItems.Any(createItem => createItem.ProjectItem == projectFile)) { return; } } createItems.Add(new CreateItem(item, project, projectFile, handler)); }
/// <summary> /// 拍照照片名字为梁片编号-工序-工作项-时间 /// </summary> /// <param name="file"></param> /// <param name="relationalId"></param> /// <param name="category"></param> /// <param name="tenantId"></param> /// <returns></returns> public async Task <FileItem> UploadAssignmentFile(IFormFile file, Guid?relationalId, FileItemCategory category, int?tenantId) { var fileItem = FileItemManager.CreateFile(_hostingEnvironment, file, relationalId, category, tenantId); // 如果没有relationalId则返回空 if (!fileItem.RelationalId.HasValue) { return(null); } var assignment = await GetAsync((Guid)fileItem.RelationalId); // SubProjectId为空,则编号不会填入 var subProject = assignment.SubProjectId.HasValue ? _repositorySubProject.Get((Guid)assignment.SubProjectId) : null; var pt = _repositoryPt.Get(assignment.ProcedureStepTaskItemId); var procedureStep = _repositoryProcedureStep.Get(pt.ProcedureStepId); var taskItem = _repositoryTaskItem.Get(pt.TaskItemId); // 填写文件的名字,然后再插入 fileItem.FileName = subProject?.Code + "-" + procedureStep.Name + "-" + taskItem.Name + "-" + DateTime.Now.ToString("yyMMddHHmmss"); return(await _repositoryFileItem.InsertAsync(fileItem)); }
private bool IsFileItem([NotNull] EnvDTE.ProjectItem item) { Debug.ArgumentNotNull(item, nameof(item)); var project = ProjectManager.GetProject(item); if (project == null) { return(false); } var projectFile = project.GetProjectItem(item) as ProjectFileItem; if (projectFile != null) { var itemIds = projectFile.Items; if (itemIds.Count > 0) { return(false); } } var fileName = item.GetFileName(); if (string.IsNullOrEmpty(fileName)) { return(false); } return(FileItemManager.GetFileItemHandler(fileName) != null); }
public FileItemController( FileItemManager fileItemManager, PlanManager planManager, ProjectManager projectManager, TaskItemAssignmentManager taskItemAssignmentManager) { _fileItemManager = fileItemManager; _planManager = planManager; _projectManager = projectManager; _taskItemAssignmentManager = taskItemAssignmentManager; }
public ProjectAppService( IRepository <Project, Guid> projectRepository, FileItemManager fileItemManager, ProjectManager projectManager, PlanManager planManager, WorkshopLayoutManager workshopLayoutManager) : base(projectRepository) { _fileItemManager = fileItemManager; _projectManager = projectManager; _planManager = planManager; _workshopLayoutManager = workshopLayoutManager; }
protected override void Process(DuplicateItemPipeline pipeline) { Debug.ArgumentNotNull(pipeline, nameof(pipeline)); if (pipeline.NewItemUri == ItemUri.Empty) { return; } var projectFileItem = ProjectManager.GetProjectFileItem(pipeline.ItemUri); if (projectFileItem == null) { return; } var project = projectFileItem.Project; var source = projectFileItem.AbsoluteFileName; var sourceFolder = Path.GetDirectoryName(source) ?? string.Empty; var extension = Path.GetExtension(source); var target = Path.Combine(sourceFolder, pipeline.NewName) + extension; if (!AppHost.Files.FileExists(target)) { AppHost.Files.Copy(source, target, false); } EnvDTE.ProjectItem newProjectItem; try { newProjectItem = SitecorePackage.Instance.Dte.ItemOperations.AddExistingItem(target); } catch (Exception ex) { AppHost.Output.LogException(ex); return; } var fileName = project.GetProjectItemFileName(newProjectItem); var projectItem = ProjectFileItem.Load(project, fileName); projectItem.Items.Add(pipeline.NewItemUri); project.Add(projectItem); project.Save(); var fileItemHandler = FileItemManager.GetFileItemHandler(source); if (fileItemHandler != null) { fileItemHandler.UpdateItemPath(pipeline.NewItemUri, projectItem.Path); } }
private static void ProjectItemMoved([NotNull] object sender, [NotNull] string newName, [NotNull] string oldName) { Debug.ArgumentNotNull(sender, nameof(sender)); Debug.ArgumentNotNull(newName, nameof(newName)); Debug.ArgumentNotNull(oldName, nameof(oldName)); ProjectFileItem projectFile = null; foreach (var project1 in Projects) { foreach (var projectItem in project1.ProjectItems) { var file = projectItem as ProjectFileItem; if (file == null) { continue; } if (string.Compare(file.AbsoluteFileName, oldName, StringComparison.InvariantCultureIgnoreCase) == 0) { projectFile = file; break; } } } if (projectFile == null) { return; } var project = projectFile.Project; var fileName = project.GetRelativeFileName(newName); projectFile.File = fileName; var fileItemHandler = FileItemManager.GetFileItemHandler(projectFile.Path); if (fileItemHandler != null) { foreach (var itemUri in projectFile.Items) { fileItemHandler.UpdateItemPath(itemUri, projectFile.Path); } } project.Save(); }
private bool ExpandTreeView() { var item = Items.FirstOrDefault(); if (item == null) { return(false); } var extension = Path.GetExtension(item.Name); if (string.IsNullOrEmpty(extension)) { return(false); } if (Items.Any(i => string.Compare(Path.GetExtension(i.Name), extension, StringComparison.InvariantCultureIgnoreCase) != 0)) { return(false); } var handler = FileItemManager.GetFileItemHandler(item.Name); if (handler == null) { return(false); } var rootItemId = handler.GetRootItemId(); if (rootItemId == ItemId.Empty) { return(false); } var itemUri = new ItemUri(new DatabaseUri(Site, DatabaseName.Master), rootItemId); var treeViewItem = TreeView.ExpandTo(itemUri); if (treeViewItem != null) { treeViewItem.IsExpanded = true; } return(true); }
private void CopyFile([NotNull] List <ProjectBase> projects, [NotNull] DragCopyPipeline.NewItem item) { Debug.ArgumentNotNull(projects, nameof(projects)); Debug.ArgumentNotNull(item, nameof(item)); var projectFileItem = ProjectManager.GetProjectFileItem(item.Item.ItemUri); if (projectFileItem == null) { return; } var project = projectFileItem.Project; var source = projectFileItem.AbsoluteFileName; var sourceFolder = Path.GetDirectoryName(source) ?? string.Empty; var extension = Path.GetExtension(source); var target = Path.Combine(sourceFolder, item.NewName) + extension; AppHost.Files.Copy(source, target, false); var newProjectItem = SitecorePackage.Instance.Dte.ItemOperations.AddExistingItem(target); var fileName = project.GetProjectItemFileName(newProjectItem); var projectItem = ProjectFileItem.Load(project, fileName); projectItem.Items.Add(item.NewItemUri); project.Add(projectItem); if (!projects.Contains(project)) { projects.Add(project); } var fileItemHandler = FileItemManager.GetFileItemHandler(source); if (fileItemHandler == null) { return; } fileItemHandler.UpdateItemPath(item.NewItemUri, projectItem.Path); }
/// <summary> /// Bim模型插入方法 /// </summary> /// <param name="file"></param> /// <param name="relationalId"></param> /// <param name="tenantId"></param> /// <returns></returns> public async Task <FileItem> InsertBimModel(IFormFile file, Guid?relationalId, int?tenantId) { // 创建获取到的zip文件 var zipFilePath = FileItemManager.GetFileFolder(_hostingEnvironment, FileItemCategory.BimModel) + "/" + Guid.NewGuid() + Path.GetExtension(file.FileName); using (var stream = new FileStream(zipFilePath, FileMode.Create)) { file.CopyTo(stream); } // 建立bimModel的文件夹,及插入数据库的信息 var bimModelName = Path.GetFileNameWithoutExtension(file.FileName) + DateTime.Now.ToString("yyMMddHHmmss"); // BIM地址在webRoot var bimModelPath = _hostingEnvironment.WebRootPath + BimModelsPath + bimModelName; if (!Directory.Exists(bimModelPath)) { Directory.CreateDirectory(bimModelPath); } var fileItem = new FileItem { TenantId = tenantId, FileName = bimModelName + "/3d.svf", // 使用相对地址 FilePath = "wwwroot" + BimModelsPath + bimModelName, FileSize = file.Length, FileType = ".svf", RelationalId = relationalId, Category = FileItemCategory.BimModel }; // BimModel需要解压 System.IO.Compression.ZipFile.ExtractToDirectory(zipFilePath, bimModelPath); // 删除压缩文件 if (File.Exists(zipFilePath)) { File.Delete(zipFilePath); } return(await _fileItemRepository.InsertAsync(fileItem)); }
private static void ProjectItemRenamed([NotNull] object sender, [NotNull] EnvDTE.ProjectItem projectitem, [NotNull] string oldname) { Debug.ArgumentNotNull(sender, nameof(sender)); Debug.ArgumentNotNull(projectitem, nameof(projectitem)); Debug.ArgumentNotNull(oldname, nameof(oldname)); var project = GetProject(projectitem); if (project == null) { return; } var newFile = project.GetProjectItemFileName(projectitem); var oldFile = Path.Combine(Path.GetDirectoryName(newFile) ?? string.Empty, oldname); var projectFile = project.GetProjectItem(oldFile) as ProjectFileItem; if (projectFile == null) { return; } projectFile.File = newFile; var fileItemHandler = FileItemManager.GetFileItemHandler(projectFile.Path); if (fileItemHandler != null) { foreach (var itemUri in projectFile.Items) { fileItemHandler.UpdateItemPath(itemUri, projectFile.Path); } } project.Save(); }
protected override void Process(NewItemWizardPipeline pipeline) { Debug.ArgumentNotNull(pipeline, nameof(pipeline)); var handler = FileItemManager.GetFileItemHandler(pipeline.Item.GetFileName()); if (handler == null) { return; } var project = ProjectManager.GetProject(pipeline.Item) ?? GetProject(pipeline); if (project == null) { return; } var site = project.Site; if (site == null) { return; } var path = string.Empty; if (pipeline.DatabaseName == null) { var d = new NewItemWizardDialog(); d.Initialize(site, handler.GetTemplateName()); if (AppHost.Shell.ShowDialog(d) != true) { return; } var itemUri = d.ItemUri; if (itemUri == null || itemUri == ItemUri.Empty) { return; } pipeline.DatabaseName = itemUri.DatabaseName; path = d.SelectedPath ?? string.Empty; if (!string.IsNullOrEmpty(path)) { path += "/" + Path.GetFileNameWithoutExtension(pipeline.Item.Name); } } var fileName = project.GetProjectItemFileName(pipeline.Item); var projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); var busy = true; handler.Handle(pipeline.DatabaseName, projectItem, path, (sender, args) => busy = false); AppHost.DoEvents(ref busy); pipeline.ProjectItem = projectItem; }