Beispiel #1
0
 /// <summary>
 /// Tramite data is lazy obtained
 /// </summary>
 /// <param name="pendiente"></param>
 /// <returns>Producto and FechaCarga</returns>
 public long[] getTramite(Pendiente pendiente)
 {
     using (var context = new Data.PakBackEndEntities())
     {
         var tramite = (from p in context.Piezas
                        join o in context.OrdenRetiro on p.IdOrdenRetiro equals o.IdOrdenRetiro
                        where p.IdPieza == pendiente.IdPieza
                        select new { p.NroProducto, o.FechaCarga }
                        ).Single();
         return(new[] { long.Parse(tramite.NroProducto), long.Parse(tramite.FechaCarga?.ToString("yyyy")) });
     }
 }
Beispiel #2
0
        /// <summary>
        /// Update data on table AppDistribuidores_DatosAdicionalesTramitaciones
        /// </summary>
        /// <param name="IdPieza">IdPieza on table AppDistribuidores_Tramitaciones</param>
        /// <param name="pendienteDato">Data for update</param>
        /// <returns>True when update</returns>
        public bool UpdateDato(int IdPieza, PendienteDato pendienteDato)
        {
            using (var context = new Data.PakBackEndEntities())
            {
                var dato = (from t in context.AppDistribuidores_Tramitaciones
                            join dt in context.AppDistribuidores_DatosAdicionalesTramitaciones on t.IdTramitacion equals dt.IdTramitacion
                            where t.IdSistema == 1 && t.IdPieza == IdPieza && dt.IdTipoDato == (int)pendienteDato.TipoDato
                            select dt
                            ).Single();
                dato.Valor = pendienteDato.Valor;
                dato.IdEstadoTramitacion = pendienteDato.IdEstadoTramitacion;
                dato.CantidadReintentos  = pendienteDato.CantidadReintentos;
                dato.Error      = pendienteDato.Error;
                dato.FechaEnvio = pendienteDato.FechaEnvio;
                dato.FechaFin   = pendienteDato.FechaFin;

                return(context.SaveChanges() > 0);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Get Pendientes to process
        /// </summary>
        /// <returns>Items to be emmited during process</returns>
        public IObservable <Pendiente> GetPendientes()
        {
            try
            {
                var maxRetries = Properties.Settings.Default.MaxRetries;
                using (var context = new Data.PakBackEndEntities())
                {
                    var tramitaciones = (from t in context.AppDistribuidores_Tramitaciones
                                         join dt in context.AppDistribuidores_DatosAdicionalesTramitaciones on t.IdTramitacion equals dt.IdTramitacion
                                         where t.IdSistema == 1 && dt.CantidadReintentos <= maxRetries
                                         group dt by t into gt
                                         select new Pendiente
                    {
                        IdTramitacion = gt.Key.IdTramitacion,
                        IdPieza = gt.Key.IdPieza,
                        Datos = (from d in gt
                                 where d.IdTipoDato != (int)TipoDato.MAIL
                                 select new PendienteDato
                        {
                            TipoDato = (TipoDato)d.IdTipoDato,
                            CantidadReintentos = d.CantidadReintentos,
                            IdEstadoTramitacion = d.IdEstadoTramitacion,
                            Valor = d.Valor,
                            FechaEnvio = d.FechaEnvio,
                            FechaFin = d.FechaFin,
                            Error = d.Error
                        }).ToList()
                    }).ToList();
                    foreach (var t in tramitaciones)
                    {
                        var dato = t.Datos.Where(d => d.TipoDato == TipoDato.TIPO_TRAMITEFORMULARY_TYPE).FirstOrDefault();
                        int id;
                        if (dato != null && dato.IdEstadoTramitacion == 2 && int.TryParse(dato.Valor, out id))
                        {
                            dato.Valor = (from f in context.AppDistribuidores_TiposFormulariosJANO
                                          where f.IdTipoFormularioJANO == id
                                          select f.CodigoJANO
                                          ).Single();
                        }
                        if (dato?.Valor == null || dato.IdEstadoTramitacion != 2)
                        {
                            t.IdPieza = 0;
                        }
                        if (t.IdPieza > 0)
                        {
                            t.NroEnvio = long.Parse((from p in context.Piezas
                                                     where p.IdPieza == t.IdPieza
                                                     select p.NumeroEnvio).Single());
                        }
                    }

                    return(tramitaciones
                           .Where(t => t.IdPieza > 0)
                           .ToList()
                           .ToObservable());
                }
            }
            catch (Exception ex)
            {
                return(Observable.Create((IObserver <Pendiente> observer) =>
                {
                    observer.OnError(ex);
                    return () => { };
                }));
            }
        }