Exemplo n.º 1
0
        /// <summary>
        /// Método para retornar los documentos adjuntos por Contrato
        /// </summary>
        /// <param name="request">Filtro</param>
        /// <returns>Documentos adjuntos al contrato</returns>
        public ProcessResult <List <ConsultaAdjuntoResponse> > BuscarConsultaAdjunto(ConsultaAdjuntoRequest request)
        {
            ProcessResult <List <ConsultaAdjuntoResponse> > resultado = new ProcessResult <List <ConsultaAdjuntoResponse> >();

            try
            {
                var result = consultaAdjuntoLogicRepository.BuscarConsultaAdjunto(
                    request.CodigoConsultaAdjunto,
                    request.CodigoConsulta,
                    request.CodigoArchivo,
                    request.NombreArchivo,
                    DatosConstantes.EstadoRegistro.Activo
                    );
                resultado.Result = new List <ConsultaAdjuntoResponse>();

                foreach (var item in result)
                {
                    resultado.Result.Add(ConsultaAdapter.ObtenerConsultaAdjuntoResponseDeLogic(item, request.UsuarioSession));
                }
            }
            catch (Exception ex)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ConsultaService>(ex);
            }
            return(resultado);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Retorna información de la consulta.
        /// </summary>
        /// <param name="codigoConsulta">código de la consulta</param>
        /// <returns>Información de la consulta</returns>
        public ProcessResult <ConsultaResponse> ConsultaPorId(Guid codigoConsulta)
        {
            ProcessResult <ConsultaResponse> rpta = new ProcessResult <ConsultaResponse>();

            try
            {
                ConsultaEntity entConsulta = consultaEntityRepository.GetById(codigoConsulta);

                rpta.Result = new ConsultaResponse();
                rpta.Result = ConsultaAdapter.ObtenerConsultaResponseDeEntity(entConsulta);
            }
            catch (Exception ex)
            {
                rpta.IsSuccess = false;
                rpta.Exception = new ApplicationLayerException <ConsultaService>(ex);
            }
            return(rpta);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Realiza la búsqueda de consultas
        /// </summary>
        /// <param name="filtro">Filtro de búsqueda</param>
        /// <returns>Listado de contratos</returns>
        public ProcessResult <List <ConsultaResponse> > ListadoConsulta(ConsultaRequest filtro)
        {
            ProcessResult <List <ConsultaResponse> > resultado = new ProcessResult <List <ConsultaResponse> >();

            try
            {
                Guid?CodigoRemitente    = (filtro.CodigoRemitente != null && filtro.CodigoRemitente != "") ? new Guid(filtro.CodigoRemitente) : (Guid?)null;
                Guid?CodigoDestinatario = (filtro.CodigoDestinatario != null && filtro.CodigoDestinatario != "") ? new Guid(filtro.CodigoDestinatario) : (Guid?)null;

                Guid?CodigoUnidadOperativa = (filtro.CodigoUnidadOperativa != null && filtro.CodigoUnidadOperativa != "") ? new Guid(filtro.CodigoUnidadOperativa) : (Guid?)null;
                Guid?CodigoConsulta        = (filtro.CodigoConsulta != null && filtro.CodigoConsulta != "") ? new Guid(filtro.CodigoConsulta) : (Guid?)null;
                Guid?CodigoUsuarioSesion   = (filtro.CodigoUsuarioSesion != null && filtro.CodigoUsuarioSesion != "") ? new Guid(filtro.CodigoUsuarioSesion) : (Guid?)null;

                List <ConsultaLogic> listado = consultaLogicRepository.ListaConsulta(CodigoRemitente, CodigoDestinatario, filtro.Tipo, CodigoUnidadOperativa, filtro.CodigoArea, CodigoConsulta, CodigoUsuarioSesion, filtro.EstadoConsulta, filtro.NumeroPagina, filtro.RegistrosPagina);

                resultado.Result = new List <ConsultaResponse>();
                var resultadoTrabajador = trabajadorService.BuscarTrabajadorDatoMinimo(new TrabajadorRequest()).Result;

                var listaArea  = politicaService.ListarArea().Result;
                var listEstado = politicaService.ListarEstadoConsulta().Result;
                var tipo       = politicaService.ListarTipoConsulta().Result;

                foreach (var registro in listado)
                {
                    var listadoConsulta = ConsultaAdapter.ObtenerConsultaResponse(registro, listaArea, listEstado, tipo, new Guid(filtro.CodigoUsuarioSesion), resultadoTrabajador);
                    resultado.Result.Add(listadoConsulta);
                }
            }
            catch (Exception ex)
            {
                LogBL.grabarLogError(ex);
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ContratoService>(ex);
            }
            return(resultado);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Método para registra los documentos adjuntos de la consulta
        /// </summary>
        /// <param name="request">Filtro</param>
        /// <returns>Documentos adjuntos al contrato</returns>
        public ProcessResult <string> RegistrarConsultaAdjunto(ConsultaAdjuntoRequest request)
        {
            ProcessResult <string> resultado = new ProcessResult <string>();

            try
            {
                //var entConsulta = consultaEntityRepository.GetById(request.CodigoConsulta);
                //Registro de información
                string hayError = string.Empty;
                //var unidadOperativa = unidadOperativaService.BuscarUnidadOperativa(new FiltroUnidadOperativa() { CodigoUnidadOperativa = entConsulta.CodigoUnidadOperativa.ToString() });

                request.CodigoConsultaAdjunto = Guid.NewGuid();
                #region InformacionRepositorioSharePoint
                string nombreArchivo = string.Format("{0}.{1}", request.CodigoConsultaAdjunto.ToString(), request.ExtencionArchivo);
                ProcessResult <string> miDirectorio = RetornaDirectorioFile(request.CodigoConsulta.Value, nombreArchivo, null, true);
                string   directorioDestino          = miDirectorio.Result.ToString();
                string[] nivelCarpeta  = directorioDestino.Split(new char[] { '/' });
                string   nombreLista   = nivelCarpeta[0];
                string   nombreCarpeta = string.Format("{0}/{1}/{2}", nivelCarpeta[1], nivelCarpeta[2], nivelCarpeta[3]);
                #endregion

                #region GrabarContenidoAdjuntoSHP
                MemoryStream msFile = new MemoryStream(request.ArchivoAdjunto);
                if (msFile != null)
                {
                    var regSHP = sharePointService.RegistraArchivoSharePoint(ref hayError, nombreLista, nombreCarpeta, nombreArchivo, msFile);
                    if (Convert.ToInt32(regSHP.Result) > 0 && hayError == string.Empty)
                    {
                        request.CodigoArchivo         = Convert.ToInt32(regSHP.Result);
                        request.RutaArchivoSharePoint = directorioDestino;
                    }
                    else
                    {
                        if (Convert.ToInt32(regSHP.Result) > 0)
                        {
                            var fileShpDelete = sharePointService.EliminaArchivoSharePoint(new List <int>()
                            {
                                Convert.ToInt32(regSHP.Result)
                            }, nombreLista, ref hayError);
                        }
                        resultado.IsSuccess = false;
                        resultado.Exception = new ApplicationLayerException <ContratoService>("Ocurrió un problema al registra el archivo en el SharePoint: " + hayError);
                        LogBL.grabarLogError(new Exception(hayError));
                        return(resultado);
                    }
                }
                else
                {
                    resultado.IsSuccess = false;
                    resultado.Exception = new ApplicationLayerException <ContratoService>("Ocurrió un problema al subir el documento.");
                    LogBL.grabarLogError(new Exception("Ocurrió un problema al subir el documento"));
                    return(resultado);
                }
                #endregion

                #region Grabar registro del documento adjunto
                consultaAdjuntoEntityRepository.Insertar(ConsultaAdapter.ObtenerConsultaAdjuntoEntityDeRequest(request));
                consultaAdjuntoEntityRepository.GuardarCambios();

                if (request.CodigoConsultaRelacionado.HasValue)
                {
                    request.CodigoConsultaAdjunto = Guid.NewGuid();
                    request.CodigoConsulta        = request.CodigoConsultaRelacionado.Value;
                    consultaAdjuntoEntityRepository.Insertar(ConsultaAdapter.ObtenerConsultaAdjuntoEntityDeRequest(request));
                    consultaAdjuntoEntityRepository.GuardarCambios();
                }

                #endregion
            }
            catch (Exception ex)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ConsultaService>(ex);
            }
            return(resultado);
        }
Exemplo n.º 5
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);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Registra / Responde Consulta
        /// </summary>
        /// <param name="data"></param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public ProcessResult <ConsultaRequest> RegistrarConsulta(ConsultaRequest data)
        {
            ProcessResult <ConsultaRequest> resultado = new ProcessResult <ConsultaRequest>();

            try
            {
                ConsultaEntity entidad = ConsultaAdapter.ObtenerConsultaEntity(data);

                if (data.CodigoConsulta == null)
                {
                    entidad.EstadoConsulta         = DatosConstantes.EstadoConsulta.Enviado;
                    entidad.FechaEnvio             = DateTime.Now;
                    entidad.VistoRemitenteOriginal = true;
                    consultaEntityRepository.Insertar(entidad);
                    consultaEntityRepository.GuardarCambios();

                    if (!string.IsNullOrEmpty(data.CodigoDestinatario))
                    {
                        var destinatario = trabajadorService.BuscarTrabajador(new TrabajadorRequest()
                        {
                            CodigoTrabajador = new Guid(data.CodigoDestinatario)
                        }).Result.FirstOrDefault();

                        data.CorreoDestinatario = destinatario.CorreoElectronico;
                        data.NombreDestinatario = destinatario.NombreCompleto;

                        EnviarNotificacion(DatosConstantes.TipoNotificacion.RegistroConsultas, data.DescripcionTipo, data.Asunto, data.NombreDestinatario, data.CorreoDestinatario);
                    }
                }
                else //es un responder
                {
                    var entidadSincronizar = consultaEntityRepository.GetById(entidad.CodigoConsulta);

                    entidadSincronizar.Respuesta      = entidad.Respuesta;
                    entidadSincronizar.FechaRespuesta = (entidadSincronizar.CodigoConsultaOriginal != null ? (DateTime?)null : DateTime.Now);
                    entidadSincronizar.EsValido       = entidad.EsValido;

                    if (entidad.EsValido == true)
                    {
                        entidadSincronizar.EstadoConsulta = DatosConstantes.EstadoConsulta.Contestado;
                    }
                    else
                    {
                        entidadSincronizar.EstadoConsulta = DatosConstantes.EstadoConsulta.NoAplica;
                    }

                    //Listamos todas las consultas que hayan sido reenviadas incluyendo la original que tienen el mismo codigo de consulta original
                    var listaConsultas = consultaLogicRepository.ListaConsultaSimple(null, null, null, null, null, null, null).Where(x => (x.CodigoConsultaOriginal == entidadSincronizar.CodigoConsultaOriginal || x.CodigoConsulta == entidadSincronizar.CodigoConsultaOriginal) && x.CodigoConsulta != entidad.CodigoConsulta).ToList();

                    if (entidadSincronizar.CodigoConsultaOriginal != null)
                    {
                        var consultaOriginal = consultaEntityRepository.GetById(entidadSincronizar.CodigoConsultaOriginal);

                        //insertamos un nuevo registro de contestacion de consulta
                        var consultaRespuesta = new ConsultaEntity();
                        consultaRespuesta.Asunto                    = entidadSincronizar.Asunto;
                        consultaRespuesta.CodigoArea                = entidadSincronizar.CodigoArea;
                        consultaRespuesta.CodigoConsulta            = Guid.NewGuid();
                        consultaRespuesta.CodigoConsultaOriginal    = entidadSincronizar.CodigoConsultaOriginal;
                        consultaRespuesta.CodigoConsultaRelacionado = entidadSincronizar.CodigoConsultaRelacionado;
                        consultaRespuesta.CodigoDestinatario        = entidadSincronizar.CodigoDestinatario;
                        consultaRespuesta.CodigoRemitente           = consultaOriginal.CodigoRemitente;
                        consultaRespuesta.CodigoUnidadOperativa     = entidadSincronizar.CodigoUnidadOperativa;
                        consultaRespuesta.Contenido                 = entidadSincronizar.Contenido;
                        consultaRespuesta.EstadoConsulta            = entidadSincronizar.EstadoConsulta;
                        consultaRespuesta.EstadoRegistro            = entidadSincronizar.EstadoRegistro;
                        consultaRespuesta.EsValido                  = entidadSincronizar.EsValido;
                        consultaRespuesta.FechaCreacion             = entidadSincronizar.FechaCreacion;
                        consultaRespuesta.FechaEnvio                = entidadSincronizar.FechaEnvio;
                        consultaRespuesta.FechaModificacion         = entidadSincronizar.FechaModificacion;
                        consultaRespuesta.FechaRespuesta            = DateTime.Now;
                        consultaRespuesta.Respuesta                 = entidadSincronizar.Respuesta;
                        consultaRespuesta.TerminalCreacion          = entidadSincronizar.TerminalCreacion;
                        consultaRespuesta.TerminalModificacion      = entidadSincronizar.TerminalModificacion;
                        consultaRespuesta.Tipo                   = entidadSincronizar.Tipo;
                        consultaRespuesta.UsuarioCreacion        = entidadSincronizar.UsuarioCreacion;
                        consultaRespuesta.UsuarioModificacion    = entidadSincronizar.UsuarioModificacion;
                        consultaRespuesta.VistoRemitenteOriginal = entidadSincronizar.VistoRemitenteOriginal;

                        consultaEntityRepository.Insertar(consultaRespuesta);
                        consultaEntityRepository.GuardarCambios();
                        //entidadSincronizar.CodigoRemitente = consultaOriginal.CodigoRemitente;
                    }
                    //Actualizamos la consulta con respuesta
                    consultaEntityRepository.Editar(entidadSincronizar);
                    consultaEntityRepository.GuardarCambios();

                    //Enviar notificación de respuesta
                    if (entidadSincronizar.CodigoRemitente != null)
                    {
                        var destinatario = trabajadorService.BuscarTrabajador(new TrabajadorRequest()
                        {
                            CodigoTrabajador = entidadSincronizar.CodigoRemitente
                        }).Result.FirstOrDefault();
                        EnviarNotificacion(DatosConstantes.TipoNotificacion.RespuestaConsultas, data.DescripcionTipo, entidadSincronizar.Asunto, destinatario.NombreCompleto, destinatario.CorreoElectronico);
                    }

                    //Actualizamos todas las consultas que hayan sido reenviadas incluyendo la original que tienen el mismo codigo de consulta original
                    foreach (var item in listaConsultas)
                    {
                        var itemEditar = consultaEntityRepository.GetById(item.CodigoConsulta);

                        itemEditar.VistoRemitenteOriginal = (itemEditar.CodigoConsulta == entidadSincronizar.CodigoConsultaOriginal ? false : true);
                        itemEditar.EstadoConsulta         = entidadSincronizar.EstadoConsulta;
                        //itemEditar.FechaRespuesta = entidadSincronizar.FechaRespuesta;
                        //entidadOriginalSincronizar.Respuesta = entidadSincronizar.Respuesta;
                        itemEditar.EsValido = entidadSincronizar.EsValido;
                        consultaEntityRepository.Editar(itemEditar);
                        consultaEntityRepository.GuardarCambios();
                    }

                    //var entidadOriginalSincronizar = consultaEntityRepository.GetById(entidadSincronizar.CodigoConsultaOriginal);
                    //if (entidadOriginalSincronizar != null)
                    //{
                    //    entidadOriginalSincronizar.VistoRemitenteOriginal = false;
                    //    entidadOriginalSincronizar.EstadoConsulta = entidadSincronizar.EstadoConsulta;
                    //    entidadOriginalSincronizar.FechaRespuesta = entidadSincronizar.FechaRespuesta;
                    //    //entidadOriginalSincronizar.Respuesta = entidadSincronizar.Respuesta;
                    //    entidadOriginalSincronizar.EsValido = entidadSincronizar.EsValido;
                    //    consultaEntityRepository.Editar(entidadOriginalSincronizar);
                    //    consultaEntityRepository.GuardarCambios();
                    //}
                }

                //Registrar 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);
        }