using Assinador.Infrastructure.Helpers; using Gestor.Application.Helpers; using Gestor.Application.Servicos.Ferramentas; using Gestor.Application.Servicos.Generic; using Gestor.Application.ViewModels.Generic; using Gestor.Model.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Gestor.Application.ViewModels.Drawer { public class MetaVendedorViewModel : BaseSegurosViewModel { private readonly MetaVendedorServico _servico; private readonly Vendedor _selectedVendedor; private MetaVendedor _selectedMetaVendedor = new MetaVendedor(); private ObservableCollection _metasVendedor = new ObservableCollection(); private bool _carregando; public MetaVendedor CancelMetaVendedor; public bool Carregando { get { return this._carregando; } set { this._carregando = value; base.IsEnabled = !value; base.EnableMenu = !value; base.OnPropertyChanged("Carregando"); } } public ObservableCollection MetasVendedor { get { return this._metasVendedor; } set { this._metasVendedor = value; base.OnPropertyChanged("MetasVendedor"); } } public MetaVendedor SelectedMetaVendedor { get { return this._selectedMetaVendedor; } set { long? nullable; this._selectedMetaVendedor = value; this.CancelMetaVendedor = (value == null || value.get_Id() <= (long)0 ? this.CancelMetaVendedor : value); if (value != null) { nullable = new long?(value.get_Id()); } else { nullable = null; } base.VerificarEnables(nullable); base.OnPropertyChanged("SelectedMetaVendedor"); } } public MetaVendedorViewModel(Vendedor vendedor) { this._servico = new MetaVendedorServico(); this.Seleciona(vendedor); this._selectedVendedor = vendedor; } public void CancelarAlteracao() { this.Carregando = true; if (this.CancelMetaVendedor != null && this.MetasVendedor.Any((MetaVendedor x) => x.get_Id() == this.CancelMetaVendedor.get_Id())) { DomainBase.Copy(this.MetasVendedor.First((MetaVendedor x) => x.get_Id() == this.CancelMetaVendedor.get_Id()), this.CancelMetaVendedor); this.SelectedMetaVendedor = this.MetasVendedor.First((MetaVendedor x) => x.get_Id() == this.CancelMetaVendedor.get_Id()); } base.Alterar(false); this.Carregando = false; } private async Task CarregarMetas(Vendedor vendedor) { List metaVendedors = await (new BaseServico()).BuscarMetaVendedorAsync(vendedor); MetaVendedorViewModel observableCollection = this; List metaVendedors1 = metaVendedors; IOrderedEnumerable mes = from x in metaVendedors1 orderby x.get_Mes() select x; observableCollection.MetasVendedor = new ObservableCollection(mes.ThenBy((MetaVendedor x) => x.get_Valor()).ToList()); } public async Task Excluir() { bool flag; string str; string str1; if (this.SelectedMetaVendedor == null || this.SelectedMetaVendedor.get_Id() == 0) { flag = false; } else if (await base.ShowMessage("DESEJA EXCLUIR?", "SIM", "NÃO", false)) { this.Carregando = true; str = string.Concat("EXCLUIU META DO VENDEDOR \"", this._selectedVendedor.get_Nome(), "\""); long id = this.SelectedMetaVendedor.get_Id(); object[] objArray = new object[] { this.SelectedMetaVendedor.get_Id(), this.SelectedMetaVendedor.get_Valor(), Functions.GetDescription(this.SelectedMetaVendedor.get_Mes()), this.SelectedMetaVendedor.get_Ano() }; str1 = string.Format("ID: {0}\nVALOR: {1:C}\nMÊS: {2}\nANO: {3}", objArray); if (await this._servico.Delete(this.SelectedMetaVendedor)) { base.RegistrarAcao(str, id, new TipoTela?(30), str1); await this.CarregarMetas(this._selectedVendedor); if (this.MetasVendedor.Count <= 0) { this.SelectedMetaVendedor = new MetaVendedor(); base.Alterar(false); base.EnableMenu = false; base.EnableAlterar = false; base.EnableExcluir = false; } else { this.SelectedMetaVendedor = this.MetasVendedor.First(); } this.Carregando = false; flag = true; } else { this.Carregando = false; base.Alterar(false); flag = false; } } else { flag = false; } str = null; str1 = null; return flag; } public void Incluir() { DateTime date = Funcoes.GetNetworkTime().Date; MetaVendedor metaVendedor = new MetaVendedor(); metaVendedor.set_Ano((long)date.Year); metaVendedor.set_Mes(date.Month); this.SelectedMetaVendedor = metaVendedor; base.Alterar(true); } public async Task>> Salvar() { List> keyValuePairs; string str; this.SelectedMetaVendedor.set_Vendedor(this._selectedVendedor); this._servico.Sucesso = true; str = (this.SelectedMetaVendedor.get_Id() == 0 ? "INCLUIU" : "ALTEROU"); string str1 = str; MetaVendedor metaVendedor = await this._servico.Save(this.SelectedMetaVendedor); if (this._servico.Sucesso) { string str2 = string.Concat(str1, " META DO VENDEDOR \"", metaVendedor.get_Vendedor().get_Nome(), "\""); long id = metaVendedor.get_Id(); TipoTela? nullable = new TipoTela?(30); object[] objArray = new object[] { metaVendedor.get_Id(), metaVendedor.get_Valor(), Functions.GetDescription(metaVendedor.get_Mes()), metaVendedor.get_Ano() }; base.RegistrarAcao(str2, id, nullable, string.Format("ID: {0}\nVALOR: {1:C}\nMÊS: {2}\nANO: {3}", objArray)); if (!this.MetasVendedor.Any((MetaVendedor x) => x.get_Id() == metaVendedor.get_Id())) { this.MetasVendedor.Add(metaVendedor); } else { DomainBase.Copy(this.MetasVendedor.First((MetaVendedor x) => x.get_Id() == metaVendedor.get_Id()), metaVendedor); } this.MetasVendedor = new ObservableCollection(this.MetasVendedor); this.SelectedMetaVendedor = this.MetasVendedor.First((MetaVendedor x) => x.get_Id() == metaVendedor.get_Id()); base.Alterar(false); keyValuePairs = null; } else { keyValuePairs = null; } str1 = null; return keyValuePairs; } private async void Seleciona(Vendedor vendedor) { base.Loading(true); await base.PermissaoTela(30); await this.SelecionaMetasVendedor(vendedor); base.Loading(false); } private async Task SelecionaMetasVendedor(Vendedor vendedor) { this.Carregando = true; await this.CarregarMetas(vendedor); if (this.MetasVendedor.Count <= 0) { this.SelectedMetaVendedor = new MetaVendedor(); base.Alterar(false); base.EnableMenu = false; } else { this.SelecionaMetaVendedor(this.MetasVendedor.First()); } this.Carregando = false; } public void SelecionaMetaVendedor(MetaVendedor metaVendedor) { this.SelectedMetaVendedor = metaVendedor; } } }