コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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;
                    }
                }
            }
        }
コード例 #7
0
        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();
                }
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
        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);
            }
        }
コード例 #11
0
 private void CargarDetalleDeArchivos(CorridaSubidaArchivoDto corridaDto)
 {
     this.bsDetalleArchivosWeb.DataSource = corridaDto.Detalles;
     this.gridArchivos.DataSource         = this.bsDetalleArchivosWeb;
 }