using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Reflection; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using Agger.Registro; using Gestor.Application.Helpers; using Gestor.Application.Servicos.Ferramentas; using Gestor.Application.Servicos.Generic; using Gestor.Application.ViewModels.Command; using Gestor.Application.ViewModels.Generic; using Gestor.Common.Security; using Gestor.Common.Validation; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace Gestor.Application.ViewModels; internal class LoginViewModel : BaseSegurosViewModel { private class AggerAccess { public long Id { get; set; } public Client Usuario { get; set; } public string Ip { get; set; } public string Acao { get; set; } public string Serial { get; set; } public DateTime? Data { get; set; } public string Log { get; set; } } private class Client { public long Id { get; set; } public string Name { get; set; } public string Login { get; set; } public string Password { get; set; } public string Email { get; set; } public bool Deleted { get; set; } public bool AttendancePrivate { get; set; } public DateTime? DateLoginStart { get; set; } public DateTime? DateLoginFinal { get; set; } public DateTime? ExpirationPassDate { get; set; } } private bool _enableRegistro; private bool _enableTrocaSenha; private bool _aggerUser; private string _imagemLink = "https://calendly.com/treinamentocs"; private string _imagem = "https://docs.agger.com.br/treinamentoprimeirasemana.png"; private string _head; private string _login; private string _novaNovaSenha; private string _senha; private string _confirmacaoSenha; private Usuario _usuario; private string userJson = AppDomain.CurrentDomain.BaseDirectory + "user.json"; private LoginImageModel _selectedImage; private int _selectedIndex; private string _version; private string _labelVersion = ""; private bool _loadingVisibility; private bool _fieldsVisibility; private string _errorLogin = "DADOS DE ACESSO INVÁLIDOS"; private Visibility _errorLoginVisibility = (Visibility)1; private Visibility _acessoVisibility = (Visibility)2; private Visibility _trocaSenhaVisibility = (Visibility)2; private Visibility _loginVisibility; private Visibility _registrarVisibility = (Visibility)2; private Visibility _visibilityCancelarRegitro = (Visibility)2; private string _chave; private string _mensagem; private string _centralAtendimento = Address.CentralAtendimento.ToString(); public static string VersaoAtual { get; set; } public bool EnableRegistro { get { return _enableRegistro; } set { _enableRegistro = value; OnPropertyChanged("EnableRegistro"); } } public bool EnableTrocaSenha { get { return _enableTrocaSenha; } set { _enableTrocaSenha = value; OnPropertyChanged("EnableTrocaSenha"); } } public bool AggerUser { get { return _aggerUser; } set { _aggerUser = value; OnPropertyChanged("AggerUser"); } } public string ImagemLink { get { return _imagemLink; } set { _imagemLink = value; OnPropertyChanged("ImagemLink"); } } public string Imagem { get { return _imagem; } set { _imagem = value; OnPropertyChanged("Imagem"); } } public string Head { get { return _head; } set { _head = value?.ToUpper(); OnPropertyChanged("Head"); } } public string Login { get { return _login; } set { _login = value; string login = Login; AggerUser = (login != null && login.ToUpper().StartsWith("AGGER@")) || (Senha?.ToUpper().StartsWith("AGGER@") ?? false); OnPropertyChanged("Login"); } } public string NovaSenha { get { return _novaNovaSenha; } set { _novaNovaSenha = value; EnableTrocaSenha = ValidationHelper.IsNotNullOrEmpty(NovaSenha) && ValidationHelper.IsNotNullOrEmpty(ConfirmacaoSenha) && NovaSenha.Equals(ConfirmacaoSenha); OnPropertyChanged("NovaSenha"); } } public string Senha { get { return _senha; } set { _senha = value; string login = Login; AggerUser = (login != null && login.ToUpper().StartsWith("AGGER@")) || (Senha?.ToUpper().StartsWith("AGGER@") ?? false); OnPropertyChanged("Senha"); } } public string ConfirmacaoSenha { get { return _confirmacaoSenha; } set { _confirmacaoSenha = value; EnableTrocaSenha = ValidationHelper.IsNotNullOrEmpty(NovaSenha) && ValidationHelper.IsNotNullOrEmpty(ConfirmacaoSenha) && NovaSenha.Equals(ConfirmacaoSenha); OnPropertyChanged("ConfirmacaoSenha"); } } public Usuario Usuario { get { return _usuario; } set { _usuario = value; OnPropertyChanged("Usuario"); } } public ObservableCollection LoginImages { get; set; } = new ObservableCollection(); public LoginImageModel SelectedImage { get { return _selectedImage; } set { _selectedImage = value; OnPropertyChanged("SelectedImage"); } } public int SelectedIndex { get { return _selectedIndex; } set { _selectedIndex = value; SelectedImage = LoginImages.ElementAtOrDefault(value); OnPropertyChanged("SelectedIndex"); } } public ICommand ImageClickCommand => new RelayCommand(delegate { LoginImageModel selectedImage = SelectedImage; if (selectedImage != null && ValidationHelper.IsNotNullOrEmpty(selectedImage.UrlFixa)) { Process.Start(new ProcessStartInfo { FileName = SelectedImage.UrlFixa, UseShellExecute = true }); } }); public string Version { get { return _version; } set { _version = value; OnPropertyChanged("Version"); } } public string LabelVersion { get { return _labelVersion; } set { _labelVersion = value; OnPropertyChanged("LabelVersion"); } } public bool LoadingVisibility { get { return _loadingVisibility; } set { _loadingVisibility = value; OnPropertyChanged("LoadingVisibility"); } } public bool FieldsVisibility { get { return _fieldsVisibility; } set { _fieldsVisibility = value; OnPropertyChanged("FieldsVisibility"); } } public string ErrorLogin { get { return _errorLogin; } set { _errorLogin = value; OnPropertyChanged("ErrorLogin"); } } public Visibility ErrorLoginVisibility { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _errorLoginVisibility; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _errorLoginVisibility = value; OnPropertyChanged("ErrorLoginVisibility"); } } public Visibility AcessoVisibility { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _acessoVisibility; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _acessoVisibility = value; OnPropertyChanged("AcessoVisibility"); } } public Visibility TrocaSenhaVisibility { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _trocaSenhaVisibility; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _trocaSenhaVisibility = value; OnPropertyChanged("TrocaSenhaVisibility"); } } public Visibility LoginVisibility { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _loginVisibility; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _loginVisibility = value; OnPropertyChanged("LoginVisibility"); } } public Visibility RegistrarVisibility { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _registrarVisibility; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _registrarVisibility = value; OnPropertyChanged("RegistrarVisibility"); } } public Visibility VisibilityCancelarRegitro { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _visibilityCancelarRegitro; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _visibilityCancelarRegitro = value; OnPropertyChanged("VisibilityCancelarRegitro"); } } public string Chave { get { return _chave; } set { _chave = value; EnableRegistro = ValidationHelper.IsNotNullOrEmpty(Chave); OnPropertyChanged("Chave"); } } public string Mensagem { get { return _mensagem; } set { _mensagem = value; OnPropertyChanged("Mensagem"); } } public string CentralAtendimento { get { return _centralAtendimento; } set { _centralAtendimento = value; OnPropertyChanged("CentralAtendimento"); } } public LoginViewModel() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) base.EnableButtons = true; ApplicationHelper.Versao = Assembly.GetExecutingAssembly().GetName().Version; Version = ApplicationHelper.Versao.ToString(); LabelVersion = "Gestor " + Version; VersaoAtual = LabelVersion; if (File.Exists(userJson)) { Usuario val = JsonConvert.DeserializeObject(File.ReadAllText(userJson)); Login = ((val != null) ? val.Login : null); } } public async Task Load() { return await Task.Run(async delegate { try { return await new BaseServico().LoadInicialParameters(); } catch (Exception) { return false; } }); } public async Task Validate(string login, string password) { ErrorLoginVisibility = (Visibility)1; if (login.Contains("AGGER@")) { string[] array = login.Split(new char[1] { '@' }); AggerAccess keyValues = new AggerAccess { Usuario = new Client { Login = array[1], Password = new Token().AggerEncrypt(password) }, Acao = "AggerAccessNovoGestor", Log = "ANG - " + ApplicationHelper.NumeroSerial, Serial = ApplicationHelper.NumeroSerial }; AggerAccess aggerAccess = await Connection.Post("Access/AggerLogin", keyValues); if (aggerAccess == null || !(aggerAccess.Usuario?.Id > 0)) { ErrorLoginVisibility = (Visibility)0; return false; } Recursos.Usuario = new Usuario { Nome = "ACESSO AGGER - USUÁRIO " + aggerAccess.Usuario.Name, Login = aggerAccess.Usuario.Login, IdEmpresa = 1L, PermissaoAggilizador = 1L }; Recursos.Empresa = new BaseServico().BuscarEmpresa(Recursos.Usuario.IdEmpresa); return true; } Usuario usuario = await new BaseServico().BuscarUsuario(login, password); string text = ((usuario != null) ? (await VerificarAcesso(((DomainBase)usuario).Id)) : "DADOS DE ACESSO INVÁLIDOS"); string text2 = text; if (text2 != null) { ErrorLogin = text2; ErrorLoginVisibility = (Visibility)0; return false; } Recursos.Usuario = usuario; Recursos.Empresa = new BaseServico().BuscarEmpresa(Recursos.Usuario.IdEmpresa); Recursos.Usuario.Senha = string.Empty; File.WriteAllText(userJson, JsonConvert.SerializeObject((object)usuario)); return true; } public void AcessoNegado(string message) { Mensagem = message; RegistrarVisibility = (Visibility)2; LoginVisibility = (Visibility)2; AcessoVisibility = (Visibility)0; } public void AbrirRegistro() { LoginVisibility = (Visibility)2; AcessoVisibility = (Visibility)2; RegistrarVisibility = (Visibility)0; VisibilityCancelarRegitro = (Visibility)((ApplicationHelper.IdFornecedor == 0L) ? 2 : 0); Chave = string.Empty; } public void FecharRegistro() { RegistrarVisibility = (Visibility)2; LoginVisibility = (Visibility)0; Chave = string.Empty; } public async Task AbrirTrocaSenha() { UsuarioServico usuarioServico = new UsuarioServico(); bool flag = ValidationHelper.IsNullOrEmpty(Senha) || ValidationHelper.IsNullOrEmpty(Login); if (!flag) { bool flag2 = ValidationHelper.IsNotNullOrEmpty(Login); if (flag2) { Usuario val2 = (Usuario = await usuarioServico.BuscarLogin(Login)); flag2 = val2 == null; } flag = flag2; } if (flag) { await ShowMessage("NECESSÁRIO INSERIR UM USUÁRIO E SENHA VÁLIDOS PARA REALIZAR A TROCA DE SENHA."); return; } TrocaSenhaVisibility = (Visibility)0; LoginVisibility = (Visibility)2; } public async Task TrocaSenha() { if (string.IsNullOrEmpty(Senha)) { await ShowMessage("NECESSÁRIO PREENCHER A SENHA ANTERIOR PARA REALIZAR A TROCA DE SENHA."); return false; } if (string.IsNullOrEmpty(NovaSenha)) { await ShowMessage("NECESSÁRIO PREENCHER A NOVA SENHA PARA REALIZAR A TROCA DE SENHA."); return false; } Token token = new Token(); if (Senha == NovaSenha) { await ShowMessage("A NOVA SENHA NÃO PODE SER IGUAL A SENHA ANTERIOR."); return false; } if (NovaSenha != ConfirmacaoSenha) { await ShowMessage("A SENHA E A CONFIRMAÇÃO DA SENHA DEVEM SER IGUAIS."); return false; } if (Senha.ToUpper().Contains("AGGER@")) { string[] array = Senha.Split(new char[1] { '@' }); if (array.Length < 3) { await ShowMessage("SENHA ANTERIOR INVÁLIDA."); return false; } AggerAccess keyValues = new AggerAccess { Usuario = new Client { Login = array[1].ToUpper(), Password = new Token().AggerEncrypt(array[2]) }, Acao = $"TrocaSenha - {((DomainBase)Usuario).Id}|{Usuario.Login}", Log = "ANG - " + ApplicationHelper.NumeroSerial, Serial = ApplicationHelper.NumeroSerial }; AggerAccess acesso; try { acesso = await Connection.Post("Access/AggerLogin", keyValues); } catch (Exception ex) { _ = ex; await ShowMessage("SENHA ANTERIOR INVÁLIDA."); return false; } if (acesso == null || !(acesso.Usuario?.Id > 0)) { await ShowMessage("SENHA ANTERIOR INVÁLIDA."); return false; } } else if (ValidationHelper.IsNotNullOrEmpty(Usuario.Senha) && Senha != token.AggerDecrypt(Usuario.Senha)) { await ShowMessage("SENHA ANTERIOR INVÁLIDA."); return false; } UsuarioServico servico = new UsuarioServico(); Usuario.SenhaAnterior = token.AggerEncrypt(Senha); Usuario.Senha = token.AggerEncrypt(NovaSenha); await servico.Save(Usuario); if (servico.Sucesso) { Senha = NovaSenha; return true; } Usuario.SenhaAnterior = string.Empty; Usuario.Senha = string.Empty; await ShowMessage("VERIFIQUE OS DADOS DIGITADOS E TENTE NOVAMENTE."); return false; } public async Task GetImagesFromJson() { _ = 1; try { HttpClient client = new HttpClient(); try { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; client.Timeout = TimeSpan.FromSeconds(30.0); HttpResponseMessage val; try { val = await client.GetAsync(Address.LoginJson); val.EnsureSuccessStatusCode(); } catch { return; } if (val.IsSuccessStatusCode) { JObject obj2 = JObject.Parse(await val.Content.ReadAsStringAsync()); JToken obj3 = obj2["Imagem"]; string text = ((obj3 != null) ? Extensions.Value((IEnumerable)obj3) : null); JToken obj4 = obj2["Url"]; string text2 = ((obj4 != null) ? Extensions.Value((IEnumerable)obj4) : null); if (ValidationHelper.IsNotNullOrEmpty(text) && ValidationHelper.IsNotNullOrEmpty(text2)) { Imagem = text; ImagemLink = text2; } } } finally { ((IDisposable)client)?.Dispose(); } } catch { } } public async Task GetCfgJson() { _ = 2; try { HttpClient client = new HttpClient(); try { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; client.Timeout = TimeSpan.FromSeconds(30.0); HttpResponseMessage result; try { result = await client.GetAsync(Address.JsonGestor); result.EnsureSuccessStatusCode(); } catch { result = await client.GetAsync(Address.JsonGestorAzure); } if (result.IsSuccessStatusCode) { JObject obj2 = JObject.Parse(await result.Content.ReadAsStringAsync()); JToken obj3 = obj2["ApiGestor"]; string text = ((obj3 != null) ? Extensions.Value((IEnumerable)obj3) : null); JToken obj4 = obj2["ApiGestorBeta"]; string text2 = ((obj4 != null) ? Extensions.Value((IEnumerable)obj4) : null); JToken obj5 = obj2["ApiAssinador"]; string text3 = ((obj5 != null) ? Extensions.Value((IEnumerable)obj5) : null); JToken obj6 = obj2["ApiAssinadorBeta"]; string text4 = ((obj6 != null) ? Extensions.Value((IEnumerable)obj6) : null); JToken obj7 = obj2["ApiCard"]; string text5 = ((obj7 != null) ? Extensions.Value((IEnumerable)obj7) : null); JToken obj8 = obj2["ApiAssistencia"]; string text6 = ((obj8 != null) ? Extensions.Value((IEnumerable)obj8) : null); JToken obj9 = obj2["ApiAD"]; string text7 = ((obj9 != null) ? Extensions.Value((IEnumerable)obj9) : null); JToken obj10 = obj2["ApiAttachment"]; string text8 = ((obj10 != null) ? Extensions.Value((IEnumerable)obj10) : null); JToken obj11 = obj2["ApiFipe"]; string text9 = ((obj11 != null) ? Extensions.Value((IEnumerable)obj11) : null); JToken obj12 = obj2["ApiSso"]; string text10 = ((obj12 != null) ? Extensions.Value((IEnumerable)obj12) : null); JToken obj13 = obj2["ApiCep"]; string text11 = ((obj13 != null) ? Extensions.Value((IEnumerable)obj13) : null); JToken obj14 = obj2["ApiMonitor"]; string text12 = ((obj14 != null) ? Extensions.Value((IEnumerable)obj14) : null); JToken obj15 = obj2["LoginJson"]; string text13 = ((obj15 != null) ? Extensions.Value((IEnumerable)obj15) : null); JToken obj16 = obj2["PromoJson"]; string text14 = ((obj16 != null) ? Extensions.Value((IEnumerable)obj16) : null); JToken obj17 = obj2["BetaPromoJson"]; string text15 = ((obj17 != null) ? Extensions.Value((IEnumerable)obj17) : null); JToken obj18 = obj2["SurveyJson"]; string text16 = ((obj18 != null) ? Extensions.Value((IEnumerable)obj18) : null); JToken obj19 = obj2["CentralAtendimento"]; string text17 = ((obj19 != null) ? Extensions.Value((IEnumerable)obj19) : null); JToken obj20 = obj2["UsarApis"]; if (obj20 != null) { Extensions.Value((IEnumerable)obj20); } Address.ApiGestorOficial = text?.ToUri() ?? Address.ApiGestorOficial; Address.ApiGestorBeta = text2?.ToUri() ?? Address.ApiGestorBeta; Address.AssinadorApiOficial = text3?.ToUri() ?? Address.AssinadorApiOficial; Address.AssinadorApiBeta = text4?.ToUri() ?? Address.AssinadorApiBeta; Address.Card = text5?.ToUri() ?? Address.Card; Address.Assistance = text6?.ToUri() ?? Address.Assistance; Address.ApiAD = text7?.ToUri() ?? Address.ApiAD; Address.ApiArquivo = text8?.ToUri() ?? Address.ApiArquivo; Address.ApiFipe = text9?.ToUri() ?? Address.ApiFipe; Address.ApiSso = text10?.ToUri() ?? Address.ApiSso; Address.ApiMonitor = text12?.ToUri() ?? Address.ApiMonitor; Address.ApiCep = text11?.ToUri() ?? Address.ApiCep; Address.LoginJson = text13?.ToUri() ?? Address.LoginJson; Address.SurveyJson = text16?.ToUri() ?? Address.SurveyJson; Address.Promo = text14?.ToUri() ?? Address.Promo; Address.BetaPromo = text15?.ToUri() ?? Address.BetaPromo; Address.CentralAtendimento = text17?.ToUri() ?? Address.CentralAtendimento; return true; } } finally { ((IDisposable)client)?.Dispose(); } } catch { } return false; } }