public IActionResult TotalElementos([FromBody] dynamic value)
 {
     try
     {
         String filtro_busqueda = value.filtro_busqueda;
         long   total           = SubproductoTipoDAO.getTotal(filtro_busqueda);
         return(Ok(new { success = true, total = total }));
     }
     catch (Exception e)
     {
         CLogger.write("5", "SubproductoTipoController.class", e);
         return(BadRequest(500));
     }
 }
 public IActionResult SubproductoTipo(int id)
 {
     try
     {
         SubproductoTipo subproductoTipo = SubproductoTipoDAO.getSubproductoTipo(id);
         subproductoTipo.usuarioActualizo = User.Identity.Name;
         bool eliminado = SubproductoTipoDAO.eliminarSubproductoTipo(subproductoTipo);
         return(Ok(new { success = eliminado }));
     }
     catch (Exception e)
     {
         CLogger.write("4", "SubproductoTipoController.class", e);
         return(BadRequest(500));
     }
 }
        public IActionResult SubproductoTipoPagina([FromBody] dynamic value)
        {
            try
            {
                int    pagina           = value.pagina != null ? (int)value.pagina : 1;
                int    registros        = value.registros != null ? (int)value.registros : 20;
                String filtro_busqueda  = value.filtro_busqueda;
                String columna_ordenada = value.columna_ordenada;
                String orden_direccion  = value.orden_direccion;

                List <SubproductoTipo>   subproductoTipos      = SubproductoTipoDAO.getPagina(pagina, registros, filtro_busqueda, columna_ordenada, orden_direccion);
                List <StSubproductoTipo> lstStSubproductoTipos = new List <StSubproductoTipo>();

                foreach (SubproductoTipo subproductoTipo in subproductoTipos)
                {
                    StSubproductoTipo temp = new StSubproductoTipo();
                    temp.id                 = subproductoTipo.id;
                    temp.nombre             = subproductoTipo.nombre;
                    temp.descripcion        = subproductoTipo.descripcion;
                    temp.usuarioCreo        = subproductoTipo.usuarioCreo;
                    temp.usuarioActualizo   = subproductoTipo.usuarioActualizo;
                    temp.estado             = subproductoTipo.estado;
                    temp.fechaCreacion      = subproductoTipo.fechaCreacion.ToString("dd/MM/yyyy H:mm:ss");
                    temp.fechaActualizacion = subproductoTipo.fechaActualizacion != null?subproductoTipo.fechaActualizacion.Value.ToString("dd/MM/yyyy H:mm:ss") : null;

                    lstStSubproductoTipos.Add(temp);
                }

                return(Ok(new { success = true, subproductoTipos = lstStSubproductoTipos }));
            }
            catch (Exception e)
            {
                CLogger.write("1", "SubproductoTipoController.class", e);
                return(BadRequest(500));
            }
        }
        public IActionResult SubProductosPaginaPorProducto([FromBody] dynamic value)
        {
            try
            {
                int    pagina             = value.pagina != null ? (int)value.pagina : 1;
                int    productoId         = value.productoid != null ? (int)value.productoid : default(int);
                int    numeroSubProductos = value.numerosubproductos != null ? (int)value.numerosubproductos : 20;
                String filtro_busqueda    = value.filtro_busqueda;
                String columna_ordenada   = value.columna_ordenada;
                String orden_direccion    = value.orden_direccion;

                List <Subproducto> subproductos = SubproductoDAO.getSubProductosPaginaPorProducto(pagina, numeroSubProductos,
                                                                                                  productoId, filtro_busqueda, columna_ordenada, orden_direccion, User.Identity.Name);
                List <Stsubproducto> stsubproductos = new List <Stsubproducto>();
                foreach (Subproducto subproducto in subproductos)
                {
                    Stsubproducto temp = new Stsubproducto();
                    temp.descripcion        = subproducto.descripcion;
                    temp.estado             = subproducto.estado;
                    temp.fechaActualizacion = subproducto.fechaActualizacion != null?subproducto.fechaActualizacion.Value.ToString("dd/MM/yyyy H:mm:ss") : null;

                    temp.fechaCreacion    = subproducto.fechaCreacion.ToString("dd/MM/yyyy H:mm:ss");
                    temp.id               = subproducto.id;
                    temp.nombre           = subproducto.nombre;
                    temp.usuarioActualizo = subproducto.usuarioActualizo;
                    temp.usuarioCreo      = subproducto.usuarioCreo;

                    subproducto.subproductoTipos = SubproductoTipoDAO.getSubProductoTipoPorId(subproducto.subproductoTipoid);
                    temp.subproductoTipoid       = subproducto.subproductoTipoid;
                    temp.subProductoTipo         = subproducto.subproductoTipos.nombre;

                    temp.snip                = subproducto.snip;
                    temp.programa            = subproducto.programa;
                    temp.subprograma         = subproducto.subprograma;
                    temp.proyecto            = subproducto.proyecto;
                    temp.actividad           = subproducto.actividad;
                    temp.renglon             = subproducto.renglon;
                    temp.ubicacionGeografica = subproducto.ubicacionGeografica;
                    temp.duracion            = subproducto.duracion;
                    temp.duracionDimension   = subproducto.duracionDimension;
                    temp.fechaInicio         = subproducto.fechaInicio != null?subproducto.fechaInicio.Value.ToString("dd/MM/yyyy H:mm:ss") : null;

                    temp.fechaFin = subproducto.fechaFin != null?subproducto.fechaFin.Value.ToString("dd/MM/yyyy H:mm:ss") : null;

                    temp.obra = subproducto.obra;

                    subproducto.unidadEjecutoras = UnidadEjecutoraDAO.getUnidadEjecutora(subproducto.ejercicio ?? default(int), subproducto.entidad ?? default(int), subproducto.ueunidadEjecutora ?? default(int));
                    if (subproducto.unidadEjecutoras != null)
                    {
                        temp.ueunidadEjecutora = subproducto.ueunidadEjecutora ?? default(int);
                        temp.ejercicio         = subproducto.ejercicio ?? default(int);

                        subproducto.unidadEjecutoras.entidads = EntidadDAO.getEntidad(subproducto.entidad ?? default(int), subproducto.ejercicio ?? default(int));
                        temp.entidadentidad = subproducto.entidad ?? default(int);
                        subproducto.unidadEjecutoras.entidads = EntidadDAO.getEntidad(subproducto.entidad ?? default(int), subproducto.ejercicio ?? default(int));
                        temp.nombreUnidadEjecutora            = subproducto.unidadEjecutoras.nombre;
                        temp.entidadnombre = subproducto.unidadEjecutoras.entidads != null ? subproducto.unidadEjecutoras.entidads.nombre : "SIN ENTIDAD";
                    }
                    else
                    {
                        Producto producto = ProductoDAO.getProducto(subproducto.productoid);
                        producto.unidadEjecutoras = UnidadEjecutoraDAO.getUnidadEjecutora(producto.ejercicio, producto.entidad ?? default(int), producto.ueunidadEjecutora);
                        if (producto.unidadEjecutoras != null)
                        {
                            temp.ueunidadEjecutora = producto.ueunidadEjecutora;
                            temp.ejercicio         = producto.ejercicio;

                            producto.unidadEjecutoras.entidads = EntidadDAO.getEntidad(producto.entidad ?? default(int), producto.ejercicio);
                            temp.entidadentidad = producto.entidad ?? default(int);
                            subproducto.unidadEjecutoras.entidads = EntidadDAO.getEntidad(producto.entidad ?? default(int), producto.ejercicio);
                            temp.nombreUnidadEjecutora            = producto.unidadEjecutoras.nombre;
                            temp.entidadnombre = subproducto.unidadEjecutoras.entidads != null ? subproducto.unidadEjecutoras.entidads.nombre : "SIN ENTIDAD";
                        }
                    }

                    temp.latitud  = subproducto.latitud;
                    temp.longitud = subproducto.longitud;
                    temp.costo    = subproducto.costo ?? default(decimal);

                    subproducto.acumulacionCostos = AcumulacionCostoDAO.getAcumulacionCostoById(Convert.ToInt32(subproducto.acumulacionCostoid));
                    temp.acumulacionCostoid       = Convert.ToInt32(subproducto.acumulacionCostoid);
                    temp.acumulacionCostoNombre   = subproducto.acumulacionCostos.nombre;

                    temp.tieneHijos      = ObjetoDAO.tieneHijos(temp.id, 2);
                    temp.fechaInicioReal = subproducto.fechaInicioReal != null?subproducto.fechaInicioReal.Value.ToString("dd/MM/yyyy H:mm:ss") : null;

                    temp.fechaFinReal = subproducto.fechaFinReal != null?subproducto.fechaFinReal.Value.ToString("dd/MM/yyyy H:mm:ss") : null;

                    temp.inversionNueva = subproducto.inversionNueva;

                    stsubproductos.Add(temp);
                }

                return(Ok(new { success = true, subproductos = stsubproductos }));
            }
            catch (Exception e)
            {
                CLogger.write("7", "SubproductoController.class", e);
                return(BadRequest(500));
            }
        } /* */
        public IActionResult SubproductoPorId(int id)
        {
            try
            {
                Subproducto subproducto = SubproductoDAO.getSubproductoPorId(id);

                if (subproducto != null)
                {
                    Stsubproducto temp = new Stsubproducto();
                    temp.id               = subproducto.id;
                    temp.nombre           = subproducto.nombre;
                    temp.descripcion      = subproducto.descripcion;
                    temp.usuarioCreo      = subproducto.usuarioCreo;
                    temp.usuarioActualizo = subproducto.usuarioActualizo;

                    temp.fechaCreacion      = Utils.ConvierteAFormatoFecha(subproducto.fechaCreacion);
                    temp.fechaActualizacion = Utils.ConvierteAFormatoFecha(subproducto.fechaActualizacion);

                    temp.estado              = subproducto.estado;
                    temp.snip                = subproducto.snip;
                    temp.programa            = subproducto.programa;
                    temp.subprograma         = subproducto.subprograma;
                    temp.proyecto            = subproducto.proyecto;
                    temp.actividad           = subproducto.actividad;
                    temp.obra                = subproducto.obra;
                    temp.renglon             = subproducto.renglon;
                    temp.ubicacionGeografica = subproducto.ubicacionGeografica;
                    temp.latitud             = subproducto.latitud;
                    temp.longitud            = subproducto.longitud;
                    temp.fechaInicio         = Utils.ConvierteAFormatoFecha(subproducto.fechaInicio);
                    temp.fechaFin            = Utils.ConvierteAFormatoFecha(subproducto.fechaFin);
                    temp.duracion            = subproducto.duracion;
                    temp.duracionDimension   = subproducto.duracionDimension;
                    temp.costo               = subproducto.costo ?? default(decimal);

                    subproducto.acumulacionCostos = AcumulacionCostoDAO.getAcumulacionCostoById(subproducto.acumulacionCostoid);
                    temp.acumulacionCostoid       = subproducto.acumulacionCostoid;
                    temp.acumulacionCostoNombre   = subproducto.acumulacionCostos.nombre;
                    temp.productoid = subproducto.productoid;

                    //subproducto.unidadEjecutoras = UnidadEjecutoraDAO.getUnidadEjecutora(subproducto.ejercicio, subproducto.entidad ?? default(int), subproducto.ueunidadEjecutora);
                    subproducto.unidadEjecutoras = UnidadEjecutoraDAO.getUnidadEjecutora(subproducto.ejercicio ?? default(int), subproducto.entidad ?? default(int), subproducto.ueunidadEjecutora ?? default(int));
                    if (subproducto.unidadEjecutoras != null)
                    {
                        //subproducto.unidadEjecutoras.entidads = EntidadDAO.getEntidad(subproducto.entidad ?? default(int), subproducto.ejercicio);
                        subproducto.unidadEjecutoras.entidads = EntidadDAO.getEntidad(subproducto.entidad ?? default(int), subproducto.ejercicio ?? default(int));
                        temp.entidadnombre         = subproducto.unidadEjecutoras.entidads.nombre;
                        temp.nombreUnidadEjecutora = subproducto.unidadEjecutoras.nombre;
                        temp.entidadentidad        = subproducto.unidadEjecutoras.entidadentidad;
                    }

                    //temp.ejercicio = subproducto.ejercicio;
                    temp.ejercicio = subproducto.ejercicio ?? default(int);

                    subproducto.subproductoTipos = SubproductoTipoDAO.getSubproductoTipo(subproducto.subproductoTipoid);

                    if (subproducto.subproductoTipos != null)
                    {
                        temp.subproductoTipoid = subproducto.subproductoTipoid;
                        temp.subProductoTipo   = subproducto.subproductoTipos.nombre;
                    }

                    temp.tieneHijos      = ObjetoDAO.tieneHijos(temp.id, 4);
                    temp.fechaInicioReal = Utils.ConvierteAFormatoFecha(subproducto.fechaInicioReal);
                    temp.fechaFinReal    = Utils.ConvierteAFormatoFecha(subproducto.fechaFinReal);

                    subproducto.productos = ProductoDAO.getProductoPorId(subproducto.productoid);
                    Proyecto proyecto = ProyectoDAO.getProyectobyTreePath(subproducto.productos.treepath);

                    temp.congelado         = proyecto.congelado != null ? proyecto.congelado : 0;
                    temp.fechaElegibilidad = Utils.ConvierteAFormatoFecha(proyecto.fechaElegibilidad);
                    temp.fechaCierre       = Utils.ConvierteAFormatoFecha(proyecto.fechaCierre);

                    temp.inversionNueva = subproducto.inversionNueva;

                    return(Ok(new { success = true, subproducto = temp }));
                }
                else
                {
                    return(Ok(new { success = false }));
                }
            }
            catch (Exception e)
            {
                CLogger.write("7", "SubproductoController.class", e);
                return(BadRequest(500));
            }
        }
        public IActionResult SubproductoTipo([FromBody] dynamic value)
        {
            try
            {
                SubproductoTipoValidator validator = new SubproductoTipoValidator();
                ValidationResult         results   = validator.Validate(value);

                if (results.IsValid)
                {
                    SubproductoTipo subproductoTipo = new SubproductoTipo();
                    subproductoTipo.nombre        = value.nombre;
                    subproductoTipo.descripcion   = value.descripcion;
                    subproductoTipo.estado        = 1;
                    subproductoTipo.fechaCreacion = DateTime.Now;
                    subproductoTipo.usuarioCreo   = User.Identity.Name;

                    bool guardado = SubproductoTipoDAO.guardarSubproductoTipo(subproductoTipo);

                    if (guardado)
                    {
                        string   propiedades    = value.propiedades != null ? (string)value.propiedades : default(string);
                        String[] idsPropiedades = propiedades != null && propiedades.Length > 0 ? propiedades.Split(",") : null;

                        if (idsPropiedades != null && idsPropiedades.Length > 0)
                        {
                            foreach (String idPropiedad in idsPropiedades)
                            {
                                SubprodtipoPropiedad subprodtipoPropiedad = new SubprodtipoPropiedad();
                                subprodtipoPropiedad.subproductoTipoid      = subproductoTipo.id;
                                subprodtipoPropiedad.subproductoPropiedadid = Convert.ToInt32(idPropiedad);
                                subprodtipoPropiedad.fechaCreacion          = DateTime.Now;
                                subprodtipoPropiedad.usuarioCreo            = User.Identity.Name;

                                guardado = guardado & SubprodTipoPropiedadDAO.guardarSubproductoTipoPropiedad(subprodtipoPropiedad);
                            }
                        }

                        return(Ok(new
                        {
                            success = guardado,
                            id = subproductoTipo.id,
                            usuarioCreo = subproductoTipo.usuarioCreo,
                            usuarioActualizo = subproductoTipo.usuarioActualizo,
                            fechaCreacion = subproductoTipo.fechaCreacion.ToString("dd/MM/yyyy H:mm:ss"),
                            fechaActualizacion = subproductoTipo.fechaActualizacion != null ? subproductoTipo.fechaActualizacion.Value.ToString("dd/MM/yyyy H:mm:ss") : null
                        }));
                    }
                    else
                    {
                        return(Ok(new { success = false }));
                    }
                }
                else
                {
                    return(Ok(new { success = false }));
                }
            }
            catch (Exception e)
            {
                CLogger.write("2", "SubproductoTipoController.class", e);
                return(BadRequest(500));
            }
        }