Ejemplo n.º 1
0
        /// <summary>
        /// Registra Plantilla de Notificaciones
        /// </summary>
        /// <param name="plantillaNotificacionRequest">Plantilla Notificacion Request</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public static PlantillaNotificacionEntity RegistrarPlantillaNotificacion(PlantillaNotificacionRequest plantillaNotificacionRequest)
        {
            PlantillaNotificacionEntity plantillaNotificacionEntity = new PlantillaNotificacionEntity();

            if (plantillaNotificacionRequest.CodigoPlantillaNotificacion != null)
            {
                plantillaNotificacionEntity.CodigoPlantillaNotificacion = new Guid(plantillaNotificacionRequest.CodigoPlantillaNotificacion);
            }
            else
            {
                Guid code;
                code = Guid.NewGuid();
                plantillaNotificacionEntity.CodigoPlantillaNotificacion = code;
            }

            plantillaNotificacionEntity.CodigoSistema          = new Guid(plantillaNotificacionRequest.CodigoSistema);
            plantillaNotificacionEntity.CodigoTipoNotificacion = plantillaNotificacionRequest.CodigoTipoNotificacion;
            plantillaNotificacionEntity.Asunto                 = plantillaNotificacionRequest.Asunto;
            plantillaNotificacionEntity.IndicadorActiva        = (bool)plantillaNotificacionRequest.IndicadorActiva;
            plantillaNotificacionEntity.Contenido              = plantillaNotificacionRequest.Contenido;
            plantillaNotificacionEntity.CodigoTipoDestinatario = plantillaNotificacionRequest.CodigoTipoDestinatario;
            plantillaNotificacionEntity.Destinatario           = plantillaNotificacionRequest.Destinatario;
            plantillaNotificacionEntity.DestinatarioCopia      = plantillaNotificacionRequest.DestinatarioCopia;
            plantillaNotificacionEntity.EstadoRegistro         = plantillaNotificacionRequest.EstadoRegistro;


            return(plantillaNotificacionEntity);
        }
Ejemplo n.º 2
0
        public void EnviarNotificacion(string tipoNotificacion, string descripcionTipo, string asunto, string nombreDestinatario, string correoDestinatario, string textoAdicional = null)
        {
            var asuntoConcatenado        = string.Empty;
            ParametrosNotificacion datos = new ParametrosNotificacion();

            datos.TipoNotificacion = tipoNotificacion;
            datos.variables        = new Dictionary <string, string>();

            PlantillaNotificacionRequest filtro = new PlantillaNotificacionRequest();

            filtro.CodigoSistema          = ConfigurationManager.AppSettings["CODIGO_SISTEMA"].ToString();
            filtro.CodigoTipoNotificacion = datos.TipoNotificacion;

            var datosPlantilla = plantillaNotificacionService.BuscarPlantillaNotificacion(filtro).Result.FirstOrDefault();

            if (datosPlantilla != null)
            {
                var profile = politicaService.ListaCuentaNotificacionSGC(null, "3").Result.FirstOrDefault();
                datos.profileCorreo = (profile != null ? profile.Valor.ToString() : "");

                var urlSistema = politicaService.ListaUrlSistemas(null, "3").Result.FirstOrDefault().Valor.ToString();
                urlSistema = string.Format("{0}{1}{2}{3}{4}{5}{6}", "<a href='", urlSistema,
                                           DatosConstantes.UrlOpcionesSistema.RutaConsulta, "'>", urlSistema,
                                           DatosConstantes.UrlOpcionesSistema.RutaConsulta, "</a>");

                if (tipoNotificacion == DatosConstantes.TipoNotificacion.RespuestaConsultas)
                {
                    asuntoConcatenado = datosPlantilla.Asunto;

                    datos.variables.Add("@para", nombreDestinatario);
                    datos.variables.Add("@asunto_consulta", asunto);
                    datos.variables.Add("@url_opcion_sistema", urlSistema);
                    datos.textoNotificar = datosPlantilla.Contenido;
                }
                else
                {
                    asuntoConcatenado = datosPlantilla.Asunto + " " + asunto;

                    datos.variables.Add("@para", nombreDestinatario);
                    datos.variables.Add("@tipo_consulta", descripcionTipo);
                    datos.variables.Add("@url_opcion_sistema", urlSistema);
                    datos.textoNotificar = datosPlantilla.Contenido;
                }


                foreach (var item in datos.variables)
                {
                    datos.textoNotificar = datos.textoNotificar.Replace(item.Key, item.Value);
                }
            }
            consultaLogicRepository.NotificarConsulta(asuntoConcatenado, datos.textoNotificar, correoDestinatario, null, datos.profileCorreo);
        }
        /// <summary>
        /// Realiza la busqueda de Plantilla Notificación
        /// </summary>
        /// <param name="filtro">Parametros a buscar</param>
        /// <returns>Lista de Plantillas de Notificación</returns>
        public JsonResult BuscarBandejaPlantillaNotificacion(PlantillaNotificacionRequest filtro)
        {
            var cuenta = HttpGyMSessionContext.CurrentAccount();

            if (cuenta != null)
            {
                filtro.CodigoSistema = cuenta.CodigoSistema;
            }
            filtro.IndicadorActiva = string.IsNullOrEmpty(filtro.IndicadorActivaFiltro) ? (bool?)null : filtro.IndicadorActivaFiltro.Equals("1");
            var resultado = plantillaNotificacion.BuscarPlantillaNotificacion(filtro);

            return(Json(resultado));
        }
        /// <summary>
        /// Método que registra plantillas de notificación
        /// </summary>
        /// <param name="data">Información de la plantilla</param>
        /// <returns>Resultado de operación</returns>
        public JsonResult RegistraPlantillaNotificacion(PlantillaNotificacionRequest data)
        {
            if (string.IsNullOrEmpty(data.CodigoSistema))
            {
                var cuenta = HttpGyMSessionContext.CurrentAccount();
                if (cuenta != null)
                {
                    data.CodigoSistema = cuenta.CodigoSistema;
                }
            }
            var resultado = plantillaNotificacion.RegistrarPlantillaNotificacion(data);

            return(Json(resultado));
        }
        /// <summary>
        /// Registra Plantilla Notificación
        /// </summary>
        /// <param name="data">data</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public ProcessResult <PlantillaNotificacionRequest> RegistrarPlantillaNotificacion(PlantillaNotificacionRequest data)
        {
            ProcessResult <PlantillaNotificacionRequest> resultado = new ProcessResult <PlantillaNotificacionRequest>();

            try
            {
                PlantillaNotificacionEntity entidad = PlantillaNotificacionAdapter.RegistrarPlantillaNotificacion(data);
                if (data.CodigoPlantillaNotificacion == null)
                {
                }
                else
                {
                    var entidadSincronizar = plantillaNotificacionEntityRepository.GetById(entidad.CodigoPlantillaNotificacion);
                    entidadSincronizar.CodigoPlantillaNotificacion = entidad.CodigoPlantillaNotificacion;
                    entidadSincronizar.CodigoSistema          = entidad.CodigoSistema;
                    entidadSincronizar.CodigoTipoNotificacion = entidad.CodigoTipoNotificacion;
                    entidadSincronizar.Asunto                 = entidad.Asunto;
                    entidadSincronizar.IndicadorActiva        = entidad.IndicadorActiva;
                    entidadSincronizar.Contenido              = entidad.Contenido;
                    entidadSincronizar.CodigoTipoDestinatario = entidad.CodigoTipoDestinatario;
                    entidadSincronizar.Destinatario           = entidad.Destinatario;
                    entidadSincronizar.DestinatarioCopia      = entidad.DestinatarioCopia;
                    entidadSincronizar.EstadoRegistro         = entidad.EstadoRegistro;

                    plantillaNotificacionEntityRepository.Editar(entidadSincronizar);
                }

                plantillaNotificacionEntityRepository.GuardarCambios();
                resultado.Result = data;
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <PlantillaNotificacionService>(e);
            }

            return(resultado);
        }
        /// <summary>
        /// Realiza la busqueda de Plantilla Notificación
        /// </summary>
        /// <param name="filtro">Parametros a buscar</param>
        /// <returns>Lista de Plantillas de Notificación</returns>
        public ProcessResult <List <PlantillaNotificacionResponse> > BuscarPlantillaNotificacion(PlantillaNotificacionRequest filtro)
        {
            ProcessResult <List <PlantillaNotificacionResponse> > resultado = new ProcessResult <List <PlantillaNotificacionResponse> >();

            try
            {
                var codigoPlantillaNotificacion = (filtro.CodigoPlantillaNotificacion != null && filtro.CodigoPlantillaNotificacion != "") ? new Guid(filtro.CodigoPlantillaNotificacion) : (Guid?)null;
                var codigoSistema = (filtro.CodigoSistema != null && filtro.CodigoSistema != "") ? new Guid(filtro.CodigoSistema) : (Guid?)null;

                var lista = plantillaNotificacionLogicRepository.BuscarPlantillaNotificacion(
                    codigoPlantillaNotificacion,
                    codigoSistema,
                    filtro.CodigoTipoNotificacion,
                    filtro.Asunto,
                    filtro.IndicadorActiva,
                    filtro.Contenido,
                    filtro.EstadoRegistro);

                resultado.Result = new List <PlantillaNotificacionResponse>();

                foreach (var item in lista)
                {
                    var PlantillaNotificacion = PlantillaNotificacionAdapter.ObtenerPlantillaNotificacionResponse(item);
                    resultado.Result.Add(PlantillaNotificacion);
                }
            }
            catch (Exception e)
            {
                resultado.Result    = new List <PlantillaNotificacionResponse>();
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <PlantillaNotificacionService>(e);
            }

            return(resultado);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Reenvia Consulta
        /// </summary>
        /// <param name="data"></param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public ProcessResult <ConsultaRequest> ReenviarConsulta(ConsultaRequest data)
        {
            ProcessResult <ConsultaRequest> resultado = new ProcessResult <ConsultaRequest>();

            try
            {
                ConsultaEntity entidad = ConsultaAdapter.ObtenerConsultaEntity(data);
                entidad.EstadoConsulta = DatosConstantes.EstadoConsulta.Enviado;
                entidad.FechaEnvio     = DateTime.Now;

                //Obtenemos la consulta original
                var entidadSincronizar = consultaEntityRepository.GetById(new Guid(data.CodigoConsultaRelacionado));

                entidad.Asunto = "RE: " + entidadSincronizar.Asunto;
                var nombreRemitenteOriginal = trabajadorService.BuscarTrabajador(new TrabajadorRequest()
                {
                    CodigoTrabajador = entidadSincronizar.CodigoRemitente
                }).Result.FirstOrDefault().NombreCompleto;
                entidad.Contenido                 = data.Adicional + "</br></br> Enviado por " + nombreRemitenteOriginal + " el " + entidadSincronizar.FechaEnvio.Value.ToString("dd/M/yyyy") + ":</br></br>" + entidadSincronizar.Contenido;
                entidad.Tipo                      = entidadSincronizar.Tipo;
                entidad.CodigoDestinatario        = new Guid(data.CodigoDestinatario);
                entidad.CodigoRemitente           = new Guid(data.CodigoRemitente);
                entidad.CodigoUnidadOperativa     = entidadSincronizar.CodigoUnidadOperativa;
                entidad.CodigoArea                = entidadSincronizar.CodigoArea;
                entidad.CodigoConsultaRelacionado = new Guid(data.CodigoConsultaRelacionado);
                entidad.CodigoConsultaOriginal    = (entidadSincronizar.CodigoConsultaOriginal == null ? entidadSincronizar.CodigoConsulta : entidadSincronizar.CodigoConsultaOriginal);
                entidad.VistoRemitenteOriginal    = true;
                consultaEntityRepository.Insertar(entidad);
                consultaEntityRepository.GuardarCambios();

                //Cambiamos el estado en la consulta original a reenviado
                entidadSincronizar.EstadoConsulta = DatosConstantes.EstadoConsulta.Reenviado;
                consultaEntityRepository.Editar(entidadSincronizar);
                consultaEntityRepository.GuardarCambios();

                //Enviar Correo
                ParametrosNotificacion datos = new ParametrosNotificacion();
                datos.TipoNotificacion = DatosConstantes.TipoNotificacion.RegistroConsultas;
                datos.variables        = new Dictionary <string, string>();

                PlantillaNotificacionRequest filtro = new PlantillaNotificacionRequest();
                filtro.CodigoSistema          = ConfigurationManager.AppSettings["CODIGO_SISTEMA"].ToString();
                filtro.CodigoTipoNotificacion = datos.TipoNotificacion;

                var datosPlantilla = plantillaNotificacionService.BuscarPlantillaNotificacion(filtro).Result.FirstOrDefault();

                if (datosPlantilla != null)
                {
                    var profile = politicaService.ListaCuentaNotificacionSGC(null, "3").Result.FirstOrDefault();
                    datos.profileCorreo = (profile != null ? profile.Valor.ToString() : "");

                    var urlSistema = politicaService.ListaUrlSistemas(null, "3").Result.FirstOrDefault().Valor.ToString();
                    urlSistema = string.Format("{0}{1}{2}{3}{4}{5}{6}", "<a href='", urlSistema,
                                               DatosConstantes.UrlOpcionesSistema.RutaConsulta, "'>", urlSistema,
                                               DatosConstantes.UrlOpcionesSistema.RutaConsulta, "</a>");

                    var destinatario = trabajadorService.BuscarTrabajador(new TrabajadorRequest()
                    {
                        CodigoTrabajador = entidad.CodigoDestinatario
                    }).Result.FirstOrDefault();

                    datos.variables.Add("@para", destinatario.NombreCompleto);
                    datos.variables.Add("@tipo_consulta", data.DescripcionTipo);
                    datos.variables.Add("@url_opcion_sistema", urlSistema);
                    datos.textoNotificar = data.Adicional + "</br></br> Enviado por " + nombreRemitenteOriginal + " el " + entidadSincronizar.FechaEnvio.Value.ToString("dd/M/yyyy") + ":</br></br>" + datosPlantilla.Contenido;

                    foreach (var item in datos.variables)
                    {
                        datos.textoNotificar = datos.textoNotificar.Replace(item.Key, item.Value);
                    }

                    consultaLogicRepository.NotificarConsulta(entidadSincronizar.Asunto, datos.textoNotificar, destinatario.CorreoElectronico, null, datos.profileCorreo);
                }

                //copiar los adjuntos del original
                var resultAdjunto = consultaAdjuntoLogicRepository.BuscarConsultaAdjunto(
                    null,
                    new Guid(data.CodigoConsultaRelacionado),
                    null,
                    null,
                    DatosConstantes.EstadoRegistro.Activo
                    );

                if (resultAdjunto != null && resultAdjunto.Count > 0)
                {
                    foreach (var item in resultAdjunto)
                    {
                        item.CodigoConsultaAdjunto = Guid.NewGuid();
                        item.CodigoConsulta        = entidad.CodigoConsulta;
                        consultaAdjuntoEntityRepository.Insertar(ConsultaAdapter.ObtenerConsultaAdjuntoEntityDeLogic(item));
                        consultaAdjuntoEntityRepository.GuardarCambios();
                    }
                }

                //Guardar nuevos adjuntos
                if (data.ListaAdjuntos != null)
                {
                    foreach (var item in data.ListaAdjuntos)
                    {
                        byte[] bytes = System.IO.File.ReadAllBytes(item.RutaArchivoSharePoint);
                        item.CodigoConsulta = entidad.CodigoConsulta;
                        item.ArchivoAdjunto = bytes;
                        var resultadoAdjunto = RegistrarConsultaAdjunto(item);
                    }
                }

                data.ListaAdjuntos = null;

                resultado.Result = data;
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ConsultaService>(e);
            }

            return(resultado);
        }