public int CreateVersion(ProjectVersionModel projectVersion) { var version = new ProjectVersion(); if (projectVersion != null) { version = ApplicationMapper.MapProjectVersion(projectVersion); } var project = new Project(); if (projectVersion != null) { project = projectRepository.GetProject(projectVersion.ProjectId); } ISerializer xmlSerializer = new SerializeXml(); xmlSerializer.Serialize(project); version.ProjectData = xmlSerializer.Serialize(project); int versionId = projectRepository.CreateVersion(version); //generate PDF PdfGenerator.GeneratePdf(project, projectVersion.PublishedByName, versionId, false, projectRepository.GetRoles()); return(versionId); }
public static ProjectVersionModel MapProjectVersion(ProjectVersion version) { var uiModel = new ProjectVersionModel(); uiModel.ProjectId = version.ProjectId; uiModel.Id = version.Id; uiModel.Comment = version.Comment; uiModel.PublishedDate = version.PublishedDate.GetMyLocalTime(); uiModel.PublishedBy = version.PublishedBy; uiModel.PublishedByName = version.PublishedByName; uiModel.Phase = EnumHelper.GetEnumDescription((Phase)version.PhaseId); ISerializer xmlSerializer = new SerializeXml(); Project project = xmlSerializer.Deserialize <Project>(version.ProjectData); ProjectModel projectcontent = null; //Mapp to UI model if (project != null) { projectcontent = ApplicationMapper.MapProjectContent(project); } uiModel.Data = projectcontent; uiModel.PublishedByName = version.PublishedByName; return(ObjectTextTrim.TrimStringProperties(uiModel)); }
public ProjectVersionModel GetProjectVersion(int id) { ProjectVersionModel versionModel = null; ProjectVersion projectVersion = projectRepository.GetVersion(id); if (projectVersion != null) { versionModel = ApplicationMapper.MapProjectVersion(projectVersion); } return(versionModel); }
public static Core.Model.ProjectVersion MapProjectVersion(ProjectVersionModel projectVersionModel) { ProjectVersion projectVersion = new Core.Model.ProjectVersion(); projectVersion.Comment = projectVersionModel.Comment; projectVersion.PublishedBy = projectVersionModel.PublishedBy.Value; projectVersion.PublishedDate = projectVersionModel.PublishedDate.Value.GetMyUtcTime(); projectVersion.ProjectId = projectVersionModel.ProjectId; projectVersion.PhaseId = projectVersionModel.PhaseId; return(projectVersion); }
/// <summary> /// 装载新版本工程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BTAddNew_Click(object sender, EventArgs e) { if (!string.IsNullOrWhiteSpace(Project.Folder) && !string.IsNullOrWhiteSpace(Project.JarFile)) { //查询New仓库中,该工程的新版本 string newPath = JarFileTool.GetNewPath(Project); if (Directory.Exists(newPath) && File.Exists(DirTool.Combine(newPath, Project.JarFile))) { try { ToastForm.Display("装载中", $"正在装载 {Project.Name} 的新版本...", 'i', 5000); //移动文件到发布仓库中 string aimPath = DirTool.Combine(R.Paths.PublishStorage, Project.Folder); //组合目标路径 DirTool.Create(aimPath); //创建目标路径 if (Directory.Exists(DirTool.Combine(aimPath, (Project.LastVersion + 1).ToString()))) //如果存在目标文件夹 { Directory.Delete(DirTool.Combine(aimPath, (Project.LastVersion + 1).ToString()), true); //删除目标文件夹(防止重复) } Directory.Move(newPath, DirTool.Combine(aimPath, (Project.LastVersion + 1).ToString())); //开始移动 //添加新版本信息 Project.LastVersion++; Project.CurrentVersion = Project.LastVersion; ProjectVersionModel version = new ProjectVersionModel() { CreateTime = DateTime.Now, Number = Project.LastVersion, }; if (Project.Versions == null) { Project.Versions = new List <ProjectVersionModel>(); } Project.Versions.Add(version); ToastForm.Display("装载成功", $"成功装载 {Project.Name} 的新版本", 'i', 5000); } catch { ToastForm.Display("装载失败", $"装载 {Project.Name} 的新版本失败", 'e', 5000); } } else { //没有发现新版本,不做处理 ToastForm.Display("装载失败", $"没有发现 {Project.Name} 的新版本", 'w', 5000); } } else { //没有工程配置信息,不做处理 ToastForm.Display("装载失败", $"没有发现工程的配置信息", 'e', 5000); } //清除多余版本 if (Project.VersionCache > 0 && !string.IsNullOrWhiteSpace(Project.Folder) && ListTool.HasElements(Project.Versions)) { if (Project.Versions.Count > Project.VersionCache) { List <ProjectVersionModel> _tempVers = Project.Versions.OrderByDescending(x => x.CreateTime).ToList(); List <ProjectVersionModel> _newVers = new List <ProjectVersionModel>(); for (int i = 0; i < Project.VersionCache; i++) { _newVers.Add(_tempVers[i]); } for (int i = Project.VersionCache; i < Project.Versions.Count; i++) { string path = DirTool.Combine(R.Paths.PublishStorage, Project.Folder, (_tempVers[i].Number).ToString()); try { //如果文件夹存在,则删除文件夹及内容 if (Directory.Exists(path)) { Directory.Delete(path, true); } } catch { //如果删除失败,则继续保留该版本,等待下次继续删除 _newVers.Add(_tempVers[i]); } } Project.Versions = _newVers; } } //重置项目信息 SetProject(Project); }