public void SaveSolution(bool showWarning = true, Solution.eSolutionItemToSave solutionItemToSave = Solution.eSolutionItemToSave.GeneralDetails) { bool doSave = false; if (!showWarning) { doSave = true; } else { Solution lastSavedSolution = LoadSolution(Solution.FilePath, false); string extraChangedItems = ""; StringBuilder bldExtraChangedItems = new StringBuilder(); if (solutionItemToSave != Solution.eSolutionItemToSave.GeneralDetails) { if (Solution.Name != lastSavedSolution.Name || Solution.Account != lastSavedSolution.Account) { bldExtraChangedItems.Append("Solution General Details, "); } } if (solutionItemToSave != Solution.eSolutionItemToSave.ALMSettings) { if (!Solution.ALMConfigs.Equals(lastSavedSolution.ALMConfigs)) { bldExtraChangedItems.Append("ALM Details, "); } } if (solutionItemToSave != Solution.eSolutionItemToSave.SourceControlSettings) { if (Solution.SourceControl != lastSavedSolution.SourceControl) { bldExtraChangedItems.Append("Source Control Details, "); } } if (solutionItemToSave != Solution.eSolutionItemToSave.LoggerConfiguration) { if (Solution.LoggerConfigurations != null) { if (Solution.LoggerConfigurations.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.Modified || Solution.LoggerConfigurations.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.NoTracked) { bldExtraChangedItems.Append("Execution Logger configuration, "); } } } if (solutionItemToSave != Solution.eSolutionItemToSave.ReportConfiguration) { if (Solution.HTMLReportsConfigurationSetList != null && lastSavedSolution.HTMLReportsConfigurationSetList.Count != 0) { foreach (HTMLReportsConfiguration config in Solution.HTMLReportsConfigurationSetList) { if (config.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.Modified || config.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.NoTracked) { bldExtraChangedItems.Append("Report configuration"); break; } } } } if (solutionItemToSave != Solution.eSolutionItemToSave.GlobalVariabels) { if (Solution.Variables.Count != lastSavedSolution.Variables.Count) { bldExtraChangedItems.Append(GingerDicser.GetTermResValue(eTermResKey.Variables, "Global ", ", ")); } else { foreach (VariableBase var in Solution.Variables) { if (var.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.Modified || var.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.NoTracked) { bldExtraChangedItems.Append(GingerDicser.GetTermResValue(eTermResKey.Variables, "Global ", ", ")); break; } } } } if (solutionItemToSave != Solution.eSolutionItemToSave.TargetApplications) { if (Solution.ApplicationPlatforms.Count != lastSavedSolution.ApplicationPlatforms.Count) { bldExtraChangedItems.Append("Target Applications, "); } else { foreach (ApplicationPlatform app in Solution.ApplicationPlatforms) { if (app.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.Modified || app.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.NoTracked) { bldExtraChangedItems.Append("Target Applications, "); break; } } } } if (solutionItemToSave != Solution.eSolutionItemToSave.Tags) { if (Solution.Tags.Count != lastSavedSolution.Tags.Count) { bldExtraChangedItems.Append("Tags, "); } else { foreach (RepositoryItemTag tag in Solution.Tags) { if (tag.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.Modified || tag.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.NoTracked) { bldExtraChangedItems.Append("Tags, "); break; } } } } extraChangedItems = bldExtraChangedItems.ToString(); if (string.IsNullOrEmpty(extraChangedItems)) { doSave = true; } else { extraChangedItems = extraChangedItems.TrimEnd(); extraChangedItems = extraChangedItems.TrimEnd(new char[] { ',' }); if (Reporter.ToUser(eUserMsgKey.SolutionSaveWarning, extraChangedItems) == eUserMsgSelection.Yes) { doSave = true; } } } if (doSave) { Reporter.ToStatus(eStatusMsgKey.SaveItem, null, "Solution Configurations", "item"); Solution.RepositorySerializer.SaveToFile(Solution, Solution.FilePath); Solution.SetDirtyStatusToNoChange(); Reporter.HideStatusMessage(); } }