using Gestor.Application.Helpers; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Runtime.CompilerServices; namespace Gestor.Application.ViewModels.Generic { public class DialogVinculoViewModel : BaseViewModel { private Gestor.Model.Domain.Seguros.Repasse _repasse; private List _tiposVendedor; private ObservableCollection _vendedoresAtivos; private Vendedor _selectedVendedor; private ObservableCollection _repassesVinculo; private Gestor.Model.Domain.Seguros.Repasse _selectedRepasse; private TipoVendedor _selectedTipo; private TipoVendedor _selectedTipoVinculo; public Gestor.Model.Domain.Seguros.Repasse Repasse { get { return this._repasse; } set { this._repasse = value; base.OnPropertyChanged("Repasse"); } } public List Repasses { get; set; } public ObservableCollection RepassesVinculo { get { return this._repassesVinculo; } set { this._repassesVinculo = value; base.OnPropertyChanged("RepassesVinculo"); } } public Gestor.Model.Domain.Seguros.Repasse SelectedRepasse { get { return this._selectedRepasse; } set { this._selectedRepasse = value; this.Vinculo.set_RepasseVinculo(value); base.OnPropertyChanged("SelectedRepasse"); } } public TipoVendedor SelectedTipo { get { return this._selectedTipo; } set { this._selectedTipo = value; this.Vinculo.set_TipoVendedor(value); base.OnPropertyChanged("SelectedTipo"); } } public TipoVendedor SelectedTipoVinculo { get { return this._selectedTipoVinculo; } set { this._selectedTipoVinculo = value; this.Vinculo.set_TipoVendedorVinculo(value); base.OnPropertyChanged("SelectedTipoVinculo"); } } public Vendedor SelectedVendedor { get { return this._selectedVendedor; } set { ObservableCollection observableCollection; this._selectedVendedor = value; if (value == null) { observableCollection = null; } else { observableCollection = new ObservableCollection( from x in this.Repasses where x.get_Vendedor().get_Id() == value.get_Id() select x); } this.RepassesVinculo = observableCollection; base.OnPropertyChanged("SelectedVendedor"); } } public List TiposVendedor { get { return this._tiposVendedor; } set { this._tiposVendedor = value; base.OnPropertyChanged("TiposVendedor"); } } public List Vendedores { get; set; } public ObservableCollection VendedoresAtivos { get { return this._vendedoresAtivos; } set { this._vendedoresAtivos = value; base.OnPropertyChanged("VendedoresAtivos"); } } public VinculoRepasse Vinculo { get; set; } public DialogVinculoViewModel(VinculoRepasse vinculo, List repasses, Gestor.Model.Domain.Seguros.Repasse repasse) { List tipoVendedor = Recursos.TipoVendedor; if (tipoVendedor != null) { list = tipoVendedor.Where((TipoVendedor x) => { if (!x.get_Ativo().HasValue) { return true; } return x.get_Ativo().Value; }).ToList(); } else { list = null; } this._tiposVendedor = list; this._vendedoresAtivos = new ObservableCollection(); this._selectedVendedor = new Vendedor(); this._repassesVinculo = new ObservableCollection(); this._selectedRepasse = new Gestor.Model.Domain.Seguros.Repasse(); this._selectedTipo = new TipoVendedor(); this._selectedTipoVinculo = new TipoVendedor(); base(); List list; Vendedor vendedor; Gestor.Model.Domain.Seguros.Repasse repasse1; TipoVendedor tipoVendedor1; TipoVendedor tipoVendedor2; DialogVinculoViewModel dialogVinculoViewModel = this; this.Repasse = repasse; this.Repasses = repasses; VinculoRepasse vinculoRepasse = new VinculoRepasse(); vinculoRepasse.set_IdRepasse(vinculo.get_IdRepasse()); vinculoRepasse.set_Id(vinculo.get_Id()); this.Vinculo = vinculoRepasse; this.Vendedores = ( from x in this.Repasses group x by x.get_Vendedor().get_Id() into x select x.First().get_Vendedor() into x orderby x.get_Nome() select x).ToList(); long id = this.Repasses.First((Gestor.Model.Domain.Seguros.Repasse x) => x.get_Id() == dialogVinculoViewModel.Vinculo.get_IdRepasse()).get_Vendedor().get_Id(); this.VendedoresAtivos = new ObservableCollection(this.Vendedores.Where((Vendedor x) => { if (x.get_IdEmpresa() != Recursos.Usuario.get_IdEmpresa() || !x.get_Ativo() || x.get_Corretora()) { return false; } return x.get_Id() != id; })); if (vinculo.get_RepasseVinculo() != null) { vendedor = this.VendedoresAtivos.FirstOrDefault((Vendedor x) => x.get_Id() == vinculo.get_RepasseVinculo().get_Vendedor().get_Id()); } else { vendedor = null; } this.SelectedVendedor = vendedor; if (vinculo.get_RepasseVinculo() != null) { repasse1 = this.RepassesVinculo.FirstOrDefault((Gestor.Model.Domain.Seguros.Repasse x) => x.get_Id() == vinculo.get_RepasseVinculo().get_Id()); } else { repasse1 = null; } this.SelectedRepasse = repasse1; if (vinculo.get_TipoVendedor() != null) { tipoVendedor1 = this.TiposVendedor.FirstOrDefault((TipoVendedor x) => x.get_Id() == vinculo.get_TipoVendedor().get_Id()); } else { tipoVendedor1 = null; } this.SelectedTipo = tipoVendedor1; if (vinculo.get_TipoVendedorVinculo() != null) { tipoVendedor2 = this.TiposVendedor.FirstOrDefault((TipoVendedor x) => x.get_Id() == vinculo.get_TipoVendedorVinculo().get_Id()); } else { tipoVendedor2 = null; } this.SelectedTipoVinculo = tipoVendedor2; } } }