コード例 #1
0
ファイル: Program.cs プロジェクト: davekessener/ToolsForKFIV
    static void Main(string[] args)
    {
        Console.WriteLine("TX2toPNG for King's Field IV (The Ancient City)\n");

        if (args.Length < 1)
        {
            Console.WriteLine("Usage:\nTX2toPNG.exe f.tx2\n");

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
            return;
        }

        //Get Write Path
        string writePath = Path.GetDirectoryName(args[0]) + "\\";
        string writeName = Path.GetFileNameWithoutExtension(args[0]);

        //Open TX2
        Console.WriteLine("Reading TX2...");
        TX2 tx2 = TX2.FromFile(args[0]);

        if (tx2 == null)
        {
            Console.WriteLine("Failed to read TX2");
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
            return;
        }

        //Save PNGs
        Console.WriteLine("Writing PNGs...");
        for (uint i = 0; i < tx2.Count; ++i)
        {
            tx2[i].Save(writePath + writeName + "_" + i.ToString() + ".png");
        }


        //Finished
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
コード例 #2
0
        //[SoapDocumentMethod(OneWay = true)]
        public string solicitudes(string solicitudInput)
        {
            logLabcore.Info("*******   Solicitud Recibida desde SAHI para Enviar:" + solicitudInput);
            //solicitudInput = "<solicitud idAtencion=\"6795140\" nroSolicitud=\"601042\" fechaSolicitud=\"2019 / 10 / 28 08:43:49\" prioridad=\"URGENTE\" nroOrden=\"9923076\" idUsuario=\"2921\">  <producto> <id>2125</id> <cups>903810</cups> <cant>1</cant> <obs>Prioridad: Hospitalario Prioritario .</obs> </producto> </solicitud>";
            try
            {
                System.Xml.XmlDocument doc      = new System.Xml.XmlDocument();
                System.Xml.XmlDocument docTabla = new System.Xml.XmlDocument();
                doc.LoadXml(solicitudInput);
                XmlSerializer       deserializar     = new XmlSerializer(typeof(solicitud));
                StringReader        reader           = new StringReader(solicitudInput);
                object              obj              = deserializar.Deserialize(reader);
                solicitud           solicitudWrk     = (solicitud)obj;        // Solicitud Deserializada
                solicitudProducto[] cupsSolicWrk     = solicitudWrk.producto; // CUPS de la solicitud.
                solicitudProducto[] cupsTabSolicSync = null;                  // CUPS  de la solicitud extraidos de la tabla de sincronia
                SqlConnection       Conex            = new SqlConnection(Properties.Settings.Default.LabcoreDBConXX);
                #region RegionUsing
                using (Conex)
                {
                    Conex.Open();
                    string        strConsultar = "SELECT paramXML FROM hceLabCliTATinvocaWS WHERE idOrden=" + solicitudWrk.nroOrden + " AND idAtencion=" + solicitudWrk.idAtencion + " AND idSolicitud=" + solicitudWrk.nroSolicitud + " AND idAccion='SP'";
                    SqlCommand    cmdConsulta  = new SqlCommand(strConsultar, Conex);
                    SqlDataReader conCursor    = cmdConsulta.ExecuteReader();
                    if (conCursor.HasRows)
                    {
                        logLabcore.Info("Se encuentra el registro en tabla de intercambio. ******************************");
                        conCursor.Read();
                        docTabla.LoadXml(conCursor.GetString(0));
                        XmlSerializer deserTblSol        = new XmlSerializer(typeof(solicitud));
                        StringReader  lector             = new StringReader(conCursor.GetString(0));
                        object        objII              = deserTblSol.Deserialize(lector);
                        solicitud     solicitudTablaSync = (solicitud)objII;
                        cupsTabSolicSync = solicitudTablaSync.producto; // Asigna los CUPS obtenidos de la Tabla de Sincronia
                    }
                    else
                    {
                        logLabcore.Warn("04:Error: No Hay Datos de Sincronizacion para la solicitud" + solicitudWrk.nroSolicitud);
                        return("03:No hay Datos de Sincronizacion");
                    }
                    conCursor.Close();
                    conCursor.Dispose();
                    string         strInsertar = "INSERT INTO TAT_ENC_SOLSAHI (NRO_SOLIC,NRO_ORDEN,NRO_ATEN,USR_SOLIC,PRIO_SOLIC,FECHA_SOL) VALUES(@solicitud,@orden,@atencion,@usuario,@prioridad,@fecha)";
                    SqlTransaction TX1_1;
                    TX1_1 = Conex.BeginTransaction("TRx1_1");
                    SqlCommand cmdInsertar = new SqlCommand(strInsertar, Conex, TX1_1);
                    cmdInsertar.Parameters.Add("@solicitud", SqlDbType.Int).Value     = solicitudWrk.nroSolicitud;
                    cmdInsertar.Parameters.Add("@orden", SqlDbType.Int).Value         = solicitudWrk.nroOrden;
                    cmdInsertar.Parameters.Add("@atencion", SqlDbType.Int).Value      = solicitudWrk.idAtencion;
                    cmdInsertar.Parameters.Add("@usuario", SqlDbType.Int).Value       = solicitudWrk.idUsuario;
                    cmdInsertar.Parameters.Add("@prioridad", SqlDbType.VarChar).Value = solicitudWrk.prioridad;
                    cmdInsertar.Parameters.Add("@fecha", SqlDbType.DateTime).Value    = solicitudWrk.fechaSolicitud;

                    SqlCommand cmdInsertardDetalle = new SqlCommand();

                    SqlCommand cmdBorrar   = new SqlCommand();
                    SqlCommand cmdInsTraza = new SqlCommand();
                    cmdInsTraza.Parameters.Add("@orden", SqlDbType.Int);
                    cmdInsTraza.Parameters.Add("@solicitud", SqlDbType.Int);
                    cmdInsTraza.Parameters.Add("@atencion", SqlDbType.Int);
                    cmdInsTraza.Parameters.Add("@idProd", SqlDbType.Int);
                    cmdInsTraza.Parameters.Add("@cups", SqlDbType.VarChar);
                    cmdInsTraza.Parameters.Add("@evento", SqlDbType.VarChar);
                    cmdInsTraza.Parameters.Add("@fecha", SqlDbType.DateTime);
                    if (cmdInsertar.ExecuteNonQuery() > 0 && cupsSolicWrk.Length == cupsTabSolicSync.Length)
                    {
                        logLabcore.Info("******** Solicitud desde SAHI: Se actualiza Encabezado de Solicitudes: TAT_ENC_SOLSAHI *****");
                        try
                        {
                            List <solicitudProducto> cups_x_Procesar = cupsSolicWrk.ToList <solicitudProducto>();
                            List <solicitudProducto> cups_Procesados = new List <solicitudProducto>();
                            foreach (solicitudProducto cups in cupsSolicWrk)
                            {
                                cmdInsertardDetalle.CommandText = "INSERT INTO TAT_DET_SOLSAHI (NRO_SOLIC,NRO_ORDEN,NRO_ATEN,ID_PROD,COD_CUPS,CANT_SOLI,OBS_SOLI) VALUES(" + solicitudWrk.nroSolicitud + "," + solicitudWrk.nroOrden + "," + solicitudWrk.idAtencion + "," + cups.id + ",'" + cups.cups + "'," + cups.cant + ",'" + cups.obs + "')";
                                cmdInsertardDetalle.Connection  = Conex;
                                cmdInsertardDetalle.Transaction = TX1_1;
                                if (cmdInsertardDetalle.ExecuteNonQuery() < 1)
                                {
                                    TX1_1.Rollback("TRx1_1");
                                    logLabcore.Info("04:Error: Insertando solicitud en TAT_DET_SOLSAHI la Solicitud:" + solicitudWrk.nroSolicitud);
                                    return("");
                                }
                                else
                                {
                                    logLabcore.Info("********  Se inserta Detalle en tabla TAT_DET_SOLSAHI ************");
                                    cmdInsTraza.CommandText = "INSERT INTO TAT_TRAZA_ORDEN (NRO_ORDEN,NRO_SOLIC,NRO_ATEN,ID_PROD,COD_CUPS,EVT_ORD,FECHA_EVT,ID_USUA) VALUES (@orden,@solicitud,@atencion,@idProd,@cups,@evento,@fecha," + solicitudWrk.idUsuario + ")";
                                    cmdInsTraza.Parameters["@orden"].Value     = solicitudWrk.nroOrden;
                                    cmdInsTraza.Parameters["@solicitud"].Value = solicitudWrk.nroSolicitud;
                                    cmdInsTraza.Parameters["@atencion"].Value  = solicitudWrk.idAtencion;
                                    cmdInsTraza.Parameters["@idProd"].Value    = cups.id;
                                    cmdInsTraza.Parameters["@cups"].Value      = cups.cups;
                                    cmdInsTraza.Parameters["@evento"].Value    = "SOL_ENF";
                                    cmdInsTraza.Parameters["@fecha"].Value     = DateTime.Now.ToString();
                                    cmdInsTraza.Connection  = Conex;
                                    cmdInsTraza.Transaction = TX1_1;
                                    if (cmdInsTraza.ExecuteNonQuery() < 1)
                                    {
                                        TX1_1.Rollback("TRx1_1");
                                        logLabcore.Info("04:Error:Insertando en TAT_TRAZA_ORDEN la Solicitud:" + solicitudWrk.nroSolicitud);
                                        return("");
                                    }
                                    else //***************** AQUI VA TAT_TRAZA_TAT
                                    {
                                        logLabcore.Info("************* Se inserta registro TAT_TRAZA_ORDEN **************");
                                        Int32 solcitudExiste = 0;
                                        using (SqlConnection Conn = new SqlConnection(Properties.Settings.Default.LabcoreDBConXX))
                                        {
                                            Conn.Open();
                                            string     strConsultaSolicitud = "SELECT TAT_SOLI FROM TAT_TRAZA_TAT WHERE TAT_ATEN=@atencion AND TAT_ORDEN =@orden AND TAT_CUPS=@cups AND TAT_SOLI=" + solicitudWrk.nroSolicitud;
                                            SqlCommand cmdConsultaSolicitud = new SqlCommand(strConsultaSolicitud, Conn);
                                            cmdConsultaSolicitud.Parameters.Add("@atencion", SqlDbType.Int).Value = solicitudWrk.idAtencion;
                                            cmdConsultaSolicitud.Parameters.Add("@orden", SqlDbType.Int).Value    = solicitudWrk.nroOrden;
                                            cmdConsultaSolicitud.Parameters.Add("@cups", SqlDbType.VarChar).Value = cups.cups.Trim();
                                            SqlDataReader rdSolicitud = cmdConsultaSolicitud.ExecuteReader();
                                            if (rdSolicitud.HasRows)
                                            {
                                                rdSolicitud.Read();
                                                solcitudExiste = rdSolicitud.GetInt32(0);
                                            }
                                        }
                                        if (solicitudWrk.nroSolicitud.Equals(solcitudExiste.ToString()) && solcitudExiste == 0)
                                        {
                                            string     strActualizaTraza = "UPDATE TAT_TRAZA_TAT SET TAT_SOLI=@solicitud_tat, EVT_SOLI=@fecha WHERE TAT_ATEN=@atencion AND TAT_ORDEN=@orden AND TAT_CUPS=@cups AND (TAT_SOLI=0 OR TAT_SOLI=@solicitud_tat)";
                                            SqlCommand cmdActualizaTraza = new SqlCommand(strActualizaTraza, Conex, TX1_1);
                                            cmdActualizaTraza.Parameters.Add("@orden", SqlDbType.Int).Value         = solicitudWrk.nroOrden;
                                            cmdActualizaTraza.Parameters.Add("@solicitud_tat", SqlDbType.Int).Value = solicitudWrk.nroSolicitud;
                                            cmdActualizaTraza.Parameters.Add("@atencion", SqlDbType.Int).Value      = solicitudWrk.idAtencion;
                                            cmdActualizaTraza.Parameters.Add("@cups", SqlDbType.VarChar).Value      = cups.cups.Trim();
                                            cmdActualizaTraza.Parameters.Add("@fecha", SqlDbType.DateTime).Value    = DateTime.Now;
                                            if (cmdActualizaTraza.ExecuteNonQuery() > 0)
                                            {
                                                cups_Procesados.Add(cups);
                                                logLabcore.Info("Se adiciona CUPs:::" + cups.cups);
                                                logLabcore.Info("**** !!! Se Actualiza TAT_TRAZA_TAT Exitosamente. !!!" + "  Numero orden:" + solicitudWrk.nroOrden + "  Numero Solicitud:" + solicitudWrk.nroSolicitud, "  Numero Atencion:" + solicitudWrk.idAtencion);
                                                //                                            return "";
                                            }
                                            else
                                            {
                                                TX1_1.Rollback("TRx1_1");
                                                logLabcore.Info("044:Error: Actualizando Solicitud en TAT_TRAZA_TAT Numero orden:" + solicitudWrk.nroOrden + "  Numero Solicitud:" + solicitudWrk.nroSolicitud, "  Numero Atencion:" + solicitudWrk.idAtencion);
                                                return("");
                                            }
                                        }
                                        else
                                        {
                                            string     strInsertarTraza = "INSERT INTO TAT_TRAZA_TAT (TAT_ATEN,TAT_ORDEN,TAT_SOLI,TAT_CUPS,EVT_ORD) VALUES (@atencion,@orden,@solicitud,@cups,@fechaEvento)";
                                            SqlCommand cmdInsertarTraza = new SqlCommand(strInsertarTraza, Conex, TX1_1);
                                            cmdInsertarTraza.Parameters.Add("@atencion", SqlDbType.Int).Value         = solicitudWrk.idAtencion;
                                            cmdInsertarTraza.Parameters.Add("@orden", SqlDbType.Int).Value            = solicitudWrk.nroOrden;
                                            cmdInsertarTraza.Parameters.Add("@solicitud", SqlDbType.Int).Value        = solicitudWrk.nroSolicitud;
                                            cmdInsertarTraza.Parameters.Add("@cups", SqlDbType.VarChar).Value         = cups.cups.Trim();
                                            cmdInsertarTraza.Parameters.Add("@fechaEvento", SqlDbType.DateTime).Value = DateTime.Now.ToString();
                                            cmdInsertarTraza.Connection = Conex;
                                            //cmdTraza.Transaction = TX1;
                                            if (cmdInsertarTraza.ExecuteNonQuery() < 0)
                                            {
                                                TX1_1.Rollback("TRx1_1");
                                                logLabcore.Warn("04:No fue posible Insertar en:TAT_TRAZA_TAT para la SOLICITUD en proceso:" + solicitudWrk.nroSolicitud);
                                                return("");
                                            }
                                            else
                                            {
                                                cups_Procesados.Add(cups);
                                                logLabcore.Warn($"Se ha Insertardo en:TAT_TRAZA_TAT para la SOLICITUD en proceso:{ solicitudWrk.nroSolicitud}  CUPS:{cups}");
                                            }
                                        }
                                    }
                                }
                            }
                            if (cups_x_Procesar.Count() == cups_Procesados.Count())
                            {
                                TX1_1.Commit();
                                logLabcore.Info("***********           Inicio de Actualizacion de Tabla de Intercambio       **************");
                                SqlTransaction TX2;
                                TX2 = Conex.BeginTransaction("TRx2");
                                try
                                {
                                    if (cupsSolicWrk.Length == cupsTabSolicSync.Length)
                                    {
                                        try
                                        {
                                            cmdBorrar.CommandText = "DELETE FROM hceLabCliTATinvocaWS WHERE idAtencion=" + solicitudWrk.idAtencion + " AND idOrden=" + solicitudWrk.nroOrden + " AND idAccion='SP' AND idSolicitud=" + solicitudWrk.nroSolicitud;
                                            cmdBorrar.Connection  = Conex;
                                            cmdBorrar.Transaction = TX2;
                                            if (cmdBorrar.ExecuteNonQuery() > 0)
                                            {
                                                logLabcore.Info(" !!       *****     Limpieza de Tabla de Intercambio      ****  !!");
                                                string        strConsNroMsg = "SELECT NRO_MSG FROM TAT_CONS_MSGS WHERE TIPO_MSG='SLAB'";
                                                SqlCommand    cmdConsNroMsg = new SqlCommand(strConsNroMsg, Conex, TX2);
                                                SqlDataReader nroMsgReader  = cmdConsNroMsg.ExecuteReader();
                                                nroMsgReader.Read();
                                                Int32 nroMsg = nroMsgReader.GetInt32(0);
                                                nroMsg++;
                                                nroMsgReader.Close();
                                                nroMsgReader.Dispose();
                                                string     strActualizaConsecut = "UPDATE TAT_CONS_MSGS SET NRO_MSG=" + nroMsg + " WHERE TIPO_MSG='SLAB'";
                                                SqlCommand cmdActualizaConsecut = new SqlCommand(strActualizaConsecut, Conex, TX2);
                                                if (cmdActualizaConsecut.ExecuteNonQuery() > 0)
                                                {
                                                    logLabcore.Info("--------------------------------- Se Actualiza tabla de consecutivos de mensajes enviados:TAT_CONS_MSGS  ---------------");
                                                    entregaSolicitud(solicitudWrk.nroSolicitud, solicitudWrk.nroOrden, solicitudWrk.idAtencion, nroMsg);
                                                    TX2.Commit();
                                                    logLabcore.Info("05:Recepcion de Solicitud Exitosa:Se Realiza el COMMIT de la Transaccion");
                                                    return("00:Recepcion Existosa");
                                                }
                                                else
                                                {
                                                    TX2.Rollback("TRx2");
                                                    logLabcore.Warn("04:Error:No fue posible entregar la solicitud a Servicio TAT");
                                                    return("");
                                                }
                                            }
                                            else
                                            {
                                                TX2.Rollback("TRx2");
                                                logLabcore.Warn("04:Error:Limpiando datos de solicitud en tabla de Sincronizacion");
                                                return("03: Error Limpiando tabla de Sincronizacion");
                                            }
                                        }
                                        catch (SqlException SqlExp)
                                        {
                                            logLabcore.Warn(SqlExp.Message, "04:Excepcion en SQL");
                                            return("");
                                        }
                                        catch (Exception exp10)
                                        {
                                            logLabcore.Warn(exp10.Message, "04:Excepcion en SQL");
                                            return("");
                                        }
                                    }
                                    else
                                    {
                                        logLabcore.Warn("04:Datos Solicitud Inconsistentes desde SAHI:" + solicitudInput);
                                        return("Datos incosnsistentes");
                                    }
                                }
                                catch (SqlException sqlEx)
                                {
                                    TX2.Rollback("TRx2");
                                    logLabcore.Warn(sqlEx.Message, "04:Excepcion en SQL " + sqlEx.StackTrace);
                                    utilLocal.notificaFalla("04:Excepcion en SQL " + sqlEx.Message);
                                    return("04:" + sqlEx.Message);
                                }
                                catch (Exception exp1)
                                {
                                    logLabcore.Info("*********      Se ha Presentado una excepcion. mensaje:" + exp1.Message + "     Pila de LLamados:" + exp1.StackTrace);
                                    return("*** Se ha presentado una excepcion. ***");
                                }
                                //************ Final de Actualizacion de Tabla de Intercambio
                            }
                            else
                            {
                                logLabcore.Info("******** ///// Se ha encontrado una diferencia enter el numero de CUPS a procesar:" + cups_x_Procesar.Count() + " y el numero de Procesados:" + cups_Procesados.Count() + "  ////////    ***************");
                                TX1_1.Rollback();
                                return("");
                            }
                        }
                        catch (SqlException sqlEx)
                        {
                            TX1_1.Rollback("TRx1");
                            logLabcore.Warn(sqlEx.Message, "04:Excepcion en SQL " + sqlEx.StackTrace);
                            utilLocal.notificaFalla("04:Excepcion en SQL " + sqlEx.Message);
                            return("04:Excepcion en SQL:" + sqlEx.Message);
                        }
                        catch (Exception exp11)
                        {
                            logLabcore.Info("Se ha presentado una excepcion:" + exp11.Message + "     Pila de llamados: " + exp11.StackTrace);
                            return("");
                        }
                    }
                    else
                    {
                        TX1_1.Rollback("TRx1");
                        utilLocal.notificaFalla("02:Error Guardando Datos Solicitud en Encabezado y Detalle de Solicitud");
                        logLabcore.Info("04:Error:Guardando Datos Solicitud:" + solicitudInput);
                        return("02:Error Guardando Datos Solicitud");
                    }
                }
                #endregion
            }
            catch (System.Xml.XmlException ex1)
            {
                utilLocal.notificaFalla("01:Error XML peticion." + ex1.Message + " En Solicitudes SAHI");
                logLabcore.Warn(ex1, "01:Excepcion en XML" + solicitudInput + "***" + ex1.StackTrace);
                return("01:Error peticion." + ex1.Message);
            }
            catch (Exception exp2)
            {
                logLabcore.Info("Se ha presentado una excepcion:" + exp2.Message + "    Pila de Llamados:" + exp2.StackTrace);
                return("");
            }
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: QRLovesFood/N3.1
 private void Button_Click_10(object sender, RoutedEventArgs e)
 {
     TX1.Clear();
     TX2.Clear();
     TXResult.Content = 0;
 }