public List <MODFlujo> Obtener(MODFlujoFiltro filtro)
        {
            List <MODFlujo> resultado = new List <MODFlujo>();

            try
            {
                resultado = ConfiguracionNegocio.Flujos;
                if (filtro.IdServicio != 0)
                {
                    resultado = resultado.Where(y => y.IdServicio == filtro.IdServicio).ToList();
                }
                if (filtro.IdEmpresa != 0)
                {
                    resultado = resultado.Where(y => y.IdEmpresa == filtro.IdEmpresa).ToList();
                }
                if (filtro.Id != 0)
                {
                    resultado = resultado.Where(y => y.Id == filtro.Id).ToList();
                }
                if (!string.IsNullOrEmpty(filtro.Nombre))
                {
                    resultado = resultado.Where(y => y.Nombre.Contains(filtro.Nombre)).ToList();
                }

                resultado.ForEach(y => y.Categoria = y.IdCategoria == 0 ? "" : ConfiguracionNegocio.CategoriasFlujos.FirstOrDefault(x => x.Id == y.IdCategoria).Nombre);
            }
            catch (Exception e)
            {
                Log.WriteLog(e, "SIR.Negocio.Concretos.Reportes - Obtener",
                             String.Format(@"filtro:{0}", System.Text.Json.JsonSerializer.Serialize(filtro)),
                             ErrorType.Error);
            }
            return(resultado);
        }
        public Dictionary <int, string> ObtenerVersiones(MODFlujoFiltro filtro)
        {
            Dictionary <int, string> result = new Dictionary <int, string>();

            try
            {
                using (var coneccion = this.ObtenerConexionPrincipal())
                {
                    result = coneccion.Query <dynamic>("StpFlujoHistorico",
                                                       new
                    {
                        accion     = 4,
                        IdEmpresa  = filtro.IdEmpresa,
                        IdServicio = filtro.IdServicio,
                        IdElemento = filtro.IdElemento,
                        StrPeriodo = filtro.StrPeriodo
                    },
                                                       commandType: System.Data.CommandType.StoredProcedure).ToDictionary(x => (int)x.Version, x => String.Format("v.{0}", (int)x.Version));
                    coneccion.Close();
                }
            }
            catch (Exception e)
            {
                Log.WriteLog(e, "SIR.Datos.Concretos.ConfiguracionOrigenDatos - Ejecutar",
                             String.Format(@"campos:{0} ", System.Text.Json.JsonSerializer.Serialize(filtro)),
                             ErrorType.Error);
            }
            return(result);
        }
        public List <string> conPrerequisito(MODFlujoFiltro filtro)
        {
            List <string> result = new List <string>();

            try
            {
                using (var coneccion = this.ObtenerConexionPrincipal())
                {
                    result = coneccion.Query <string>("StpFlujoHistorico",
                                                      new
                    {
                        accion       = 5,
                        IdFlujo      = filtro.Id,
                        IdEmpresa    = filtro.IdEmpresa,
                        IdServicio   = filtro.IdServicio,
                        IdElemento   = filtro.IdElemento,
                        Periodicidad = filtro.Periodicidad,
                        StrPeriodo   = filtro.StrPeriodo
                    },
                                                      commandType: System.Data.CommandType.StoredProcedure).ToList();
                    coneccion.Close();
                }
            }
            catch (Exception e)
            {
                Log.WriteLog(e, "SIR.Datos.Concretos.ConfiguracionOrigenDatos - Ejecutar",
                             String.Format(@"campos:{0} ", System.Text.Json.JsonSerializer.Serialize(filtro)),
                             ErrorType.Error);
            }
            return(result);
        }
Exemplo n.º 4
0
 public async Task <MODResultado> IniciarFlujoAsync([FromBody] MODFlujoFiltro mod)
 {
     return(await Task <MODResultado> .Run(() =>
     {
         mod.Notificar = NotificacionHub.NotificarCliente;
         var negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;
         var resultado = negocio.Ejecutar(mod);
         return resultado;
     }));
 }
        public Dictionary <int, string> ObtenerVersiones(MODFlujoFiltro filtro)
        {
            Dictionary <int, string> retorno = new Dictionary <int, string>();

            try
            {
                var data = FabricaDatos.CrearFlujoTrabajoDatos;
                return(data.ObtenerVersiones(filtro));
            }
            catch (Exception e)
            {
                Log.WriteLog(e, this.GetType().FullName + " - ObtenerPasos",
                             String.Format(@"filtro:{0}", System.Text.Json.JsonSerializer.Serialize(filtro)),
                             ErrorType.Error);
            }
            return(retorno);
        }
        public IEnumerable <MODGruposDeEjecucion> ObtenerPasos(MODFlujoFiltro filtro)
        {
            IEnumerable <MODGruposDeEjecucion> resultado = new List <MODGruposDeEjecucion>();

            try
            {
                var data = FabricaDatos.CrearFlujoTrabajoDatos;
                return(data.ObtenerPasos(filtro));
            }
            catch (Exception e)
            {
                Log.WriteLog(e, this.GetType().FullName + " - ObtenerPasos",
                             String.Format(@"filtro:{0}", System.Text.Json.JsonSerializer.Serialize(filtro)),
                             ErrorType.Error);
            }
            return(resultado);
        }
        public List <MODOpciones> ObtenerAccionesSeleccionadas(MODFlujoFiltro filtro)
        {
            List <MODOpciones> grupos = null;

            using (var conn = ObtenerConexionPrincipal())
            {
                var parametros = new DynamicParameters();
                parametros.Add("@accion", 9);
                parametros.Add("@IdEmpresa", filtro.IdEmpresa);
                parametros.Add("@IdReporte", filtro.IdElemento);
                parametros.Add("@IdServicio", filtro.IdServicio);
                parametros.Add("@IdTarea", filtro.IdTarea);
                grupos = conn.Query <MODOpciones, MODProcTipoOpcion, MODOpciones>("StpFlujos", (p, o) => { p.procTipoOpcion = o; return(p); }, parametros, commandTimeout: int.MaxValue, commandType: CommandType.StoredProcedure).ToList();
                conn.Close();
            }
            return(grupos);
        }
        public List <MODOpciones> ObtenerAccionesSeleccionadas(MODFlujoFiltro filtro)
        {
            List <MODOpciones> resultado = new List <MODOpciones>();

            try
            {
                var data = FabricaDatos.CrearFlujoTrabajoDatos;
                return(data.ObtenerAccionesSeleccionadas(filtro));
            }
            catch (Exception e)
            {
                Log.WriteLog(e, this.GetType().FullName + " - ObtenerOpciones",
                             String.Format(@"filtro:{0}", System.Text.Json.JsonSerializer.Serialize(filtro)),
                             ErrorType.Error);
            }
            return(resultado);
        }
        public IEnumerable <MODGruposDeEjecucion> ObtenerPasos(MODFlujoFiltro filtro)
        {
            IEnumerable <MODGruposDeEjecucion> resultado;

            try
            {
                var coneccion = this.ObtenerConexionPrincipal();
                Dictionary <int, MODGruposDeEjecucion> pasos = new Dictionary <int, MODGruposDeEjecucion>();
                coneccion.Query <MODGruposDeEjecucion, MODTarea, MODFlujo, MODGruposDeEjecucion>("StpFlujos", (g, t, f) =>
                {
                    MODGruposDeEjecucion grupo;
                    if (!pasos.TryGetValue(g.Id, out grupo))
                    {
                        grupo        = g;
                        grupo.Tareas = new List <MODTarea>();
                        pasos.Add(g.Id, grupo);
                    }
                    if (t != null)
                    {
                        t.Flujo = f;
                        grupo.Tareas.Add(t);
                    }
                    return(grupo);
                },
                                                                                                 new
                {
                    accion     = 2,
                    IdEmpresa  = filtro.IdEmpresa,
                    IdServicio = filtro.IdServicio,
                    IdReporte  = filtro.IdElemento
                }, commandType: System.Data.CommandType.StoredProcedure);
                resultado = pasos.Values.ToList();
            }
            catch (Exception e)
            {
                //Implementar Log
                resultado = null;
                Log.WriteLog(e, this.GetType().FullName, "", ErrorType.Error);
            }
            return(resultado);
        }
        public List <MODOpciones> ObtenerOpciones(MODFlujoFiltro filtro)
        {
            List <MODOpciones> grupos = null;

            using (var conn = ObtenerConexionPrincipal())
            {
                var parametros = new DynamicParameters();
                parametros.Add("@accion", 6);
                parametros.Add("@IdEmpresa", filtro.IdEmpresa);
                parametros.Add("@IdReporte", filtro.IdElemento);
                parametros.Add("@IdServicio", filtro.IdServicio);
                parametros.Add("@IdTarea", filtro.IdTarea);
                var reader = conn.QueryMultiple("StpFlujos", parametros, null, commandTimeout: int.MaxValue, System.Data.CommandType.StoredProcedure);
                if (HasRows(reader))
                {
                    grupos = reader.Read <MODOpciones>().ToList();
                }
                conn.Close();
            }
            return(grupos);
        }
        public List <IDictionary <string, object> > Consultar(MODFlujoFiltro filtro)
        {
            try
            {
                var _tarea = ConfiguracionNegocio.Flujos.FirstOrDefault(y =>
                                                                        y.IdEmpresa == filtro.IdEmpresa &&
                                                                        y.IdServicio == filtro.IdServicio &&
                                                                        y.IdElemento == filtro.IdElemento).Tareas.FirstOrDefault(y => y.Id == filtro.IdTarea);
                Dictionary <string, object> parametros = new Dictionary <string, object>();
                parametros.Add("@version", filtro.Version);
                parametros.Add("@periodoSIR", filtro.StrPeriodo);

                var data = FabricaDatos.CrearFlujoTrabajoDatos;
                return(data.Consultar(_tarea.Reporte.campos, _tarea.NombreTablaSIR, parametros));
            }
            catch (Exception e)
            {
                Log.WriteLog(e, "SIR.Negocio.Concretos.FlujoDeTrabajo.FlujoTrabajoNegocio - Consultar",
                             JsonSerializer.Serialize(filtro),
                             ErrorType.Error);
            }
            return(new List <IDictionary <string, object> >());
        }
        public List <object> ObtenerOrigenesPor(MODFlujoFiltro filtro)
        {
            IEnumerable <MODTarea> tareas = new List <MODTarea>();
            MODTarea tarea = ConfiguracionNegocio.Flujos.SelectMany(x => x.Tareas, (x, y) => y).Where(x => x.Id == filtro.IdTarea).FirstOrDefault();

            tareas = ConfiguracionNegocio.Flujos.Where(x => x.IdEmpresa == filtro.IdEmpresa && x.IdServicio == filtro.IdServicio && x.IdElemento == filtro.IdElemento).SelectMany(x => x.Tareas, (x, y) => y);
            tareas = tareas.Where(x => x.Proceso == EnumProceso.Obtener || x.Proceso == EnumProceso.Registrar);
            tareas = tareas.Where(x => x.IdGrupoEjecucion == tarea.IdGrupoEjecucion);
            return(tareas.Select(x =>
            {
                object y = null;
                switch (x.Proceso)
                {
                case EnumProceso.Obtener:
                    y = new { id = x.Id, Nombre = x.ConfiguracionBD.Nombre, campos = x.Reporte.campos, idGrupoEjecucion = x.IdGrupoEjecucion };
                    break;

                case EnumProceso.Registrar:
                    y = new { id = x.Id, Nombre = x.Reporte.Nombre, campos = x.Reporte.campos, idGrupoEjecucion = x.IdGrupoEjecucion };
                    break;
                }
                return y;
            }).ToList());
        }
 public List <MODFlujo> ObtonerFlujo(MODFlujoFiltro filtro)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 14
0
        public List <MODOpciones> ObtenerAccionesSeleccionadas(MODFlujoFiltro filtro)
        {
            var negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.ObtenerAccionesSeleccionadas(filtro));
        }
Exemplo n.º 15
0
        public List <MODFlujo> ObtonerFlujo([FromBody] MODFlujoFiltro filtro)
        {
            var negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.Obtener(filtro));
        }
Exemplo n.º 16
0
        public List <IDictionary <string, object> > Consultar([FromBody] MODFlujoFiltro filtro)
        {
            var negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.Consultar(filtro));
        }
Exemplo n.º 17
0
        public List <object> ObtenerOrigenesPor(MODFlujoFiltro filtro)
        {
            IFlujoTrabajoNegocio negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.ObtenerOrigenesPor(filtro));
        }
Exemplo n.º 18
0
        public Dictionary <int, string> ObtenerVersiones(MODFlujoFiltro filtro)
        {
            IFlujoTrabajoNegocio negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.ObtenerVersiones(filtro));
        }
Exemplo n.º 19
0
        public IEnumerable <MODGruposDeEjecucion> ObtenerPasos(MODFlujoFiltro filtro)
        {
            IFlujoTrabajoNegocio negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.ObtenerPasos(filtro));
        }
Exemplo n.º 20
0
        public List <MODGruposDeEjecucion> ObtenerGrupos([FromBody] MODFlujoFiltro filtro)
        {
            var negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.ObtenerGrupos(filtro.IdCategoria));
        }
        public MODResultado Ejecutar(MODFlujoFiltro filtro)
        {
            MODResultado resultado = new MODResultado();

            try
            {
                var _flujo = ConfiguracionNegocio.Flujos.FirstOrDefault(y =>
                                                                        y.IdEmpresa == filtro.IdEmpresa &&
                                                                        y.IdServicio == filtro.IdServicio &&
                                                                        y.IdElemento == filtro.IdElemento &&
                                                                        y.Tipo == filtro.TipoFlujo);
                if (_flujo != null)
                {
                    var _flujohistorico = FabricaDatos.CrearFlujoTrabajoDatos;
                    _flujo.Periodo     = filtro.Periodo;
                    _flujo.DatoPeriodo = filtro.DatoPeriodo;

                    var _historico = new MODFlujoHistorico
                    {
                        IdEmpresa    = _flujo.IdEmpresa,
                        IdServicio   = _flujo.IdServicio,
                        IdElemento   = _flujo.IdElemento,
                        TipoFlujo    = _flujo.Tipo,
                        IdFlujo      = _flujo.Id,
                        Periodicidad = _flujo.Periodicidad,
                        EstadoFlujo  = EnumEstado.Ejecutando,
                        Periodo      = FijarPeriodoPorPeriodicidad(_flujo.Periodo, _flujo.Periodicidad, _flujo.DatoPeriodo)
                    };
                    var prerequisitos = _flujohistorico.conPrerequisito(filtro);
                    if (prerequisitos.Count() > 0)
                    {
                        resultado.DatosAdicionales = prerequisitos.ToDictionary(x => x, x => x);
                        resultado.Errores.Add("FLUJOS.ERRORES.FLU001");
                        return(resultado);
                    }
                    for (LinkedListNode <MODTarea> _tarea = _flujo.Tareas.First; _tarea != null;)
                    {
                        _historico.IdTarea            = _tarea.Value.Id;
                        _historico.Proceso            = _tarea.Value.Proceso;
                        _historico.FlujoFechaCreacion = DateTime.Now;
                        _historico.TareaFechaCreacion = DateTime.Now;
                        _tarea.Value.Periodo          = _flujo.Periodo;
                        _tarea.Value.Periodicidad     = _flujo.Periodicidad;
                        _tarea.Value.IdElemento       = _flujo.IdElemento;
                        try
                        {
                            if (_tarea.Value.IdGrupoEjecucion == filtro.IdGrupoEjecucion && resultado.esValido)
                            {
                                _flujohistorico.Historico(ref _historico, Comun.Enumeradores.EnumAccionBaseDatos.Insertar);

                                var paso = GenerarInstancia(_tarea.Value.Proceso);
                                paso.Configurar(_flujo);
                                resultado = paso.Ejecutar(ref _tarea, _tarea.Value.Reporte, _tarea.Value.Archivo);

                                _historico.TareaFechaFinalizacion = DateTime.Now;
                                _historico.TareaEsValido          = resultado.esValido;
                                _historico.EstadoFlujo            = resultado.esValido ? EnumEstado.Ejecutando : EnumEstado.Error;
                                _historico.DescripcionError       = string.Join('-', resultado.Errores);
                                if (_tarea.Value.Proceso == EnumProceso.Finalizar)
                                {
                                    _historico.EstadoFlujo = EnumEstado.Ok;
                                }

                                _flujohistorico.Historico(ref _historico, Comun.Enumeradores.EnumAccionBaseDatos.Actualizar);
                                if (filtro.Notificar != null)
                                {
                                    var ninfo = new {
                                        proceso = _tarea.Value.Proceso,
                                        odata   = (_tarea.Value.ConfiguracionBD != null)?_tarea.Value.ConfiguracionBD.Nombre:"",
                                        desc    = _tarea.Value.Reporte.Descripcion
                                    };
                                    filtro.Notificar(filtro.Usuario, JsonSerializer.Serialize(ninfo));
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            Log.WriteLog(e, "SIR.Negocio.Concretos.FlujoDeTrabajo.FlujoTrabajoNegocio - Paso",
                                         JsonSerializer.Serialize(_tarea.Value),
                                         ErrorType.Error);
                            resultado.Errores.Add(e.Message);
                            _historico.TareaFechaFinalizacion = DateTime.Now;
                            _historico.FlujoFechaFinalizacion = DateTime.Now;
                            _historico.TareaEsValido          = false;
                            _historico.DescripcionError       = e.Message;
                            _historico.EstadoFlujo            = EnumEstado.Error;
                            _flujohistorico.Historico(ref _historico, Comun.Enumeradores.EnumAccionBaseDatos.Actualizar);
                        }
                        _tarea = _tarea.Next;
                    }
                }
                else
                {
                    resultado.Errores.Add("FLUJO.NOEXISTENTE");
                }
            }
            catch (Exception e)
            {
                Log.WriteLog(e, "SIR.Negocio.Concretos.FlujoDeTrabajo.FlujoTrabajoNegocio - Ejecutar",
                             JsonSerializer.Serialize(filtro),
                             ErrorType.Error);
                resultado.Errores.Add(e.Message);
            }
            return(resultado);
        }