/// <summary>
        /// Verifica a validade do Token
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public static Retorno Validade(string token)
        {
            try
            {
                ModelApiUnes _db = new ModelApiUnes();
                Dictionary <string, string> queryString = new Dictionary <string, string>();
                queryString.Add("104", token);
                queryString.Add("102", DateTime.Now.ToString("yyyyMMdd") + "<");
                Retorno dados = Get("", 0, 104, 0, 0, 0, queryString, _db);

                if (dados.Registros.Count > 0)
                {
                    TB_UNIVERSIDADE_TOKEN_API param = (TB_UNIVERSIDADE_TOKEN_API)dados.Registros[0];
                    param.UTA_DT_VALIDADE = DateTime.Now.AddDays(1);
                    _db = new ModelApiUnes();
                    Update(token, param, _db);
                }

                return((dados.Registros.Count > 0) ? dados : new Retorno());
            }
            catch (Exception e)
            {
                throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
            }
        }
        /// <summary>
        /// Autentica e Gera novo Token
        /// </summary>
        /// <param name="preToken"></param>
        /// <param name="usuIdUsuario"></param>
        /// <returns></returns>
        public static Retorno NewToken(string preToken, int usuIdUsuario)
        {
            try
            {
                ModelApiUnes _db   = new ModelApiUnes();
                string       token = Token.GetUniqueKey(preToken);
                TB_UNIVERSIDADE_TOKEN_API tokenApi = new TB_UNIVERSIDADE_TOKEN_API();
                tokenApi.USU_ID_USUARIO = usuIdUsuario;
                tokenApi.UTA_DT_GERACAO = DateTime.Now;

                string horasLifeCircleString = _db.Database.SqlQuery <string>("SELECT PAR_TX FROM dbo.TB_PARAMETRO WHERE PAR_ID = 4").FirstOrDefault <string>();
                double horasLifeCircle       = Convert.ToDouble(horasLifeCircleString);

                // Adiciona tempo de vida para a Validade do Token
                tokenApi.UTA_DT_VALIDADE = DateTime.Now.AddHours(horasLifeCircle);// .AddDays(1);
                tokenApi.UTA_TX_TOKEN    = token;
                Int64 idToken = Add("", tokenApi, _db);

                Dictionary <string, string> queryString = new Dictionary <string, string>();
                queryString.Add("100", idToken.ToString());
                Retorno dados = Get(token, 2, 100, 0, 0, 0, queryString, _db);

                return((dados.Registros.Count > 0) ? dados : new Retorno());
            }
            catch (Exception e)
            {
                throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
            }
        }
        /// <summary>
        /// Adiciona nova TB_UNIVERSIDADE_TOKEN_API
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static Int64 Add(string token, TB_UNIVERSIDADE_TOKEN_API param, ModelApiUnes _dbContext = null)
        {
            ModelApiUnes _db;

            if (_dbContext == null)
            {
                _db = new ModelApiUnes();
            }
            else
            {
                _db = _dbContext;
            }

            using (var transaction = _db.Database.BeginTransaction())
            {
                try
                {
                    _db.TB_UNIVERSIDADE_TOKEN_API.Add(param);
                    _db.SaveChanges();
                    transaction.Commit();
                    return(param.UTA_ID_TOKEN_API);
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
                }
                finally
                {
                    if (_dbContext == null)
                    {
                        // Fecha conexão
                        transaction.Dispose();
                        _db.Database.Connection.Close();
                        _db.Dispose();
                    }
                }
            }
        }
        /// <summary>
        /// Altera TB_UNIVERSIDADE_TOKEN_API
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static void Update(string token, TB_UNIVERSIDADE_TOKEN_API param, ModelApiUnes _dbContext = null)
        {
            ModelApiUnes _db;

            if (_dbContext == null)
            {
                _db = new ModelApiUnes();
            }
            else
            {
                _db = _dbContext;
            }

            using (var transaction = _db.Database.BeginTransaction())
            {
                try
                {
                    TB_UNIVERSIDADE_TOKEN_API value = _db.TB_UNIVERSIDADE_TOKEN_API
                                                      .Where(e => e.UTA_ID_TOKEN_API.Equals(param.UTA_ID_TOKEN_API))
                                                      .First <TB_UNIVERSIDADE_TOKEN_API>();



                    if (param.UTA_ID_TOKEN_API != value.UTA_ID_TOKEN_API)
                    {
                        value.UTA_ID_TOKEN_API = param.UTA_ID_TOKEN_API;
                    }
                    if (param.USU_ID_USUARIO != value.USU_ID_USUARIO)
                    {
                        value.USU_ID_USUARIO = param.USU_ID_USUARIO;
                    }
                    if (param.UTA_DT_VALIDADE != null && param.UTA_DT_VALIDADE != value.UTA_DT_VALIDADE)
                    {
                        value.UTA_DT_VALIDADE = param.UTA_DT_VALIDADE;
                    }
                    if (param.UTA_DT_GERACAO != null && param.UTA_DT_GERACAO != value.UTA_DT_GERACAO)
                    {
                        value.UTA_DT_GERACAO = param.UTA_DT_GERACAO;
                    }
                    if (param.UTA_TX_TOKEN != null && param.UTA_TX_TOKEN != value.UTA_TX_TOKEN)
                    {
                        value.UTA_TX_TOKEN = param.UTA_TX_TOKEN;
                    }
                    _db.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
                }
                finally
                {
                    if (_dbContext == null)
                    {
                        // Fecha conexão
                        transaction.Dispose();
                        _db.Database.Connection.Close();
                        _db.Dispose();
                    }
                }
            }
        }