Example #1
0
        public UrlTemporal ComprobarUrlTemporal(UrlTemporal url)
        {
            // UrlTemporal/"IdEmpresa"/"id"/"OtroIDDeSerNecesario"/
            //decodificar guid para ver el idEmpresa a consultar
            var urlValidaRjindael  = ConvertirCaracteresOriginales(url.GuidUrl);
            var stringDecodificado = RijndaelSimple.Decrypt
                                     (
                urlValidaRjindael,
                passPhrase,
                saltValue,
                hashAlgorithm,
                passwordIterations,
                initVector,
                keySize
                                     );

            string[] separadas = stringDecodificado.Split('/');
            url.IdEmpresa = Convert.ToInt16(separadas[2]);
            switch (separadas[0])
            {
            case "CambioPassword":
                url.TipoUrlTemporal = TipoUrlTemporal.CambioPassword;
                break;

            case "ExpedienteDigital":
                url.TipoUrlTemporal = TipoUrlTemporal.ExpedienteDigital;
                break;
            }
            //la linea anterior depende de que tipo de liga sea
            //comprobar que el guid efectivamente existe en la base de datos
            url = iUrlTemporalRepositorio.EsUrlValida(url);
            if (url.IdUrl == 0)
            {
                url = iUrlTemporalRepositorio.InactivarUrl(url);
                throw new ErrorUrlTemporal();
            }
            url.Ids = new List <int>();
            for (int i = 3; i < separadas.Count(); i++)
            {
                url.Ids.Add(Convert.ToInt32(separadas[i]));
            }
            //marcar como url usada.
            url = iUrlTemporalRepositorio.InactivarUrl(url);
            return(url);
            //en caso que no exista en base de datos o haya algo malo con el guid
            //enviar excepciones
        }