UserDialogService.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using Microsoft.Win32;
  2. using System.IO;
  3. using System.Windows;
  4. namespace AGEHAB.RelatorioSeadIpasgo.Presentation.Services;
  5. public class UserDialogService : IUserDialogService
  6. {
  7. public string? EscolherArquivoParaSalvar(string titulo, string filtro, string extensaoPadrao, string caminhoAtual)
  8. {
  9. var dialog = new SaveFileDialog
  10. {
  11. Title = titulo,
  12. Filter = filtro,
  13. DefaultExt = extensaoPadrao,
  14. AddExtension = true,
  15. OverwritePrompt = false,
  16. FileName = Path.GetFileName(caminhoAtual),
  17. InitialDirectory = ObterDiretorioInicial(caminhoAtual)
  18. };
  19. return dialog.ShowDialog(ObterJanelaPrincipal()) == true ? dialog.FileName : null;
  20. }
  21. public string? EscolherPasta(string titulo, string pastaAtual)
  22. {
  23. var dialog = new OpenFolderDialog
  24. {
  25. Title = titulo,
  26. InitialDirectory = Directory.Exists(pastaAtual)
  27. ? pastaAtual
  28. : Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
  29. };
  30. return dialog.ShowDialog(ObterJanelaPrincipal()) == true ? dialog.FolderName : null;
  31. }
  32. public bool ConfirmarSubstituicao(string caminhoArquivo)
  33. {
  34. var resultado = MessageBox.Show(
  35. ObterJanelaPrincipal(),
  36. $"O arquivo já existe:\n\n{caminhoArquivo}\n\nDeseja substituir?",
  37. "Substituir arquivo",
  38. MessageBoxButton.YesNo,
  39. MessageBoxImage.Question);
  40. return resultado == MessageBoxResult.Yes;
  41. }
  42. public void Informar(string mensagem, string titulo)
  43. {
  44. MessageBox.Show(ObterJanelaPrincipal(), mensagem, titulo, MessageBoxButton.OK, MessageBoxImage.Information);
  45. }
  46. public void Alertar(string mensagem, string titulo)
  47. {
  48. MessageBox.Show(ObterJanelaPrincipal(), mensagem, titulo, MessageBoxButton.OK, MessageBoxImage.Warning);
  49. }
  50. public void ExibirErro(string mensagem)
  51. {
  52. MessageBox.Show(ObterJanelaPrincipal(), mensagem, "Erro", MessageBoxButton.OK, MessageBoxImage.Error);
  53. }
  54. private static Window ObterJanelaPrincipal()
  55. {
  56. return System.Windows.Application.Current.MainWindow;
  57. }
  58. private static string ObterDiretorioInicial(string caminhoAtual)
  59. {
  60. var diretorio = Path.GetDirectoryName(caminhoAtual);
  61. if (!string.IsNullOrWhiteSpace(diretorio) && Directory.Exists(diretorio))
  62. {
  63. return diretorio;
  64. }
  65. return Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
  66. }
  67. }