using Gestor.Model.Attributes; using Gestor.Model.Domain.Generic; using Gestor.Model.Helper; using Gestor.Model.Resources; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Threading; namespace Gestor.Model.Domain.Seguros { public class Produto : DomainBase, IDomain, INotifyPropertyChanged { private bool _selecionado; private string _nome; [Log(true)] public bool Ativo { get; set; } [Description("PRODUTO")] [Log(true)] [Name(true)] public string Nome { get { string str = this._nome; if (str != null) { return str.ToUpper(); } return null; } set { this._nome = value; } } public bool Selecionado { get { return this._selecionado; } set { if (value == this._selecionado) { return; } this._selecionado = value; this.OnPropertyChanged("Selecionado"); } } [JsonIgnore] public Func>> ValidationEvent { get { Produto produto = this; return new Func>>(produto.Validate); } } public Produto() { } public List Log() { return new List() { new TupleList() { Tuples = new ObservableCollection>() { new Tuple("NOME", (string.IsNullOrWhiteSpace(this.Nome) ? "" : this.Nome), ""), new Tuple("ATIVO", (this.Ativo ? "SIM" : "NÃO"), "") } } }; } protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler propertyChangedEventHandler = this.PropertyChanged; if (propertyChangedEventHandler == null) { return; } propertyChangedEventHandler(this, new PropertyChangedEventArgs(propertyName)); } public List> Validate() { List> keyValuePairs = ValidationHelper.AddValue(); if (string.IsNullOrWhiteSpace(this.Nome)) { keyValuePairs.AddValue("Nome", Messages.Obrigatorio, true); } else if (this.Nome.Length > 60) { keyValuePairs.AddValue("Nome", string.Format(Messages.MaiorQueLimite, 60), true); } return keyValuePairs; } public event PropertyChangedEventHandler PropertyChanged; } }