예제 #1
0
        /// <summary>
        /// Realiza la adaptación de campos para registrar o actualizar
        /// </summary>
        /// <param name="data">Datos a registrar o actualizar</param>
        /// <returns>Entidad Datos a registrar</returns>
        public static ConsultaEntity ObtenerConsultaEntity(ConsultaRequest data)
        {
            ConsultaEntity consultaEntity = new ConsultaEntity();

            if (data.CodigoConsulta != null)
            {
                consultaEntity.CodigoConsulta = new Guid(data.CodigoConsulta);
            }
            else
            {
                consultaEntity.CodigoConsulta = Guid.NewGuid();
            }

            consultaEntity.CodigoRemitente    = (data.CodigoRemitente != null ? new Guid(data.CodigoRemitente) : new Guid());
            consultaEntity.CodigoDestinatario = (data.CodigoDestinatario != null ? new Guid(data.CodigoDestinatario) : new Guid());
            consultaEntity.Tipo                  = data.Tipo;
            consultaEntity.Asunto                = data.Asunto;
            consultaEntity.Contenido             = data.Contenido;
            consultaEntity.EstadoConsulta        = data.EstadoConsulta;
            consultaEntity.FechaEnvio            = data.FechaEnvio;
            consultaEntity.Respuesta             = data.Respuesta;
            consultaEntity.FechaRespuesta        = data.FechaRespuesta;
            consultaEntity.CodigoUnidadOperativa = (string.IsNullOrEmpty(data.CodigoUnidadOperativa) ? (Guid?)null : new Guid(data.CodigoUnidadOperativa));
            consultaEntity.CodigoArea            = data.CodigoArea;
            consultaEntity.EsValido              = data.EsValido;
            return(consultaEntity);
        }
        public IActionResult Put(int ConsultaId, [FromBody] ConsultaRequest request)
        {
            MySqlConnection conn = new MySqlConnection(_appSettings.ConnectionString);

            try
            {
                conn.Open();

                using (MySqlCommand cmd = new MySqlCommand("UPDATE Consulta SET DataConsulta = @consulta, PacienteId = @paciente, EspecialistaId = @especialista WHERE ConsultaId = @consultaId", conn))
                {
                    cmd.Parameters.AddWithValue("@data", request.DataConsulta);
                    cmd.Parameters.AddWithValue("@paciente", request.PacienteId);
                    cmd.Parameters.AddWithValue("@especialista", request.EspecialistaId);
                    cmd.Parameters.AddWithValue("@consultaId", ConsultaId);


                    cmd.ExecuteNonQuery();
                }

                return(new OkObjectResult(new ConsultaResult {
                    ConsultaId = ConsultaId, DataConsulta = request.DataConsulta, PacienteId = request.PacienteId, EspecialistaId = request.EspecialistaId
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
            finally
            {
                conn.Dispose();
                conn.Close();
            }
        }
예제 #3
0
        public void Create(ConsultaRequest request)
        {
            Consulta consulta = new Consulta(consultaRepository)
            {
                Observacoes = request.Observacoes,
                DataInicial = request.DataInicial,
                DataFinal   = request.DataFinal,
                PacienteId  = request.PacienteId
            };

            consultaRepository.Create(consulta);
        }
예제 #4
0
        public void Update(int id, ConsultaRequest request)
        {
            Consulta consulta = new Consulta(consultaRepository)
            {
                Id          = id,
                Observacoes = request.Observacoes,
                DataInicial = request.DataInicial,
                DataFinal   = request.DataFinal,
                PacienteId  = request.PacienteId
            };

            consultaRepository.Update(consulta);
        }
예제 #5
0
        public IActionResult Update(int id, [FromBody] ConsultaRequest request)
        {
            try
            {
                consultaService.Update(id, request);

                return(Ok());
            }
            catch (Exception error)
            {
                return(BadRequest(error.Message));
            }
        }
예제 #6
0
        public override Task <ObterResponse> Obter(ConsultaRequest request, ServerCallContext context)
        {
            var response = new ObterResponse();

            try
            {
                var usuarioId = Guid.Parse(request.UsuarioId);
                var empresaId = Guid.Parse(request.EmpresaId);

                var parser = new PostObter();

                var dtos = postServico.Obter(usuarioId, empresaId);

                response = parser.Response(dtos);
            }
            catch (Exception ex)
            {
                response.HttpStatusCode = (int)HttpStatusCode.InternalServerError;
            }

            return(Task.FromResult(response));
        }
        public IActionResult Post([FromBody] ConsultaRequest request)
        {
            MySqlConnection conn       = new MySqlConnection(_appSettings.ConnectionString);
            int             consultaId = 0;

            try
            {
                conn.Open();

                using (MySqlCommand cmd = new MySqlCommand("INSERT INTO consulta (DataConsulta, PacienteId, EspecialistaId) VALUES(@data, @paciente, @especialista);", conn))
                {
                    cmd.Parameters.AddWithValue("@data", request.DataConsulta);
                    cmd.Parameters.AddWithValue("@paciente", request.PacienteId);
                    cmd.Parameters.AddWithValue("@especialista", request.EspecialistaId);

                    cmd.ExecuteNonQuery();

                    using (MySqlCommand cmd2 = new MySqlCommand("SELECT last_insert_id()", conn))
                    {
                        consultaId = (int)(ulong)cmd2.ExecuteScalar();
                    }
                }

                return(new OkObjectResult(new ConsultaResult {
                    ConsultaId = consultaId, DataConsulta = request.DataConsulta, PacienteId = request.PacienteId, EspecialistaId = request.EspecialistaId
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
            finally
            {
                conn.Dispose();
                conn.Close();
            }
        }
예제 #8
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);
        }
예제 #9
0
        /// <summary>
        /// Consulta de giros
        /// </summary>
        /// <param name="request">Objeto que contiene todos los datos de autenticacion del usuario e información de la consulta</param>
        /// <returns>Respuesta de la consulta</returns>
        public ConsultaResponse Consulta(ConsultaRequest request)
        {
            string methodName = string.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name);

            this.LogRequest(request);

            ConsultaResponse response = new ConsultaResponse();

            string sessionId = this.GetSessionId(request, response, out this.errorMessage);

            if (this.errorMessage != ErrorMessagesMnemonics.None)
            {
                this.LogResponse(response);
                return(response);
            }

            if (!request.IsValidRequest())
            {
                this.SetResponseErrorCode(response, ErrorMessagesMnemonics.InvalidRequiredFields);
                this.LogResponse(response);
                return(response);
            }

            MultiPay472.Service1SoapClient client = this.GetSoapClient();
            string endpointName = "ConsultaGiros";

            try
            {
                MultiPay472.ConsultaGiro peticion = new MultiPay472.ConsultaGiro();
                peticion.NitRed            = this.multipayNitRed;
                peticion.CodigoTerminal    = this.multipayTerminal;
                peticion.CodigoTransaccion = this.GenerarCodigoTransaccion(sessionId);

                peticion.CodigoPuntoVenta       = request.Pdv;
                peticion.TipoCliente            = Cash472.CashProvider.ObtenerCodigoTipoCliente(request.TipoCliente);
                peticion.OIdentificacionCliente = new MultiPay472.IdentificacionCliente();
                peticion.OIdentificacionCliente.TipoIdentificacion   = Cash472.CashProvider.ObtenerCodigoTipoIdentificacion(request.TipoIdentificacion);
                peticion.OIdentificacionCliente.NumeroIdentificacion = request.NumeroIdentificacion;

                if (!string.IsNullOrEmpty(request.Pin))
                {
                    peticion.PIN = Multipay472TripleDes.Encrypt(this.multipayTripleDesKey, request.Pin);
                }

                this.ProviderLogger.InfoLow(() => TagValue.New()
                                            .MethodName(methodName)
                                            .Message("[" + sessionId + "] " + "Llamando servicio \"" + endpointName + "\" ..."));

                MultiPay472.RespuestaConsultaGiro[] resp    = client.ConsultaGiros(peticion, this.multipayUsuario);
                MultiPay472.RespuestaConsultaGiro   primero = resp != null && resp.Length > 0 ? resp[0] : null;

                this.ProviderLogger.InfoLow(() => TagValue.New()
                                            .MethodName(methodName)
                                            .Message("[" + sessionId + "] " + "Respuesta servicio \"" + endpointName + "\"")
                                            .Tag("Respuesta").Value(resp != null && primero != null ? resp[0].CodigoRespuesta : "NULL"));

                if (resp != null && primero != null && primero.CodigoRespuesta == CashProvider.CodigoRespuestaExitoso)
                {
                    response.ResponseCode = 0;
                    response.Giros        = new List <Giro>();
                    foreach (MultiPay472.RespuestaConsultaGiro it in resp)
                    {
                        DataContract.Cash472.Giro giro = new DataContract.Cash472.Giro();
                        this.EstablecerValoresGiro(giro, it);
                        response.Giros.Add(giro);
                    }

                    response.Quantity = response.Giros.Count;
                }
                else
                {
                    if (resp == null || primero == null)
                    {
                        this.errorMessage        = ErrorMessagesMnemonics.WebServiceDoesNotRespond;
                        response.ResponseCode    = (int)this.errorMessage;
                        response.ResponseMessage = this.errorMessage.ToDescription();
                    }
                    else
                    {
                        response.ResponseMessage = CashProvider.ObtenerMensajeCodigoRespuesta(primero.CodigoRespuesta);
                    }
                }
            }
            catch (Exception ex)
            {
                this.ProviderLogger.ExceptionLow(() => TagValue.New()
                                                 .MethodName(methodName)
                                                 .Message("[" + sessionId + "] " + "Error llamando servicio \"" + endpointName + "\"")
                                                 .Exception(ex));
            }

            this.LogResponse(response);
            return(response);
        }
예제 #10
0
 /// <summary>
 /// Consulta de un giro
 /// </summary>
 /// <param name="request">Objeto que contiene todos los datos de autenticacion del usuario e información de la consulta</param>
 /// <returns>Respuesta de la consulta</returns>
 ConsultaResponse ICash472ApiRest.Consulta(ConsultaRequest request)
 {
     return(this.Consulta(request));
 }
예제 #11
0
 /// <summary>
 /// Consulta de un giro
 /// </summary>
 /// <param name="request">Objeto que contiene todos los datos de autenticacion del usuario e información de la consulta</param>
 /// <returns>Respuesta de la consulta</returns>
 private ConsultaResponse Consulta(ConsultaRequest request)
 {
     return((new Provider.Cash472.CashProvider()).Consulta(request));
 }
예제 #12
0
 public async Task <ActionResult> GetAll([FromQuery] ConsultaRequest command)
 {
     return(await base.Query <ConsultaRequest, ConsultaResponse>(command));
 }
예제 #13
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);
        }
예제 #14
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);
        }
예제 #15
0
 public ProcardResponse Consulta([FromBody] ConsultaRequest consulta)
 {
     return(ProcardSocketClient.Get(consulta));
 }