예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #3
0
        public ProjectVersionModel GetProjectVersion(int id)
        {
            ProjectVersionModel versionModel   = null;
            ProjectVersion      projectVersion = projectRepository.GetVersion(id);

            if (projectVersion != null)
            {
                versionModel = ApplicationMapper.MapProjectVersion(projectVersion);
            }
            return(versionModel);
        }
예제 #4
0
        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);
        }