using Microsoft.Win32; using System.IO; using System.Windows; namespace AGEHAB.RelatorioSeadIpasgo.Presentation.Services; public class UserDialogService : IUserDialogService { public string? EscolherArquivoParaSalvar(string titulo, string filtro, string extensaoPadrao, string caminhoAtual) { var dialog = new SaveFileDialog { Title = titulo, Filter = filtro, DefaultExt = extensaoPadrao, AddExtension = true, OverwritePrompt = false, FileName = Path.GetFileName(caminhoAtual), InitialDirectory = ObterDiretorioInicial(caminhoAtual) }; return dialog.ShowDialog(ObterJanelaPrincipal()) == true ? dialog.FileName : null; } public string? EscolherPasta(string titulo, string pastaAtual) { var dialog = new OpenFolderDialog { Title = titulo, InitialDirectory = Directory.Exists(pastaAtual) ? pastaAtual : Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) }; return dialog.ShowDialog(ObterJanelaPrincipal()) == true ? dialog.FolderName : null; } public bool ConfirmarSubstituicao(string caminhoArquivo) { var resultado = MessageBox.Show( ObterJanelaPrincipal(), $"O arquivo já existe:\n\n{caminhoArquivo}\n\nDeseja substituir?", "Substituir arquivo", MessageBoxButton.YesNo, MessageBoxImage.Question); return resultado == MessageBoxResult.Yes; } public void Informar(string mensagem, string titulo) { MessageBox.Show(ObterJanelaPrincipal(), mensagem, titulo, MessageBoxButton.OK, MessageBoxImage.Information); } public void Alertar(string mensagem, string titulo) { MessageBox.Show(ObterJanelaPrincipal(), mensagem, titulo, MessageBoxButton.OK, MessageBoxImage.Warning); } public void ExibirErro(string mensagem) { MessageBox.Show(ObterJanelaPrincipal(), mensagem, "Erro", MessageBoxButton.OK, MessageBoxImage.Error); } private static Window ObterJanelaPrincipal() { return System.Windows.Application.Current.MainWindow; } private static string ObterDiretorioInicial(string caminhoAtual) { var diretorio = Path.GetDirectoryName(caminhoAtual); if (!string.IsNullOrWhiteSpace(diretorio) && Directory.Exists(diretorio)) { return diretorio; } return Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); } }