diff options
Diffstat (limited to 'Gestor.Application/ViewModels/BI/ProspeccaoViewModel.cs')
| -rw-r--r-- | Gestor.Application/ViewModels/BI/ProspeccaoViewModel.cs | 553 |
1 files changed, 553 insertions, 0 deletions
diff --git a/Gestor.Application/ViewModels/BI/ProspeccaoViewModel.cs b/Gestor.Application/ViewModels/BI/ProspeccaoViewModel.cs new file mode 100644 index 0000000..4839d95 --- /dev/null +++ b/Gestor.Application/ViewModels/BI/ProspeccaoViewModel.cs @@ -0,0 +1,553 @@ +using ClosedXML.Excel;
+using Gestor.Application.Helpers;
+using Gestor.Application.Servicos;
+using Gestor.Application.ViewModels.Generic;
+using Gestor.Common.Validation;
+using Gestor.Model.Common;
+using Gestor.Model.Domain.Ferramentas;
+using Gestor.Model.Domain.Generic;
+using Gestor.Model.Domain.Relatorios;
+using Gestor.Model.Domain.Seguros;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace Gestor.Application.ViewModels.BI
+{
+ public class ProspeccaoViewModel : BaseViewModel
+ {
+ private readonly ProspeccaoServico _servico;
+
+ private PermissaoUsuario SelectedPermissaoUsuario;
+
+ private ObservableCollection<Vendedor> _vendedores;
+
+ private Vendedor _selectedVendedor = new Vendedor();
+
+ private List<string> _searchStatus = new List<string>()
+ {
+ "TODOS",
+ ValidationHelper.GetDescription((StatusProspeccao)1),
+ ValidationHelper.GetDescription((StatusProspeccao)5),
+ ValidationHelper.GetDescription((StatusProspeccao)2),
+ ValidationHelper.GetDescription((StatusProspeccao)4),
+ ValidationHelper.GetDescription((StatusProspeccao)3)
+ };
+
+ private string _selectedStatusSearch = "AGENDANDO";
+
+ private StatusProspeccao? _selectedStatus;
+
+ private ObservableCollection<StatusDeProspeccao> _statusProspeccaoPersonalizado;
+
+ private DateTime _inicio = Funcoes.GetNetworkTime().Date;
+
+ private DateTime _fim = Funcoes.GetNetworkTime().Date.AddDays(7);
+
+ private ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao> _prospeccoesFiltradas;
+
+ private Gestor.Model.Domain.Seguros.Prospeccao _selectedProspeccao;
+
+ private ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao> _prospeccao;
+
+ private bool _naoHaDados;
+
+ public DateTime Fim
+ {
+ get
+ {
+ return this._fim;
+ }
+ set
+ {
+ this._fim = value;
+ base.OnPropertyChanged("Fim");
+ }
+ }
+
+ public DateTime Inicio
+ {
+ get
+ {
+ return this._inicio;
+ }
+ set
+ {
+ this._inicio = value;
+ base.OnPropertyChanged("Inicio");
+ }
+ }
+
+ public bool NaoHaDados
+ {
+ get
+ {
+ return this._naoHaDados;
+ }
+ set
+ {
+ this._naoHaDados = value;
+ base.OnPropertyChanged("NaoHaDados");
+ }
+ }
+
+ public ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao> Prospeccao
+ {
+ get
+ {
+ return this._prospeccao;
+ }
+ set
+ {
+ this._prospeccao = value;
+ this.NaoHaDados = (value == null ? true : value.Count == 0);
+ base.OnPropertyChanged("Prospeccao");
+ }
+ }
+
+ public AutoCompleteFilterPredicate<object> ProspeccaoItemFilter
+ {
+ get
+ {
+ AutoCompleteFilterPredicate<object> u003cu003e9_530 = ProspeccaoViewModel.u003cu003ec.u003cu003e9__53_0;
+ if (u003cu003e9_530 == null)
+ {
+ u003cu003e9_530 = new AutoCompleteFilterPredicate<object>(ProspeccaoViewModel.u003cu003ec.u003cu003e9, (string searchText, object obj) => {
+ if (((Gestor.Model.Domain.Seguros.Prospeccao)obj).get_Nome().ToUpper().Contains(searchText.ToUpper()) || ((Gestor.Model.Domain.Seguros.Prospeccao)obj).get_Documento().ToString().ToUpper().Contains(searchText.ToUpper()) || ((Gestor.Model.Domain.Seguros.Prospeccao)obj).get_Telefone1().ToString().ToUpper().Contains(searchText.ToUpper()) || ((Gestor.Model.Domain.Seguros.Prospeccao)obj).get_Telefone2().ToString().ToUpper().Contains(searchText.ToUpper()) || ((Gestor.Model.Domain.Seguros.Prospeccao)obj).get_Email().ToString().ToUpper().Contains(searchText.ToUpper()))
+ {
+ return true;
+ }
+ return ((Gestor.Model.Domain.Seguros.Prospeccao)obj).get_VigenciaFinal().ToString().ToUpper().Contains(searchText.ToUpper());
+ });
+ ProspeccaoViewModel.u003cu003ec.u003cu003e9__53_0 = u003cu003e9_530;
+ }
+ return u003cu003e9_530;
+ }
+ }
+
+ public List<Gestor.Model.Domain.Seguros.Prospeccao> Prospeccoes
+ {
+ get;
+ set;
+ }
+
+ public ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao> ProspeccoesFiltradas
+ {
+ get
+ {
+ return this._prospeccoesFiltradas;
+ }
+ set
+ {
+ this._prospeccoesFiltradas = value;
+ base.OnPropertyChanged("ProspeccoesFiltradas");
+ }
+ }
+
+ public List<string> SearchStatus
+ {
+ get
+ {
+ return this._searchStatus;
+ }
+ set
+ {
+ this._searchStatus = value;
+ this.SelectedStatusSearch = value[1];
+ base.OnPropertyChanged("SearchStatus");
+ }
+ }
+
+ public Gestor.Model.Domain.Seguros.Prospeccao SelectedProspeccao
+ {
+ get
+ {
+ return this._selectedProspeccao;
+ }
+ set
+ {
+ this._selectedProspeccao = value;
+ base.OnPropertyChanged("SelectedProspeccao");
+ }
+ }
+
+ public StatusProspeccao? SelectedStatus
+ {
+ get
+ {
+ return this._selectedStatus;
+ }
+ set
+ {
+ this._selectedStatus = value;
+ base.OnPropertyChanged("SelectedStatus");
+ }
+ }
+
+ public string SelectedStatusSearch
+ {
+ get
+ {
+ return this._selectedStatusSearch;
+ }
+ set
+ {
+ this._selectedStatusSearch = value;
+ if (value == "AGENDADO")
+ {
+ this.SelectedStatus = new StatusProspeccao?(1);
+ }
+ else if (value == "GANHO")
+ {
+ this.SelectedStatus = new StatusProspeccao?(2);
+ }
+ else if (value == "PERDIDO")
+ {
+ this.SelectedStatus = new StatusProspeccao?(3);
+ }
+ else if (value == "NÃO TRABALHADO")
+ {
+ this.SelectedStatus = new StatusProspeccao?(4);
+ }
+ else if (value == "EM ANDAMENTO")
+ {
+ this.SelectedStatus = new StatusProspeccao?(5);
+ }
+ else
+ {
+ this.SelectedStatus = null;
+ }
+ base.OnPropertyChanged("SelectedStatusSearch");
+ }
+ }
+
+ public Vendedor SelectedVendedor
+ {
+ get
+ {
+ return this._selectedVendedor;
+ }
+ set
+ {
+ this._selectedVendedor = value;
+ base.OnPropertyChanged("SelectedVendedor");
+ }
+ }
+
+ public ObservableCollection<StatusDeProspeccao> StatusProspeccaoPersonalizado
+ {
+ get
+ {
+ return this._statusProspeccaoPersonalizado;
+ }
+ set
+ {
+ this._statusProspeccaoPersonalizado = value;
+ base.OnPropertyChanged("StatusProspeccaoPersonalizado");
+ }
+ }
+
+ public ObservableCollection<Vendedor> Vendedores
+ {
+ get
+ {
+ return this._vendedores;
+ }
+ set
+ {
+ this._vendedores = value;
+ base.OnPropertyChanged("Vendedores");
+ }
+ }
+
+ public ProspeccaoViewModel()
+ {
+ this._servico = new ProspeccaoServico();
+ this.StatusProspeccaoPersonalizado = new ObservableCollection<StatusDeProspeccao>((
+ from x in Recursos.StatusProspeccao
+ where x.get_Ativo()
+ select x).ToList<StatusDeProspeccao>());
+ this.CarregaVendedores();
+ this.SelectedStatusSearch = this.SearchStatus[1];
+ this.CarregaProspeccoes();
+ }
+
+ public async Task<bool> BuscaPermissao(string Tipo)
+ {
+ bool flag;
+ ProspeccaoViewModel prospeccaoViewModel = this;
+ if (Recursos.Usuario.get_Administrador())
+ {
+ flag = true;
+ }
+ else if (Tipo == "Alterar" && prospeccaoViewModel.SelectedPermissaoUsuario != null && !prospeccaoViewModel.SelectedPermissaoUsuario.get_Alterar())
+ {
+ flag = false;
+ }
+ else if (!(Tipo == "Excluir") || prospeccaoViewModel.SelectedPermissaoUsuario == null || prospeccaoViewModel.SelectedPermissaoUsuario.get_Excluir())
+ {
+ flag = (!(Tipo == "Incluir") || prospeccaoViewModel.SelectedPermissaoUsuario == null || prospeccaoViewModel.SelectedPermissaoUsuario.get_Incluir() ? true : false);
+ }
+ else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public async Task CarregaProspeccao()
+ {
+ ProspeccaoViewModel observableCollection = this;
+ if (observableCollection.ProspeccoesFiltradas != null)
+ {
+ observableCollection.ProspeccoesFiltradas = new ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao>(observableCollection.ProspeccoesFiltradas.ToList<Gestor.Model.Domain.Seguros.Prospeccao>());
+ }
+ }
+
+ public async void CarregaProspeccoes()
+ {
+ await this.CarregarProspeccoes();
+ }
+
+ public async Task CarregarPermissao()
+ {
+ this.SelectedPermissaoUsuario = await this.ServicoPermissUsuario.VerificarPermissao(Recursos.Usuario, 60);
+ }
+
+ public async Task CarregarProspeccoes()
+ {
+ if (this.Inicio <= this.Fim)
+ {
+ base.Loading(true);
+ base.IsVisible = Visibility.Collapsed;
+ this.Prospeccoes = await this._servico.BuscarProspeccoes(this.SelectedVendedor.get_Id(), this.Inicio, this.Fim, this.SelectedStatus);
+ ProspeccaoViewModel observableCollection = this;
+ List<Gestor.Model.Domain.Seguros.Prospeccao> prospeccoes = this.Prospeccoes;
+ observableCollection.ProspeccoesFiltradas = new ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao>(
+ from x in prospeccoes
+ orderby x.get_VigenciaFinal()
+ select x);
+ this.SelectedProspeccao = this.ProspeccoesFiltradas.FirstOrDefault<Gestor.Model.Domain.Seguros.Prospeccao>();
+ base.IsVisible = Visibility.Visible;
+ base.Loading(false);
+ }
+ }
+
+ public async Task CarregarVendedores()
+ {
+ List<VendedorUsuario> vendedorUsuarios = await (new VendedorUsuarioServico()).FindByVinculo(Recursos.Usuario);
+ List<long> list = (
+ from x in vendedorUsuarios
+ select x.get_Vendedor().get_Id()).ToList<long>();
+ List<Vendedor> vendedors = new List<Vendedor>();
+ if (list.Count <= 0 || Recursos.Usuario.get_Administrador())
+ {
+ Vendedor vendedor = new Vendedor();
+ vendedor.set_Id((long)0);
+ vendedor.set_Nome("TODOS OS VENDEDORES");
+ vendedors.Add(vendedor);
+ List<Vendedor> vendedors1 = vendedors;
+ List<Vendedor> vendedores = Recursos.Vendedores;
+ IEnumerable<Vendedor> vendedors2 = vendedores.Where<Vendedor>((Vendedor x) => {
+ if (Recursos.Usuario.get_IdEmpresa() != (long)1 && x.get_IdEmpresa() != Recursos.Usuario.get_IdEmpresa())
+ {
+ return false;
+ }
+ return x.get_Ativo();
+ });
+ vendedors1.AddRange((
+ from x in vendedors2
+ orderby x.get_Nome()
+ select x).ToList<Vendedor>());
+ }
+ else
+ {
+ List<Vendedor> vendedors3 = vendedors;
+ IEnumerable<Vendedor> vendedors4 = Recursos.Vendedores.Where<Vendedor>((Vendedor x) => {
+ if (Recursos.Usuario.get_IdEmpresa() != (long)1 && x.get_IdEmpresa() != Recursos.Usuario.get_IdEmpresa() || !x.get_Ativo())
+ {
+ return false;
+ }
+ return list.Contains(x.get_Id());
+ });
+ vendedors3.AddRange((
+ from x in vendedors4
+ orderby x.get_Nome()
+ select x).ToList<Vendedor>());
+ }
+ this.Vendedores = new ObservableCollection<Vendedor>(vendedors);
+ this.SelectedVendedor = this.Vendedores.FirstOrDefault<Vendedor>();
+ }
+
+ public async void CarregaVendedores()
+ {
+ await this.CarregarVendedores();
+ }
+
+ public async void Excluir(Gestor.Model.Domain.Seguros.Prospeccao prospeccao)
+ {
+ if (await this.BuscaPermissao("Excluir"))
+ {
+ if (prospeccao != null)
+ {
+ bool tarefa = prospeccao.get_Tarefa() == null;
+ if (tarefa)
+ {
+ tarefa = !await base.ShowMessage("DESEJA EXCLUIR ESSA PROSPECÇÃO?", "SIM", "NÃO", false);
+ }
+ bool flag = tarefa;
+ if (!flag)
+ {
+ bool tarefa1 = prospeccao.get_Tarefa() != null;
+ if (tarefa1)
+ {
+ tarefa1 = !await base.ShowMessage(string.Concat("HÁ UMA TAREFA ANEXADA A ESSA PROSPECÇÃO. ESSE PROCEDIMENTO IRÁ EXCLUIR A TAREFA ANEXADA.", Environment.NewLine, "DESEJA REALMENTE PROSSEGUIR?"), "SIM", "NÃO", false);
+ }
+ flag = tarefa1;
+ }
+ if (!flag)
+ {
+ if (await this._servico.Delete(prospeccao))
+ {
+ base.RegistrarAcao(string.Format("EXCLUIU PROSPECÇÃO DO ID: {0}", prospeccao.get_Id()), prospeccao.get_Id(), new TipoTela?(33), string.Format("CLIENTE \"{0}\", ID: {1}", prospeccao.get_Nome(), prospeccao.get_Id()));
+ await this.CarregarProspeccoes();
+ base.ToggleSnackBar("PROSPECÇÃO EXCLUÍDA COM SUCESSO", true);
+ }
+ }
+ }
+ }
+ }
+
+ public List<Gestor.Model.Domain.Seguros.Prospeccao> Filtrar(string filter)
+ {
+ if (this.Prospeccoes == null)
+ {
+ return null;
+ }
+ this.ProspeccoesFiltradas = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao>(this.Prospeccoes) : new ObservableCollection<Gestor.Model.Domain.Seguros.Prospeccao>(this.Prospeccoes.Where<Gestor.Model.Domain.Seguros.Prospeccao>((Gestor.Model.Domain.Seguros.Prospeccao x) => {
+ if (ValidationHelper.RemoveDiacritics(ValidationHelper.RemoveDiacritics(x.get_Nome()).ToUpper().Trim()).Contains(filter) || x.get_Documento() != null && ValidationHelper.RemoveDiacritics(x.get_Documento().Trim()).Contains(filter) || x.get_Telefone1() != null && ValidationHelper.RemoveDiacritics(x.get_Telefone1().Trim()).Contains(filter) || x.get_Telefone2() != null && ValidationHelper.RemoveDiacritics(x.get_Telefone2().Trim()).Contains(filter) || x.get_Email() != null && ValidationHelper.RemoveDiacritics(x.get_Email().Trim()).Contains(filter))
+ {
+ return true;
+ }
+ if (!x.get_VigenciaFinal().HasValue)
+ {
+ return false;
+ }
+ return ValidationHelper.RemoveDiacritics(x.get_VigenciaFinal().ToString().Trim()).Contains(filter);
+ }).OrderBy<Gestor.Model.Domain.Seguros.Prospeccao, DateTime?>((Gestor.Model.Domain.Seguros.Prospeccao x) => x.get_VigenciaFinal())));
+ return this.ProspeccoesFiltradas.ToList<Gestor.Model.Domain.Seguros.Prospeccao>();
+ }
+
+ internal async Task<List<Gestor.Model.Domain.Seguros.Prospeccao>> FiltrarProspecao(string value)
+ {
+ List<Gestor.Model.Domain.Seguros.Prospeccao> prospeccaos = await Task.Run<List<Gestor.Model.Domain.Seguros.Prospeccao>>(() => this.Filtrar(value));
+ return prospeccaos;
+ }
+
+ public async Task GerarExcel()
+ {
+ string str;
+ if (this.ProspeccoesFiltradas != null)
+ {
+ List<ProspeccaoToPrint> prospeccaoToPrints = new List<ProspeccaoToPrint>();
+ this.ProspeccoesFiltradas.AsEnumerable<Gestor.Model.Domain.Seguros.Prospeccao>().ToList<Gestor.Model.Domain.Seguros.Prospeccao>().ForEach((Gestor.Model.Domain.Seguros.Prospeccao x) => {
+ ProspeccaoToPrint prospeccaoToPrint = new ProspeccaoToPrint();
+ prospeccaoToPrint.set_Nome(x.get_Nome());
+ prospeccaoToPrint.set_Documento(x.get_Documento() ?? "");
+ prospeccaoToPrint.set_Nascimento(x.get_Nascimento());
+ prospeccaoToPrint.set_Prefixo1(x.get_Prefixo1() ?? "");
+ prospeccaoToPrint.set_Telefone1(x.get_Telefone1() ?? "");
+ prospeccaoToPrint.set_Email(x.get_Email() ?? "");
+ prospeccaoToPrint.set_VigenciaFinal(x.get_VigenciaFinal());
+ prospeccaoToPrint.set_Item(x.get_Item() ?? "");
+ prospeccaoToPrint.set_Status(x.get_Status());
+ prospeccaoToPrint.set_StatusPersonalizadotoPrint((x.get_StatusPersonalizado() == null ? "" : x.get_StatusPersonalizado().get_Nome()));
+ prospeccaoToPrint.set_Tipo(x.get_Tipo() ?? "");
+ object nome = x.get_Vendedor().get_Nome();
+ if (nome == null)
+ {
+ nome = null;
+ }
+ prospeccaoToPrint.set_Vendedor((string)nome);
+ prospeccaoToPrint.set_Valor(x.get_Valor());
+ prospeccaoToPrints.Add(prospeccaoToPrint);
+ });
+ string tempPath = "";
+ str = "";
+ tempPath = Path.GetTempPath();
+ str = string.Format("{0}{1}.xlsx", tempPath, Guid.NewGuid());
+ string str1 = "PROSPECÇÃO";
+ await Funcoes.GerarXls<ProspeccaoToPrint>(new XLWorkbook(), str1, prospeccaoToPrints, new List<string>()).SaveAs(str);
+ Process.Start(str);
+ }
+ else
+ {
+ base.ShowMessage("NÃO HÁ DADOS PARA A IMPRESSÃO EM EXCEL", "OK", "", false);
+ }
+ str = null;
+ }
+
+ public async Task Print()
+ {
+ if (this.ProspeccoesFiltradas != null)
+ {
+ List<ProspeccaoToPrint> prospeccaoToPrints = new List<ProspeccaoToPrint>();
+ this.ProspeccoesFiltradas.AsEnumerable<Gestor.Model.Domain.Seguros.Prospeccao>().ToList<Gestor.Model.Domain.Seguros.Prospeccao>().ForEach((Gestor.Model.Domain.Seguros.Prospeccao x) => {
+ ProspeccaoToPrint prospeccaoToPrint = new ProspeccaoToPrint();
+ prospeccaoToPrint.set_Nome(x.get_Nome());
+ prospeccaoToPrint.set_Documento(x.get_Documento() ?? "");
+ prospeccaoToPrint.set_Nascimento(x.get_Nascimento());
+ prospeccaoToPrint.set_Prefixo1(x.get_Prefixo1() ?? "");
+ prospeccaoToPrint.set_Telefone1(x.get_Telefone1() ?? "");
+ prospeccaoToPrint.set_Email(x.get_Email() ?? "");
+ prospeccaoToPrint.set_VigenciaFinal(x.get_VigenciaFinal());
+ prospeccaoToPrint.set_Item(x.get_Item() ?? "");
+ prospeccaoToPrint.set_Status(x.get_Status());
+ prospeccaoToPrint.set_StatusPersonalizadotoPrint((x.get_StatusPersonalizado() == null ? "" : x.get_StatusPersonalizado().get_Nome()));
+ prospeccaoToPrint.set_Tipo(x.get_Tipo() ?? "");
+ object nome = x.get_Vendedor().get_Nome();
+ if (nome == null)
+ {
+ nome = null;
+ }
+ prospeccaoToPrint.set_Vendedor((string)nome);
+ prospeccaoToPrint.set_Valor(x.get_Valor());
+ prospeccaoToPrints.Add(prospeccaoToPrint);
+ });
+ List<ProspeccaoToPrint> prospeccaoToPrints1 = prospeccaoToPrints;
+ prospeccaoToPrints = (
+ from x in prospeccaoToPrints1
+ orderby x.get_Vendedor()
+ select x).ToList<ProspeccaoToPrint>();
+ string str = await Funcoes.GenerateTable<ProspeccaoToPrint>(prospeccaoToPrints.ToList<ProspeccaoToPrint>(), new List<string>(), false, false, "", null);
+ if (!string.IsNullOrEmpty(str))
+ {
+ TipoRelatorio tipoRelatorio = new TipoRelatorio();
+ tipoRelatorio.set_Inicio(this.Inicio);
+ tipoRelatorio.set_Fim(this.Fim);
+ tipoRelatorio.set_Nome(string.Concat("PROSPECÇÕES - ", this.SelectedVendedor.get_Nome()));
+ str = Funcoes.ExportarHtml(tipoRelatorio, str, "60", "landscaoe", false, "");
+ string tempPath = Path.GetTempPath();
+ string str1 = string.Format("{0}PROSPECÇÃO_{1:ddMMyyyyhhmmss}.html", tempPath, Funcoes.GetNetworkTime());
+ StreamWriter streamWriter = new StreamWriter(str1, true, Encoding.UTF8);
+ streamWriter.Write(str);
+ streamWriter.Close();
+ Process.Start(str1);
+ }
+ }
+ }
+
+ public async Task<List<KeyValuePair<string, string>>> Salvar(Gestor.Model.Domain.Seguros.Prospeccao prospecao)
+ {
+ return await base.SalvarProspeccao(prospecao);
+ }
+ }
+}
\ No newline at end of file |