Esempio n. 1
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public FileItemController(
     FileItemManager fileItemManager,
     PlanManager planManager, ProjectManager projectManager, TaskItemAssignmentManager taskItemAssignmentManager)
 {
     _fileItemManager           = fileItemManager;
     _planManager               = planManager;
     _projectManager            = projectManager;
     _taskItemAssignmentManager = taskItemAssignmentManager;
 }
Esempio n. 5
0
 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);
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        /// <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));
        }
Esempio n. 11
0
        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;
        }