Files
SIG/TareasProgramadas/Tareas119.ashx
2020-07-06 11:57:19 -07:00

459 lines
16 KiB
Plaintext

<%@ WebHandler Language="C#" Class="TareasJam" %>
using System;
using System.Web;
using Extensiones;
using System.Net;
using System.IO;
using System.Web.Services;
using System.Web.Services.Protocols;
using GemBox.Spreadsheet;
using System.Data;
using System.Text;
public class TareasJam : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
bool retorno = false;
string Metodo = context.Request["Metodo"] ==null?"": context.Request["Metodo"];
int CveEmpresa =context.Request["CveEmpresa"] ==null?0: context.Request["CveEmpresa"].ToEntero();
switch (Metodo)
{
case "TestConexion":
retorno = PruebaConexionFTP("ftp://us2.hostedftp.com/", "agrojam", "A12345678");
break;
case "EjecutaThalamus":
retorno =EjecutaThalamus(CveEmpresa);
break;
default:
break;
}
if (retorno)
{
context.Response.Write("True");
}else
{
context.Response.Write("False");
}
context.Response.End();
}
private bool EjecutaThalamus(int CveEmpresa)
{
bool Respuesta = false;
StringBuilder SBLog = new StringBuilder();
ClsGenerales ObjGenerales = new ClsGenerales();
DataTable DTProductos = new DataTable();
DataTable DTVentas = new DataTable();
DataTable DTClientes = new DataTable();
DataTable DTAlmacenes = new DataTable();
string FTPServer = "ftp://127.0.0.1/";
string TFPUsr = "Toor";
string FTPPass = "agj-3500";
bool ErrorProceso = false;
SBLog.AppendLine("<b>Consultas</b><br>");
SBLog.AppendLine("<table border='1'><tr><th>Consulta</th><th>Registros</th></tr>");
if (ObjGenerales.GetJAMCorveta(1))
{
DTProductos = ObjGenerales.DtResultados.Copy();
SBLog.AppendLine($"<tr><td>Productos</td><td>{DTProductos.Rows.Count}</td></tr>");
}
else {
ErrorProceso = true;
SBLog.AppendLine($"<tr><td>Productos</td><td>Error al consultar</td></tr>");
}
if (ObjGenerales.GetJAMCorveta(2) & ErrorProceso == false)
{
DTVentas = ObjGenerales.DtResultados.Copy();
SBLog.AppendLine($"<tr>Ventas<td></td><td>{DTVentas.Rows.Count}</td></tr>");
}
else
{
ErrorProceso = true;
SBLog.AppendLine($"<tr><td>Ventas</td><td>Error al consultar</td></tr>");
}
if (ObjGenerales.GetJAMCorveta(3) & ErrorProceso == false)
{
DTClientes = ObjGenerales.DtResultados.Copy();
SBLog.AppendLine($"<tr><td>Clientes</td><td>{DTClientes.Rows.Count}</td></tr>");
}
else {
ErrorProceso = true;
SBLog.AppendLine($"<tr><td>Clientes</td><td>Error al consultar</td></tr>");
}
if (ObjGenerales.GetJAMCorveta(4) & ErrorProceso == false)
{
DTAlmacenes = ObjGenerales.DtResultados.Copy();
SBLog.AppendLine($"<tr><td>Almacenes</td><td>{DTAlmacenes.Rows.Count}</td></tr>");
}
else {
ErrorProceso = true;
SBLog.AppendLine($"<tr><td>Almacenes</td><td>Error al consultar</td></tr>");
}
SBLog.AppendLine("</table>");
SBLog.AppendLine("<br>");
ObjGenerales.Dispose();
if (!ErrorProceso)
{
try
{
DTProductos.Columns[0].ColumnName = "Código Producto Interno ";
DTProductos.Columns[1].ColumnName = "Nombre del Producto";
DTProductos.Columns[2].ColumnName = "Presentación";
DTProductos.AcceptChanges();
DTClientes.Columns[4].ColumnName = "address.countryId";
DTClientes.Columns[5].ColumnName = "address.stateId";
DTClientes.Columns[6].ColumnName = "address.city";
DTClientes.Columns[7].ColumnName = "address.street1";
DTClientes.Columns[8].ColumnName = "address.street2";
DTClientes.Columns[9].ColumnName = "address.postalCode";
DTClientes.Columns[9].ColumnName = "phone.intCode";
DTClientes.Columns[9].ColumnName = "phone.areaCode";
DTClientes.Columns[9].ColumnName = "phone.number";
DTClientes.Dispose();
DTVentas.Columns.RemoveAt(7);
DTVentas.AcceptChanges();
}
catch (Exception e)
{
SBLog.AppendLine("<b>Error al renombrar columnas</b>");
}
}
if (!ErrorProceso)
{
string RutaProductos = $@"{ HttpContext.Current.Server.MapPath("~") }Temp\Productos{DateTime.Now.ToString("yyyyMMdd")}.xlsx";
string RutaVentas = $@"{ HttpContext.Current.Server.MapPath("~") }Temp\Ventas{DateTime.Now.ToString("yyyyMMdd")}.xlsx";
string RutaClientes = $@"{ HttpContext.Current.Server.MapPath("~") }Temp\Clientes{DateTime.Now.ToString("yyyyMMdd")}.xlsx";
string RutaAlmacenes = $@"{ HttpContext.Current.Server.MapPath("~") }Temp\Almacenes{DateTime.Now.ToString("yyyyMMdd")}.xlsx";
SpreadsheetInfo.SetLicense(Extensiones.ModExtensiones.SerialGemBoxSpreadsheet());
var workbookProductos = new ExcelFile();
var worksheetProductos = workbookProductos.Worksheets.Add("Productos");
worksheetProductos.InsertDataTable(DTProductos, new InsertDataTableOptions()
{
ColumnHeaders = true,
StartRow = 0
});
workbookProductos.Save(RutaProductos);
var workbookVentas = new ExcelFile();
var worksheetVentas = workbookVentas.Worksheets.Add("Ventas");
worksheetVentas.InsertDataTable(DTVentas, new InsertDataTableOptions()
{
ColumnHeaders = true,
StartRow = 0
});
workbookVentas.Save(RutaVentas);
var workbookClientes = new ExcelFile();
var worksheetClientes = workbookClientes.Worksheets.Add("Clientes");
worksheetClientes.InsertDataTable(DTClientes, new InsertDataTableOptions()
{
ColumnHeaders = true,
StartRow = 0
});
workbookClientes.Save(RutaClientes);
var workbookAlmacenes = new ExcelFile();
var worksheetAlmacenes = workbookAlmacenes.Worksheets.Add("Almacenes");
worksheetAlmacenes.InsertDataTable(DTAlmacenes, new InsertDataTableOptions()
{
ColumnHeaders = true,
StartRow = 0
});
workbookAlmacenes.Save(RutaAlmacenes);
var FInfoProductos = new FileInfo(RutaProductos);
var FInfoVentas = new FileInfo(RutaVentas);
var FInfoClientes = new FileInfo(RutaClientes);
var FInfoAlmacenes = new FileInfo(RutaAlmacenes);
bool CargaProductos = false;
bool CargaVentas = false;
bool CargaClientes = false;
bool CargaAlmacenes = false;
SBLog.AppendLine("<b>Cargas</b><br>");
SBLog.AppendLine("<table border='1'> <tr><th>Archivo</th><th>Estado</th></tr>");
CargaProductos = CargarArchivos(FInfoProductos, FTPServer, TFPUsr, FTPPass);
if (CargaProductos)
{
CargaProductos = VerificarArchivo(FInfoProductos, FInfoProductos.Length, FTPServer, TFPUsr, FTPPass);
}
if (CargaProductos)
{
SBLog.AppendLine($"<tr><td>Productos</td><td>ok</td></tr>");
}
else
{
SBLog.AppendLine($"<tr><td>Productos</td><td>Error carga</td></tr>");
}
if (CargaProductos)
{
CargaVentas = CargarArchivos(FInfoVentas, FTPServer, TFPUsr, FTPPass);
if (CargaVentas)
{
CargaVentas = VerificarArchivo(FInfoVentas, FInfoVentas.Length, FTPServer, TFPUsr, FTPPass);
}
}
if (CargaVentas)
{
SBLog.AppendLine($"<tr><td>Ventas</td><td>ok</td></tr>");
}else
{
SBLog.AppendLine($"<tr><td>Ventas</td><td>Error carga</td></tr>");
}
if (CargaProductos & CargaVentas)
{
CargaClientes = CargarArchivos(FInfoClientes, FTPServer, TFPUsr, FTPPass);
if (CargaClientes)
{
CargaClientes = VerificarArchivo(FInfoClientes, FInfoClientes.Length, FTPServer, TFPUsr, FTPPass);
}
}
if (CargaClientes)
{
SBLog.AppendLine($"<tr><td>Clientes</td><td>ok</td></tr>");
}else
{
SBLog.AppendLine($"<tr><td>Clientes</td><td>Error carga</td></tr>");
}
if (CargaProductos & CargaVentas& CargaClientes )
{
CargaAlmacenes = CargarArchivos(FInfoAlmacenes, FTPServer, TFPUsr, FTPPass);
if (CargaClientes)
{
CargaAlmacenes = VerificarArchivo(FInfoAlmacenes, FInfoAlmacenes.Length, FTPServer, TFPUsr, FTPPass);
}
}
if (CargaAlmacenes)
{
SBLog.AppendLine($"<tr><td>Almacenes</td><td>ok</td></tr>");
}else
{
SBLog.AppendLine($"<tr><td>Almacenes</td><td>Error carga</td></tr>");
}
if (CargaProductos & CargaVentas & CargaClientes & CargaAlmacenes)
{
Respuesta = true;
}
else
{
Respuesta = false;
}
SBLog.AppendLine("</table>");
}
else
{
Respuesta = false;
}
string Cuerpo = Respuesta ? $"<b>Correcto</b><br>Tarea de carga de archios Corteva realizada correctamente<br> {SBLog.ToString()}" : $"<b>Error</b><br> Error tarea de carga de archios Corteva<br> {SBLog.ToString()}" ;
MandaCorreo(Cuerpo, Respuesta);
return Respuesta;
}
private void MandaCorreo(string Cuerpo, bool ErrorProceso)
{
try
{
ClsSisMail Correo = new ClsSisMail();
string Para = "julian@adssistemas.mx;rene.molina@adssistemas.mx;oscar.irigoyen@adssistemas.mx";
//string Para = "oscar.irigoyen@adssistemas.mx";
string Asunto = ErrorProceso ? $"Carga Layout Corteva {DateTime.Now.ToString("yyyy-MM-dd")}" : $"Carga Layout Corteva Error {DateTime.Now.ToString("yyyy-MM-dd")}";
Correo.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Cuerpo);
}catch(Exception ex)
{
Extensiones.ModExtensiones.GuardaLog(null,$"Error Tareas Programadas 119 error enviar mail --> {ex.Message} ");
}
}
private bool CargarArchivos(FileInfo FInfo, string FTPServer, string FTPUsr, string FTPPass)
{
bool Respuesta;
//var FInfo = new FileInfo(RutaArchivo);
if (FInfo.Exists)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create($"{FTPServer}/{FInfo.Name}");
request.Method = WebRequestMethods.Ftp.UploadFile;
int tamanio = 1024;
var buffer = new byte[tamanio + 1];
int byteRead = 0;
bool Conected = false;
request.Credentials = new NetworkCredential(FTPUsr, FTPPass);
try
{
request.GetResponse();
Conected = true;
}
catch (Exception ex)
{
Extensiones.ModExtensiones.GuardaLog(null,$"Error Tareas Programadas 119 Conexión a servidor FTP archivo { FInfo.Name } {ex.Message} ");
}
if (Conected)
{
Stream ftpStream;
FileStream f;
ftpStream = request.GetRequestStream();
f = File.OpenRead(FInfo.FullName);
try
{
do
{
byteRead = f.Read(buffer, 0, tamanio);
ftpStream.Write(buffer, 0, byteRead);
}
while (byteRead != 0);
Respuesta = true;
}
catch (Exception ex)
{
Respuesta = false;
Extensiones.ModExtensiones.GuardaLog(null,$"Error Tareas Programadas 119 cargando archivo { FInfo.Name } {ex.Message} ");
}
if (f is object)
{
f.Close();
}
if (ftpStream is object)
{
ftpStream.Close();
}
}
else
{
Respuesta = false;
// no se conecto al ftp probablemente credenciales erroneas
}
}
else
{
Respuesta = false;
// El archivo no existe en el disco local
}
return Respuesta;
}
private bool VerificarArchivo(FileInfo FInfo, long Tamanio, string FTPServer, string FTPUsr, string FTPPass)
{
bool Respuesta = false;
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create($"{FTPServer}/{FInfo.Name}");
request.Credentials = new NetworkCredential(FTPUsr, FTPPass);
request.Method = WebRequestMethods.Ftp.GetFileSize;
request.UseBinary = true;
FtpWebResponse loginresponse = (FtpWebResponse)request.GetResponse();
FtpWebResponse respSize = (FtpWebResponse)request.GetResponse();
respSize = (FtpWebResponse)request.GetResponse();
long size = respSize.ContentLength;
respSize.Close();
if (Tamanio == size)
{
Respuesta = true;
}
}catch(Exception ex)
{
Extensiones.ModExtensiones.GuardaLog(null,$"Error Tareas Programadas 119 verificando archivo { FInfo.Name } {ex.Message} ");
Respuesta = false;
}
return Respuesta;
}
private bool PruebaConexionFTP( string FTPServer, string FTPUsr, string FTPPass)
{
bool Respuesta = false;
FtpWebRequest request =(FtpWebRequest)WebRequest.Create($"{FTPServer}/Test.log");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(FTPUsr, FTPPass);
try
{
request.GetResponse();
Respuesta = true;
}
catch (Exception ex)
{
Extensiones.ModExtensiones.GuardaLog(null, $"Error Tareas Programadas 119 error Prueba de Conexión a servidor FTP archivo {ex.Message} ");
}
return Respuesta;
}
public bool IsReusable
{
get { return false; }
}
}