private void btnEnviar_Click(object sender, EventArgs e) { try { timerLog.Stop(); this.LogTextBox.Clear(); string sourceDirectory = this.txtDirectorio.Text; List <string> fileList = new List <string>(); this.btnVerDetalleCorrida.Enabled = false; lastLogId = 0; this.fechaLog = DateTime.MinValue; this.txtNroCorrida.Text = string.Empty; if (Directory.Exists(sourceDirectory)) { // Obtengo los archivos a procesar fileList.AddRange(Directory.GetFiles(sourceDirectory, "*.*", SearchOption.TopDirectoryOnly).ToList()); if (fileList.Count > 0) { // Genero una corrida MostrarMensajeEnLog("Creando Corrida..."); CorridaSubidaArchivo = SubidaArchivoService.CrearNuevaCorrida(); this.txtNroCorrida.Text = CorridaSubidaArchivo.Id.ToString(); // Copio los archivos al server de telefónica MostrarMensajeEnLog("Copiando Archivos al Servidor..."); this.Refresh(); //fileList = CopiarArchivosParaProcesar(fileList); fileList = CopiarArchivosParaProcesarPorFTP(fileList); // Ejecuto MostrarMensajeEnLog("Enviando mensaje de ejecución asincrónica..."); EjecucionSubidaArchivos ejecucionData = new EjecucionSubidaArchivos(); ejecucionData.CorridaId = CorridaSubidaArchivo.Id; ejecucionData.FileList = fileList; // Activo el timer porque a veces no retorna la siguiente llamada fechaLog = DateTime.MinValue; timerLog.Interval = 3000; timerLog.Start(); ThreadPool.QueueUserWorkItem(new WaitCallback(EjecutarCorridaCallBack), ejecucionData); } } } catch (Exception ex) { string message = GetExceptionMessage(ex) + GetExceptionStackTrace(ex); MessageBox.Show(message); } }
public CorridaSubidaArchivoDto CrearNuevaCorrida() { using (var ctx = new FacturaElectronicaEntities()) { CorridaSubidaArchivo corrida = new CorridaSubidaArchivo(); corrida.FechaProceso = DateTime.Now; corrida.Procesada = null; ctx.CorridaSubidaArchivoes.AddObject(corrida); ctx.SaveChanges(); CorridaSubidaArchivoDto corridaDto = new CorridaSubidaArchivoDto(); EntityMapper.Map(corrida, corridaDto); return(corridaDto); } }
private void FormDetalleDeEnvioArhivoAWeb_Load(object sender, EventArgs e) { CorridaSubidaArchivoSearch search = new CorridaSubidaArchivoSearch(); search.CorridaId = CorridaId; search.LoadLog = true; search.LoadDetalle = true; CorridaSubidaArchivoDto corridaDto = SubidaArchivoService.ObtenerCorridas(search).Single(); this.lblIdentificador.Text = corridaDto.Id.ToString(); this.lblFecha.Text = corridaDto.FechaProceso.ToString(); CargarLog(corridaDto); CargarDetalleDeArchivos(corridaDto); }
private void gridCorridas_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { try { CorridaSubidaArchivoDto corridaDto = this.gridCorridas.SelectedRows[0].DataBoundItem as CorridaSubidaArchivoDto; if (corridaDto != null) { FormDetalleDeEnvioArhivoAWeb frmDetalle = new FormDetalleDeEnvioArhivoAWeb(); frmDetalle.CorridaId = corridaDto.Id; frmDetalle.ShowDialog(this); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void btnRefresh_Click(object sender, EventArgs e) { try { this.LogTextBox.Clear(); CorridaSubidaArchivoSearch search = new CorridaSubidaArchivoSearch(); search.CorridaId = CorridaId; search.LoadLog = true; CorridaSubidaArchivoDto corridaDto = SubidaArchivoService.ObtenerCorridas(search).Single(); CargarLog(corridaDto); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void CargarLog(CorridaSubidaArchivoDto corridaDto) { List <CorridaSubidaArchivoLogDto> logs = corridaDto.Log; if (logs != null && logs.Count() > 0) { foreach (CorridaSubidaArchivoLogDto log in logs) { if (log.FinCorrida) { continue; } else { this.LogTextBox.Text += log.Mensaje + Environment.NewLine; } } } }
public void EjecutarCorrida(EjecutarCorridaSubidaArchivo corrida) { CorridaSubidaArchivoDto dto = null; SubidaArchivoServiceClient client = new SubidaArchivoServiceClient(); ClientCredentialHelper.SetCredentials(client.ClientCredentials); try { client.EjecutarCorrida(corrida); client.Close(); } catch { if (client.State != System.ServiceModel.CommunicationState.Closed) { client.Abort(); } } }
public CorridaSubidaArchivoDto CrearNuevaCorrida() { CorridaSubidaArchivoDto dto = null; SubidaArchivoServiceClient client = new SubidaArchivoServiceClient(); ClientCredentialHelper.SetCredentials(client.ClientCredentials); try { dto = client.CrearNuevaCorrida(); client.Close(); } catch { if (client.State != System.ServiceModel.CommunicationState.Closed) { client.Abort(); } throw; } return(dto); }
/// <summary> /// Obtiene las corridas de subida de archivo /// </summary> /// <param name="search"></param> /// <returns></returns> public List <CorridaSubidaArchivoDto> ObtenerCorridas(CorridaSubidaArchivoSearch search) { List <CorridaSubidaArchivoDto> corridasList = new List <CorridaSubidaArchivoDto>(); using (FacturaElectronicaEntities ctx = new FacturaElectronicaEntities()) { IQueryable <CorridaSubidaArchivo> query = ctx.CorridaSubidaArchivoes; if (search.CorridaId.HasValue) { query = query.Where(c => c.Id == search.CorridaId); } else { if (!String.IsNullOrEmpty(search.NombreArchivoLike)) { query = query.Where(c => c.CorridaSubidaArchivoDetalles.Where(d => d.NombreArchivo.Contains(search.NombreArchivoLike)).Count() > 0); } if (search.FechaDesde.HasValue) { DateTime desde = search.FechaDesde.Value.Date; query = query.Where(c => c.FechaProceso >= desde); } if (search.FechaHasta.HasValue) { DateTime hasta = search.FechaHasta.Value.Date.AddDays(1).AddSeconds(-1); query = query.Where(c => c.FechaProceso <= hasta); } } query = query.OrderByDescending(c => c.Id); List <CorridaSubidaArchivo> corridas = query.ToList(); foreach (var dbCorrida in corridas) { CorridaSubidaArchivoDto corridaDto = new CorridaSubidaArchivoDto(); EntityMapper.Map(dbCorrida, corridaDto); if (search.LoadDetalle) { List <CorridaSubidaArchivoDetalleDto> detalleDtoList = new List <CorridaSubidaArchivoDetalleDto>(); foreach (var dbDetalle in dbCorrida.CorridaSubidaArchivoDetalles) { CorridaSubidaArchivoDetalleDto detalle = new CorridaSubidaArchivoDetalleDto(); EntityMapper.Map(dbDetalle, detalle); detalleDtoList.Add(detalle); } corridaDto.Detalles = detalleDtoList; } if (search.LoadLog) { List <CorridaSubidaArchivoLogDto> logDtoList = new List <CorridaSubidaArchivoLogDto>(); IQueryable <CorridaSubidaArchivoLog> queryLog = dbCorrida.CorridaSubidaArchivoLogs.AsQueryable(); if (search.FechaLog.HasValue) { queryLog = queryLog.Where(l => l.Fecha >= search.FechaLog.Value); } foreach (var dbLog in queryLog) { CorridaSubidaArchivoLogDto logDto = new CorridaSubidaArchivoLogDto(); EntityMapper.Map(dbLog, logDto); logDtoList.Add(logDto); if (logDto.Mensaje == FinCorridaStr) { logDto.FinCorrida = true; } } corridaDto.Log = logDtoList; } corridasList.Add(corridaDto); } } return(corridasList); }
private void btnEnviar_Click(object sender, EventArgs e) { try { timerLog.Stop(); this.LogTextBox.Clear(); string sourceDirectory = this.txtDirectorio.Text; List <string> fileList = new List <string>(); this.btnVerDetalleCorrida.Enabled = false; lastLogId = 0; this.fechaLog = DateTime.MinValue; this.txtNroCorrida.Text = string.Empty; if (File.Exists(sourceDirectory)) { EjecutarCorridaSubidaArchivo corrida = new EjecutarCorridaSubidaArchivo(); // Obtengo los archivos a procesar fileList.Add(sourceDirectory); // Asigno lo valores de la pantalla al objeto corrida if (AsignarValoresEnPantallaACorrida(corrida)) { if (fileList.Count > 0) { // Genero una corrida MostrarMensajeEnLog("Creando Corrida..."); CorridaSubidaArchivo = SubidaArchivoService.CrearNuevaCorrida(); this.txtNroCorrida.Text = CorridaSubidaArchivo.Id.ToString(); // Copio los archivos al server de telefónica MostrarMensajeEnLog("Copiando Archivos al Servidor..."); this.Refresh(); //fileList = CopiarArchivosParaProcesar(fileList); fileList = CopiarArchivosParaProcesarPorFTP(fileList); // Ejecuto MostrarMensajeEnLog("Enviando mensaje de ejecución asincrónica..."); corrida.CorridaId = CorridaSubidaArchivo.Id; corrida.FileNames = fileList; corrida.ForzarDatosCliente = true; // Asigno los datos de la pantalla; // Activo el timer porque a veces no retorna la siguiente llamada fechaLog = DateTime.MinValue; timerLog.Interval = 3000; timerLog.Start(); ThreadPool.QueueUserWorkItem(new WaitCallback(EjecutarCorridaCallBack), corrida); } } } else { errorProviderCargaDeDatos.SetError(this.txtDirectorio, "Debe seleccionar un archivo"); } } catch (Exception ex) { string message = GetExceptionMessage(ex) + GetExceptionStackTrace(ex); MessageBox.Show(message); } }
private void CargarDetalleDeArchivos(CorridaSubidaArchivoDto corridaDto) { this.bsDetalleArchivosWeb.DataSource = corridaDto.Detalles; this.gridArchivos.DataSource = this.bsDetalleArchivosWeb; }