using Gestor.Model.Common; using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Net; using System.Net.Sockets; using System.Reflection; using System.Runtime.CompilerServices; namespace Gestor.Model.Validation { public static class Funcoes { public static System.Diagnostics.Stopwatch Stopwatch; public static DateTime? StartTime; public static int GetAge(DateTime birth) { DateTime date = Funcoes.GetNetworkTime().Date; int year = date.Year - birth.Year; if (birth > date.AddYears(-year)) { year--; } return year; } public static string GetDescription(this Enum genericEnum) { if (genericEnum == null) { return ""; } MemberInfo[] member = genericEnum.GetType().GetMember(genericEnum.ToString()); if (member.Length == 0) { return genericEnum.ToString(); } object[] customAttributes = member[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (!customAttributes.Any()) { return genericEnum.ToString(); } return ((DescriptionAttribute)customAttributes.ElementAt(0)).Description; } public static DateTime GetNetworkTime() { DateTime value; try { if (!Funcoes.StartTime.HasValue) { byte[] numArray = new byte[48]; numArray[0] = 27; IPEndPoint pEndPoint = new IPEndPoint(((IEnumerable)Dns.GetHostEntry("time.google.com").AddressList).First((IPAddress a) => a.AddressFamily == AddressFamily.InterNetwork), 123); using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { socket.Connect(pEndPoint); socket.ReceiveTimeout = 3000; socket.Send(numArray); socket.Receive(numArray); socket.Close(); } ulong num = (ulong)numArray[40] << 24 | (ulong)numArray[41] << 16 | (ulong)numArray[42] << 8 | (ulong)numArray[43]; ulong num1 = (ulong)numArray[44] << 24 | (ulong)numArray[45] << 16 | (ulong)numArray[46] << 8 | (ulong)numArray[47]; ulong num2 = num * (long)1000 + num1 * (long)1000 / 4294967296L; DateTime dateTime = new DateTime(1900, 1, 1); dateTime = dateTime.AddMilliseconds((double)num2); Funcoes.StartTime = new DateTime?(dateTime.ToLocalTime()); Funcoes.Stopwatch = System.Diagnostics.Stopwatch.StartNew(); value = Funcoes.StartTime.Value; } else { value = Funcoes.StartTime.Value; value = value.AddMilliseconds((double)Funcoes.Stopwatch.ElapsedMilliseconds); } } catch (Exception exception) { Funcoes.StartTime = new DateTime?(DateTime.Now); Funcoes.Stopwatch = System.Diagnostics.Stopwatch.StartNew(); value = Funcoes.StartTime.Value; } return value; } public static ParentescoVinculo? ParentescoInverso(ParentescoVinculo? parentesco) { if (parentesco.HasValue) { switch (parentesco.GetValueOrDefault()) { case ParentescoVinculo.MaePai: { return new ParentescoVinculo?(ParentescoVinculo.Filho); } case ParentescoVinculo.Filho: { return new ParentescoVinculo?(ParentescoVinculo.MaePai); } case ParentescoVinculo.Avo: { return new ParentescoVinculo?(ParentescoVinculo.Neto); } case ParentescoVinculo.Neto: { return new ParentescoVinculo?(ParentescoVinculo.Avo); } case ParentescoVinculo.Tio: { return new ParentescoVinculo?(ParentescoVinculo.Sobrinho); } case ParentescoVinculo.Sobrinho: { return new ParentescoVinculo?(ParentescoVinculo.Tio); } case ParentescoVinculo.Bisavo: { return new ParentescoVinculo?(ParentescoVinculo.Bisneto); } case ParentescoVinculo.Bisneto: { return new ParentescoVinculo?(ParentescoVinculo.Bisavo); } case ParentescoVinculo.Sogro: { return new ParentescoVinculo?(ParentescoVinculo.Genro); } case ParentescoVinculo.Genro: { return new ParentescoVinculo?(ParentescoVinculo.Sogro); } case ParentescoVinculo.MadrastaPadrasto: { return new ParentescoVinculo?(ParentescoVinculo.Enteado); } case ParentescoVinculo.Enteado: { return new ParentescoVinculo?(ParentescoVinculo.MadrastaPadrasto); } case ParentescoVinculo.Proprietario: { return new ParentescoVinculo?(ParentescoVinculo.Propriedade); } case ParentescoVinculo.Propriedade: { return new ParentescoVinculo?(ParentescoVinculo.Proprietario); } case ParentescoVinculo.Contratante: { return new ParentescoVinculo?(ParentescoVinculo.Funcionario); } case ParentescoVinculo.Funcionario: { return new ParentescoVinculo?(ParentescoVinculo.Contratante); } } } return parentesco; } } }