From 674ca83ba9243a9e95a7568c797668dab6aee26a Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:35:25 -0300 Subject: feat: upload files --- .../ViewModels/Drawer/VinculoVendedorViewModel.cs | 307 +++++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 Gestor.Application/ViewModels/Drawer/VinculoVendedorViewModel.cs (limited to 'Gestor.Application/ViewModels/Drawer/VinculoVendedorViewModel.cs') diff --git a/Gestor.Application/ViewModels/Drawer/VinculoVendedorViewModel.cs b/Gestor.Application/ViewModels/Drawer/VinculoVendedorViewModel.cs new file mode 100644 index 0000000..bba206b --- /dev/null +++ b/Gestor.Application/ViewModels/Drawer/VinculoVendedorViewModel.cs @@ -0,0 +1,307 @@ +using Gestor.Application.Helpers; +using Gestor.Application.Servicos; +using Gestor.Application.Servicos.Ferramentas; +using Gestor.Application.Servicos.Generic; +using Gestor.Application.ViewModels; +using Gestor.Application.ViewModels.Generic; +using Gestor.Common.Validation; +using Gestor.Infrastructure.UnitOfWork.Generic; +using Gestor.Infrastructure.UnitOfWork.Logic; +using Gestor.Model.Common; +using Gestor.Model.Domain.Common; +using Gestor.Model.Domain.Generic; +using Gestor.Model.Domain.Seguros; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Gestor.Application.ViewModels.Drawer +{ + public class VinculoVendedorViewModel : BaseSegurosViewModel + { + private readonly VendedorUsuarioServico _servicoVendedorUsuario; + + private readonly VendedorServico _servicoVendedor; + + public readonly Usuario SelectedUsuario; + + private bool _isVisibleVinculado; + + private bool _enableAlterarVinculo; + + private bool _isVisibleVendedor = true; + + private List _vinculado; + + private List _vinculadoFiltro; + + private List _vendedor; + + private List _vendedorFiltro; + + public bool EnableAlterarVinculo + { + get + { + return this._enableAlterarVinculo; + } + set + { + this._enableAlterarVinculo = value; + base.OnPropertyChanged("EnableAlterarVinculo"); + } + } + + public bool IsVisibleVendedor + { + get + { + return this._isVisibleVendedor; + } + set + { + this._isVisibleVendedor = value; + base.OnPropertyChanged("IsVisibleVendedor"); + } + } + + public bool IsVisibleVinculado + { + get + { + return this._isVisibleVinculado; + } + set + { + this._isVisibleVinculado = value; + base.OnPropertyChanged("IsVisibleVinculado"); + } + } + + public List Vendedor + { + get + { + return this._vendedor; + } + set + { + this._vendedor = value; + this.IsVisibleVendedor = (value == null ? false : value.Count > 0); + base.OnPropertyChanged("Vendedor"); + } + } + + public List VendedorFiltro + { + get + { + return this._vendedorFiltro; + } + set + { + this._vendedorFiltro = value; + base.OnPropertyChanged("VendedorFiltro"); + } + } + + public List Vinculado + { + get + { + return this._vinculado; + } + set + { + this._vinculado = value; + this.IsVisibleVinculado = (value == null ? false : value.Count > 0); + base.OnPropertyChanged("Vinculado"); + } + } + + public List VinculadoFiltro + { + get + { + return this._vinculadoFiltro; + } + set + { + this._vinculadoFiltro = value; + base.OnPropertyChanged("VinculadoFiltro"); + } + } + + public VinculoVendedorViewModel(Usuario usuario) + { + this.SelectedUsuario = usuario; + this._servicoVendedorUsuario = new VendedorUsuarioServico(); + this._servicoVendedor = new VendedorServico(); + this.Load(usuario); + this.EnableAlterarVinculo = Recursos.Usuario.get_Id() > (long)0; + base.EnableMenu = true; + } + + private async Task AwaitLoad(Usuario usuario) + { + this.Vinculado = await this.GetVinculo(usuario); + this.Vendedor = await this.GetVendedor(usuario); + this.VinculadoFiltro = this.Vinculado; + this.VendedorFiltro = this.Vendedor; + } + + internal async Task BuscarVinculoVendedor(string value) + { + await Task.Run(() => this.FiltrarVinculoVendedor(value)); + } + + internal void FiltrarVinculoVendedor(string filter) + { + this.Vinculado = (string.IsNullOrEmpty(filter) ? this.VinculadoFiltro : new List( + from x in this.VinculadoFiltro + where Gestor.Common.Validation.ValidationHelper.RemoveDiacritics(x.get_Vendedor().get_Nome().ToUpper().Trim()).Contains(filter.ToUpper()) + select x)); + this.Vendedor = (string.IsNullOrEmpty(filter) ? this.VendedorFiltro : new List( + from x in this.VendedorFiltro + where Gestor.Common.Validation.ValidationHelper.RemoveDiacritics(x.get_Vendedor().get_Nome().ToUpper().Trim()).Contains(filter.ToUpper()) + select x)); + } + + private async Task> GetVendedor(Usuario usuario) + { + List list; + List vinculoVendedors; + List vendedors = await this._servicoVendedor.BuscarVendedoresAtivosAsync(); + if (vendedors != null) + { + list = ( + from x in vendedors + where x.get_IdEmpresa() == usuario.get_IdEmpresa() + select x).ToList(); + } + else + { + list = null; + } + vendedors = list; + if (vendedors == null || vendedors.Count == 0) + { + vinculoVendedors = null; + } + else + { + IEnumerable vendedors1 = + from vendedor in vendedors + where this.Vinculado.All((VinculoVendedor x) => x.get_Vendedor().get_Id() != vendedor.get_Id()) + select vendedor; + vinculoVendedors = vendedors1.Select((Gestor.Model.Domain.Seguros.Vendedor vendedor) => { + VinculoVendedor vinculoVendedor = new VinculoVendedor(); + vinculoVendedor.set_Id((long)0); + vinculoVendedor.set_Vendedor(vendedor); + vinculoVendedor.set_Vinculado(false); + return vinculoVendedor; + }).ToList(); + } + List vinculoVendedors1 = vinculoVendedors; + return vinculoVendedors1; + } + + private async Task> GetVinculo(Usuario usuario) + { + List vinculoVendedors = new List(); + await this._servicoVendedorUsuario.FindByVinculo(usuario).ForEach((VendedorUsuario x) => { + VinculoVendedor vinculoVendedor = new VinculoVendedor(); + vinculoVendedor.set_Id(x.get_Id()); + vinculoVendedor.set_Vendedor(x.get_Vendedor()); + vinculoVendedor.set_Vinculado(true); + vinculoVendedors.Add(vinculoVendedor); + }); + List vinculoVendedors1 = vinculoVendedors; + return vinculoVendedors1; + } + + private async void Load(Usuario usuario) + { + await this.AwaitLoad(usuario); + } + + public async Task Salvar() + { + string str; + List vinculado = this.Vinculado; + List list = ( + from x in vinculado + where !x.get_Vinculado() + select x).Select((VinculoVendedor x) => { + VendedorUsuario vendedorUsuario = new VendedorUsuario(); + vendedorUsuario.set_Id(x.get_Id()); + vendedorUsuario.set_Vendedor(x.get_Vendedor()); + vendedorUsuario.set_Usuario(this.SelectedUsuario); + return vendedorUsuario; + }).ToList(); + if (list.Count > 0) + { + if (!await this._servicoVendedorUsuario.Delete(list)) + { + return; + } + } + List vendedor = this.Vendedor; + List vendedorUsuarios = ( + from x in vendedor + where x.get_Vinculado() + select x).Select((VinculoVendedor x) => { + VendedorUsuario vendedorUsuario = new VendedorUsuario(); + vendedorUsuario.set_Id(x.get_Id()); + vendedorUsuario.set_Vendedor(x.get_Vendedor()); + vendedorUsuario.set_Usuario(this.SelectedUsuario); + return vendedorUsuario; + }).ToList(); + if (vendedorUsuarios.Count > 0) + { + await this._servicoVendedorUsuario.SaveOrUpdate(vendedorUsuarios); + } + await this.AwaitLoad(this.SelectedUsuario); + using (UnitOfWork commited = Instancia.Commited) + { + IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName()); + RegistroLog registroLog = new RegistroLog(); + registroLog.set_Acao(0); + registroLog.set_Usuario(Recursos.Usuario); + registroLog.set_DataHora(Funcoes.GetNetworkTime()); + List vinculoVendedors = this.Vinculado; + List vendedors = ( + from x in vinculoVendedors + select x.get_Vendedor()).ToList(); + JsonSerializerSettings jsonSerializerSetting = new JsonSerializerSettings(); + jsonSerializerSetting.set_ReferenceLoopHandling(1); + registroLog.set_Descricao(JsonConvert.SerializeObject(vendedors, jsonSerializerSetting)); + registroLog.set_EntidadeId(this.SelectedUsuario.get_Id()); + registroLog.set_Tela(45); + registroLog.set_Versao(LoginViewModel.VersaoAtual); + registroLog.set_NomeMaquina(Environment.MachineName); + registroLog.set_UsuarioMaquina(Environment.UserName); + IPAddress[] addressList = hostEntry.AddressList; + IPAddress pAddress = ((IEnumerable)addressList).FirstOrDefault((IPAddress ip) => ip.AddressFamily == AddressFamily.InterNetwork); + if (pAddress != null) + { + str = pAddress.ToString(); + } + else + { + str = null; + } + registroLog.set_Ip(str); + this._servicoVendedorUsuario.SaveLog(registroLog, commited); + commited.Commit(); + } + base.RegistrarAcao(string.Concat("ALTEROU VÍNCULOS DE VENDEDOR DO USUÁRIO \"", this.SelectedUsuario.get_Nome(), "\""), this.SelectedUsuario.get_Id(), new TipoTela?(45), string.Format("ID: {0}\n\nACESSE O LOG DE ALTERAÇÕES NA TELA DE VÍNCULO DE VENDEDOR PARA VER EXATAMENTE O QUE FOI ALTERADO.", this.SelectedUsuario.get_Id())); + } + } +} \ No newline at end of file -- cgit v1.2.3