public async Task <ActionResult> Clone_Post(CloneModel model) { if (!model.SourceProjectGuid.HasValue) { return(Redirect("/Home")); } if (!string.IsNullOrWhiteSpace(model.TargetFolderPath)) { foreach (var id in GetFormDefinitionIdList(Request.Form, "definitionName")) { await ReleaseDefinitionsService.CloneDefinition(model.SourceProjectGuid.GetValueOrDefault(), id, model.TargetProjectGuid.GetValueOrDefault(), model.TargetFolderPath, Request.Form[$"definitionName_{id}"]); } var projectName = await ProjectService.GetProjectNameAsync(model.TargetProjectGuid.GetValueOrDefault()); return(Redirect($"/ReleaseDefinitions?ProjectGuid={model.TargetProjectGuid}&ProjectName={projectName}")); } model.Definitions = (await ReleaseDefinitionsService.GetDefinitionsAsync(model.ProjectGuid.GetValueOrDefault())) .Where(g => model.DefinitionIds.Contains(g.Id)); model.Projects = await GetProjectsSelectListItems(Guid.Empty); if (model.TargetProjectGuid.HasValue) { model.Folders = await GetFoldersSelectListItems(model.TargetProjectGuid.GetValueOrDefault()); } return(View(model)); }
public async Task <ActionResult> Export(ExportModel model) { model.ProjectName = (await ProjectService.GetProjectAsync(model.ProjectGuid.GetValueOrDefault())).Name; var directory1 = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(directory1); foreach (var definitionId in model.DefinitionIds) { var definition = await ReleaseDefinitionsService.GetDefinitionJsonAsync(model.ProjectGuid.GetValueOrDefault(), definitionId); var token = JToken.Parse(definition); var file = $"{FileUtility.RemoveInvalidFileCharacters(token["name"].ToString())}.json"; System.IO.File.WriteAllText(Path.Combine(directory1, file), FormatJson(definition)); } var friendlyFileName = $"{model.ProjectName.Replace(" ", "-")}_ReleaseDefinitions_{DateTime.Now:yyyy-MM-dd_HH-mm}.zip"; var archive = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); System.IO.Compression.ZipFile.CreateFromDirectory(directory1, archive); Directory.Delete(directory1, true); return(File(System.IO.File.OpenRead(archive), "application/zip", friendlyFileName)); }
public async Task <ActionResult> Index(ReleaseDefinitionsModel model) { if (!model.ProjectGuid.HasValue) { return(Redirect("/Home")); } model.Definitions = await ReleaseDefinitionsService.GetDefinitionsAsync(model.ProjectGuid.GetValueOrDefault()); return(View(model)); }
public async Task <ActionResult> Rename(RenameModel model) { if (!model.ProjectGuid.HasValue) { return(Redirect("/Home")); } model.Definitions = (await ReleaseDefinitionsService.GetDefinitionsAsync(model.ProjectGuid.GetValueOrDefault())) .Where(g => model.DefinitionIds.Contains(g.Id)); return(View(model)); }
public async Task <ActionResult> Rename_Post(RenameModel model) { if (!model.ProjectGuid.HasValue) { return(Redirect("/Home")); } foreach (var id in GetFormDefinitionIdList(Request.Form, "definitionName")) { await ReleaseDefinitionsService.RenameDefinition(model.ProjectGuid.GetValueOrDefault(), id, Request.Form[$"definitionName_{id}"]); } var projectName = await ProjectService.GetProjectNameAsync(model.ProjectGuid.GetValueOrDefault()); return(Redirect($"/ReleaseDefinitions?ProjectGuid={model.ProjectGuid}&ProjectName={projectName}")); }
public async Task <ActionResult> Clone(CloneModel model) { if (!model.ProjectGuid.HasValue) { return(Redirect("/Home")); } model.Definitions = (await ReleaseDefinitionsService.GetDefinitionsAsync(model.ProjectGuid.GetValueOrDefault())) .Where(g => model.DefinitionIds.Contains(g.Id)); model.Projects = await GetProjectsSelectListItems(Guid.Empty); model.Folders = new List <SelectListItem> { new SelectListItem { Value = "", Text = "(select)" } }; return(View(model)); }
public async Task <List <SelectListItem> > GetFoldersSelectListItems(Guid projectGuid) { return(await ReleaseDefinitionsService.GetFoldersSelectListItemsAsync(projectGuid, string.Empty)); }