summaryrefslogtreecommitdiff
path: root/Decompiler/Gestor.Application.ViewModels.Ferramentas/ProdutoViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Ferramentas/ProdutoViewModel.cs')
-rw-r--r--Decompiler/Gestor.Application.ViewModels.Ferramentas/ProdutoViewModel.cs245
1 files changed, 245 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.ViewModels.Ferramentas/ProdutoViewModel.cs b/Decompiler/Gestor.Application.ViewModels.Ferramentas/ProdutoViewModel.cs
new file mode 100644
index 0000000..efbb0dd
--- /dev/null
+++ b/Decompiler/Gestor.Application.ViewModels.Ferramentas/ProdutoViewModel.cs
@@ -0,0 +1,245 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading.Tasks;
+using Gestor.Application.Helpers;
+using Gestor.Application.Servicos.Ferramentas;
+using Gestor.Application.Servicos.Generic;
+using Gestor.Application.ViewModels.Generic;
+using Gestor.Common.Validation;
+using Gestor.Model.Common;
+using Gestor.Model.Domain.Generic;
+using Gestor.Model.Domain.Seguros;
+
+namespace Gestor.Application.ViewModels.Ferramentas;
+
+public class ProdutoViewModel : BaseSegurosViewModel
+{
+ private readonly ProdutoServico _servico;
+
+ private Produto _selectedProduto;
+
+ public Produto CancelProduto;
+
+ private ObservableCollection<Produto> _produtosFiltrados = new ObservableCollection<Produto>();
+
+ private bool _isExpanded;
+
+ public Produto SelectedProduto
+ {
+ get
+ {
+ return _selectedProduto;
+ }
+ set
+ {
+ _selectedProduto = value;
+ WorkOnSelectedProduto(value);
+ VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null);
+ OnPropertyChanged("SelectedProduto");
+ }
+ }
+
+ public ObservableCollection<Produto> ProdutosFiltrados
+ {
+ get
+ {
+ return _produtosFiltrados;
+ }
+ set
+ {
+ _produtosFiltrados = value;
+ IsExpanded = value != null && value.Count > 0;
+ OnPropertyChanged("ProdutosFiltrados");
+ }
+ }
+
+ public bool IsExpanded
+ {
+ get
+ {
+ return _isExpanded;
+ }
+ set
+ {
+ _isExpanded = value;
+ OnPropertyChanged("IsExpanded");
+ }
+ }
+
+ public List<Produto> Produtos { get; set; }
+
+ public ProdutoViewModel()
+ {
+ _servico = new ProdutoServico();
+ base.EnableMenu = true;
+ Seleciona();
+ }
+
+ private async void Seleciona()
+ {
+ Loading(isLoading: true);
+ await PermissaoTela((TipoTela)10);
+ await SelecionaProdutos();
+ Loading(isLoading: false);
+ }
+
+ private async Task SelecionaProdutos()
+ {
+ Loading(isLoading: true);
+ Produtos = (from x in await new BaseServico().BuscarProdutosAsync()
+ orderby x.Ativo descending, x.Nome
+ select x).ToList();
+ ProdutosFiltrados = new ObservableCollection<Produto>(Produtos);
+ SelectedProduto = ProdutosFiltrados.FirstOrDefault();
+ Recursos.Produtos = Produtos.OrderBy((Produto x) => x.Nome).ToList();
+ Loading(isLoading: false);
+ Loading(isLoading: true);
+ }
+
+ public async Task<List<KeyValuePair<string, string>>> Validate()
+ {
+ if (string.IsNullOrWhiteSpace(SelectedProduto.Nome))
+ {
+ return new List<KeyValuePair<string, string>>();
+ }
+ List<KeyValuePair<string, string>> errors = new List<KeyValuePair<string, string>>();
+ bool valida = true;
+ List<Produto> list = await new BaseServico().BuscarProduto(SelectedProduto.Nome);
+ if (list.Count > 0)
+ {
+ list.ForEach(delegate(Produto x)
+ {
+ if (((DomainBase)x).Id != ((DomainBase)SelectedProduto).Id && x.Nome == SelectedProduto.Nome)
+ {
+ valida = false;
+ }
+ });
+ }
+ if (!valida)
+ {
+ errors.Add(new KeyValuePair<string, string>("Nome", "UM PRODUTO COM O MESMO NOME JÁ EXISTE."));
+ }
+ return errors;
+ }
+
+ public async Task<List<KeyValuePair<string, string>>> Salvar()
+ {
+ List<KeyValuePair<string, string>> errorMessages = SelectedProduto.Validate();
+ List<KeyValuePair<string, string>> list = errorMessages;
+ list.AddRange(await Validate());
+ if (errorMessages.Count > 0)
+ {
+ return errorMessages;
+ }
+ string acao = ((((DomainBase)SelectedProduto).Id == 0L) ? "INCLUIU" : "ALTEROU");
+ Produto value = await _servico.Save(SelectedProduto);
+ if (!_servico.Sucesso)
+ {
+ return null;
+ }
+ RegistrarAcao(acao + " PRODUTO \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)10, $"PRODUTO \"{value.Nome}\", ID: {((DomainBase)value).Id}");
+ if (Produtos.Any((Produto x) => ((DomainBase)x).Id == ((DomainBase)value).Id))
+ {
+ DomainBase.Copy<Produto, Produto>(Produtos.First((Produto x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value);
+ }
+ else
+ {
+ Produtos.Add(value);
+ }
+ if (ProdutosFiltrados.Any((Produto x) => ((DomainBase)x).Id == ((DomainBase)value).Id))
+ {
+ DomainBase.Copy<Produto, Produto>(ProdutosFiltrados.First((Produto x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value);
+ }
+ else
+ {
+ ProdutosFiltrados.Add(value);
+ }
+ ProdutosFiltrados = new ObservableCollection<Produto>(ProdutosFiltrados);
+ Recursos.Produtos = Produtos.OrderBy((Produto x) => x.Nome).ToList();
+ WorkOnSelectedProduto(value, registrar: false);
+ Alterar(alterar: false);
+ ToggleSnackBar("PRODUTO SALVO COM SUCESSO");
+ return null;
+ }
+
+ public void CancelarAlteracao()
+ {
+ if (CancelProduto != null && Produtos.Any((Produto x) => ((DomainBase)x).Id == ((DomainBase)CancelProduto).Id))
+ {
+ DomainBase.Copy<Produto, Produto>(Produtos.First((Produto x) => ((DomainBase)x).Id == ((DomainBase)CancelProduto).Id), CancelProduto);
+ if (ProdutosFiltrados.Count > 0 && ProdutosFiltrados.Any((Produto x) => ((DomainBase)x).Id == ((DomainBase)CancelProduto).Id))
+ {
+ DomainBase.Copy<Produto, Produto>(ProdutosFiltrados.First((Produto x) => ((DomainBase)x).Id == ((DomainBase)CancelProduto).Id), CancelProduto);
+ }
+ else
+ {
+ ProdutosFiltrados.Add(CancelProduto);
+ }
+ ProdutosFiltrados = new ObservableCollection<Produto>(ProdutosFiltrados);
+ SelectedProduto = ProdutosFiltrados.First((Produto x) => ((DomainBase)x).Id == ((DomainBase)CancelProduto).Id);
+ }
+ else
+ {
+ Incluir();
+ }
+ Alterar(alterar: false);
+ }
+
+ private void WorkOnSelectedProduto(Produto value, bool registrar = true)
+ {
+ //IL_002e: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0069: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0070: Invalid comparison between Unknown and I4
+ //IL_00d6: Unknown result type (might be due to invalid IL or missing references)
+ CancelProduto = (Produto)((value == null || ((DomainBase)value).Id == 0L) ? ((object)CancelProduto) : ((object)(Produto)((DomainBase)value).Clone()));
+ if (value == null || ((DomainBase)value).Id == 0L || (LastAccessId == ((DomainBase)value).Id && (int)LastAccessTela == 10))
+ {
+ return;
+ }
+ if (registrar)
+ {
+ RegistrarAcao("ACESSOU PRODUTO \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)10, $"ID PRODUTO: {((DomainBase)value).Id}");
+ }
+ LastAccessId = ((DomainBase)value).Id;
+ LastAccessTela = (TipoTela)10;
+ Produto selectedProduto = SelectedProduto;
+ if (((selectedProduto != null) ? new long?(((DomainBase)selectedProduto).Id) : null) != ((DomainBase)value).Id)
+ {
+ SelectedProduto = ((IEnumerable<Produto>)ProdutosFiltrados).FirstOrDefault((Func<Produto, bool>)((Produto x) => ((DomainBase)x).Id == ((DomainBase)value).Id));
+ }
+ }
+
+ public void Incluir()
+ {
+ //IL_0001: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0006: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0012: Expected O, but got Unknown
+ SelectedProduto = new Produto
+ {
+ Ativo = true
+ };
+ Alterar(alterar: true);
+ }
+
+ internal async Task<List<Produto>> Filtrar(string value)
+ {
+ return await Task.Run(() => FiltrarProduto(value));
+ }
+
+ public List<Produto> FiltrarProduto(string filter)
+ {
+ ProdutosFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection<Produto>(Produtos) : new ObservableCollection<Produto>(from x in Produtos
+ where ValidationHelper.RemoveDiacritics(x.Nome.Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter))
+ orderby x.Ativo descending, x.Nome
+ select x));
+ SelectedProduto = ProdutosFiltrados.FirstOrDefault();
+ return ProdutosFiltrados.ToList();
+ }
+
+ public void SelecionaProduto(Produto produto)
+ {
+ SelectedProduto = produto;
+ }
+}