Пример #1
0
        public void ReenviarCorreo()
        {
            string order = "ord_2oWfa4A6DPweWLKre";

            BusCorreo busCorreo = new BusCorreo();
            var       res       = busCorreo.BReenviarCorreo(order);
        }
Пример #2
0
        public IMDResponse<bool> CReenviarCorreo([FromUri]string psOrderId)
        {
            IMDResponse<bool> response = new IMDResponse<bool>();

            string metodo = nameof(this.CReenviarCorreo);
            logger.Info(IMDSerialize.Serialize(67823458630291, $"Inicia {metodo}([FromUri]string psOrderId)", psOrderId));

            try
            {
                BusCorreo busCorreo = new BusCorreo();
                response = busCorreo.BReenviarCorreo(psOrderId);
            }
            catch (Exception ex)
            {
                response.Code = 67823458631068;
                response.Message = "Ocurrió un error inesperado en el servicio al reenviar el correo.";

                logger.Error(IMDSerialize.Serialize(67823458631068, $"Error en {metodo}([FromUri]string psOrderId): {ex.Message}", psOrderId, ex, response));
            }
            return response;
        }
Пример #3
0
        /// <summary>
        /// Envía las credenciales al correo del usuario
        /// </summary>
        /// <param name="psCorreo"></param>
        /// <param name="enumEmail"></param>
        /// <param name="users"></param>
        /// <returns></returns>
        public IMDResponse <bool> BEnviarCredenciales(string psCorreo, EnumEmailActionPass enumEmail, List <string> users = null)
        {
            IMDResponse <bool> response = new IMDResponse <bool>();

            string metodo = nameof(this.BEnviarCredenciales);

            logger.Info(IMDSerialize.Serialize(67823458631845, $"Inicia {metodo}(string psCorreo)", psCorreo));

            try
            {
                if (string.IsNullOrWhiteSpace(psCorreo))
                {
                    response.Code    = -23746876326;
                    response.Message = "El correo electrónico es requerido.";
                    return(response);
                }

                //Obtener datos del usuario
                IMDResponse <List <EntUsuario> > resGetUser = this.BObtenerUsuario(psCorreo: psCorreo);
                if (resGetUser.Code != 0)
                {
                    return(resGetUser.GetResponse <bool>());
                }

                if (resGetUser.Result.Count < 1)
                {
                    response.Code    = -8767263467;
                    response.Message = "El correo electrónico no se encuentra registrado en el sistema";
                    return(response);
                }

                string            cuenta       = string.Empty;
                List <EntUsuario> currentUsers = resGetUser.Result;
                if (users != null)
                {
                    currentUsers = currentUsers.Where(x => users.Contains(x.sUsuario)).ToList();
                }

                //Armar la lista de usuarios enlazados al correo electrónico
                foreach (EntUsuario user in currentUsers)
                {
                    if (user.bAcceso == null || user.bAcceso == false || !user.bActivo || user.bBaja)
                    {
                        continue;
                    }
                    string pass = this.BDeCodePassWord(user.sPassword);
                    cuenta += $"<tr class=\"font-table bold small center table-border-b\"><td>{user.sTipoCuenta}</td><td>{user.sUsuario}</td><td>{pass}</td></tr>";
                }

                if (string.IsNullOrWhiteSpace(cuenta))
                {
                    response.Code    = -834787687623;
                    response.Message = "No se encontraron cuentas activas para el usuario.";
                    return(response);
                }

                EntUsuario entUsuario = resGetUser.Result.First();

                //Armar asunto y cupero del correo
                string asunto = string.Empty;
                string titulo = string.Empty;
                string header = string.Empty;
                string footer = string.Empty;
                switch (enumEmail)
                {
                case EnumEmailActionPass.Crear:
                    asunto = "Meditoc - Credenciales de acceso";
                    titulo = "Bienvenido a Meditoc Call Center";
                    header = "Se han creado las credenciales de acceso al portal de MeditocCallCenter:";
                    footer = "Le sugerimos cambiar la contraseña en su próximo ingreso al portal de MeditocCallCenter.";
                    break;

                case EnumEmailActionPass.Modificar:
                    asunto = "Meditoc - Cambio en las credenciales";
                    titulo = "Modificación en las credenciales de acceso";
                    header = "Se han modificado las credenciales de acceso al portal de MeditocCallCenter:";
                    footer = "Si no realizó esta acción, cambie sus credenciales en su próximo ingreso o contacte a su administrador.";
                    break;

                case EnumEmailActionPass.Recuperar:
                    asunto = "Meditoc - Recuperación de cuenta";
                    titulo = "Recuperación de la cuenta";
                    header = "Se ha solicitado la recuperación de las credenciales de acceso al portal de MeditocCallCenter:";
                    footer = "Le sugerimos cambiar la contraseña en su próximo ingreso al portal de MeditocCallCenter.";
                    break;

                default:
                    break;
                }

                //Preparar correo
                string plantillaBody = "<!DOCTYPE html><html><head><meta charset=\"utf-8;\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /><link href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap\" rel=\"stylesheet\" /><style>body {font-family: Roboto, \"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif;margin: 0;}.center {text-align: center !important;}.light {font-weight: 300;}.normal {font-weight: normal;}.bold {font-weight: 500;}.small {font-size: 12px;}.large {font-size: 15px;}.font-default {color: #707070;}.font-secondary {color: #115c8a;}.font-unset {color: #ffffff;}.font-table {color: #878787;}.table {margin: auto;width: 100%;max-width: 800px;border: 1px solid #dddddd;border-spacing: 0px;border-collapse: 0px;}.table td {padding: 6px 0px;}.logo-head {background-color: #11b6ca;padding: 5px 0px;}.table-content {margin: auto;width: 90%;border-collapse: collapse;}.table-detail {margin: auto;width: 100%;border-collapse: collapse;}.table-detail td {padding: 8px;}.head-detail {background-color: #115c8a;}.divider {height: 1px;border: 0;background-color: #989898;}.link {text-decoration: none;}.link:hover {text-decoration: underline;}.link-none {text-decoration: none;}.table-border-b td {border-bottom: 1px solid #ccc;}</style></head><body><table class=\"table\"><tr><td class=\"logo-head center\"><img alt=\"logo-meditoc\" src=\"sLogoMeditoc\" height=\"50px\" /></td></tr><tr><td><table class=\"table-content\"><tr><td class=\"center\"><span class=\"font-default bold large\">data.titulo</span></td></tr><tr class=\"center\"><td><span class=\"font-default normal large\">data.header</span></td></tr><tr><td><table class=\"table-detail\"><tr class=\"head-detail font-unset bold small center\"><td colspan=\"3\">ACCESO</td></tr><tr><td><table class=\"table-detail\"><thead><tr class=\"font-table bold small font-secondary\"><th>Tipo de cuenta</th><th>Usuario</th><th>Contraseña</th></tr></thead><tbody>data.cuenta</tbody></table></td></tr></table></td></tr><tr class=\"center\"><td><p><span class=\"font-default normal large\">data.footer</span></p></td></tr><tr><td><hr class=\"divider\" /></td></tr><tr><td><span class=\"font-default light small\">De conformidad con la ley federal de protección de datos personales en posesión delos particulares, ponemos a su disposición nuestro&nbsp;<a href=\"sAvisoPrivacidad\" class=\"link font-secondary normal\"> Aviso de Privacidad </a>&nbsp;y&nbsp;<a href=\"sTerminosCondiciones\" class=\"link font-secondary normal\"> Términos y Condiciones. </a></span></td></tr></table></td></tr></table></body></html>";

                plantillaBody = plantillaBody.Replace("data.cuenta", cuenta);
                plantillaBody = plantillaBody.Replace("data.titulo", titulo);
                plantillaBody = plantillaBody.Replace("data.header", header);
                plantillaBody = plantillaBody.Replace("data.footer", footer);
                plantillaBody = plantillaBody.Replace("sLogoMeditoc", ConfigurationManager.AppSettings["sLogoMeditoc"]);
                plantillaBody = plantillaBody.Replace("sAvisoPrivacidad", ConfigurationManager.AppSettings["sAvisoDePrivacidad"]);
                plantillaBody = plantillaBody.Replace("sTerminosCondiciones", ConfigurationManager.AppSettings["sTerminosYCondiciones"]);

                //Enviar correo
                BusCorreo busCorreo = new BusCorreo();
                busCorreo.BEnviarEmail("", "", "", asunto, plantillaBody, entUsuario.sCorreo, "", "");

                response.Code    = 0;
                response.Result  = true;
                response.Message = "Las credenciales se han enviado al correo proporcionado.";
            }
            catch (Exception ex)
            {
                response.Code    = 67823458632622;
                response.Message = "Ocurrió un error inesperado al recuperar la contraseña. Intenta más tarde.";

                logger.Error(IMDSerialize.Serialize(67823458632622, $"Error en {metodo}(string psCorreo): {ex.Message}", psCorreo, ex, response));
            }
            return(response);
        }