Beispiel #1
0
        public void AgregarProducto(Usuario usuario, Producto producto)
        {
            var productoUsuario = new ProductoUsuario
            {
                Id = new IdProductoUsuario
                {
                    Producto = producto
                },
                FechaAdquisicion = DateTime.Now
            };

            usuario.AgregarProducto(productoUsuario);
        }
Beispiel #2
0
        public void TestInsertProductoAUsuario()
        {
            var usuario  = this.DbSession.Get <Usuario>(1);
            var producto = this.DbSession.Get <Producto>(5);

            var productoUsuario = new ProductoUsuario
            {
                Id = new IdProductoUsuario
                {
                    Producto = producto
                },
                Devuelto         = false,
                FechaAdquisicion = DateTime.Now,
                MinutosUso       = 0
            };

            usuario.AgregarProducto(productoUsuario);

            using var tx = this.DbSession.BeginTransaction();
            this.DbSession.Save(usuario);
            tx.Commit();
        }
Beispiel #3
0
        public static bool guardarProducto(Producto producto, bool calcular_valores_agregados)
        {
            bool ret      = false;
            int  guardado = 0;

            try
            {
                using (DbConnection db = new OracleContext().getConnection())
                {
                    if (producto.id < 1)
                    {
                        int sequenceId = db.ExecuteScalar <int>("SELECT seq_producto.nextval FROM DUAL");
                        producto.id = sequenceId;
                        guardado    = db.Execute("INSERT INTO PRODUCTO VALUES (:id, :nombre, :descripcion, :componenteid, :subcomponenteid, :usuarioCreo, :usuarioActualizo, " +
                                                 ":fechaCreacion, :fechaActualizacion, :productoTipoid, :estado, :ueunidadEjecutora, :snip, :programa, :subprograma, :proyecto, :actividad, :obra, " +
                                                 ":latitud, :longitud, :peso, :costo, :acumulacionCostoid, :renglon, :ubicacionGeografica, :fechaInicio, :fechaFin, :duracion, :duracionDimension, :orden, " +
                                                 ":treePath, :nivel, :ejercicio, :entidad, :fechaInicioReal, :fechaFinReal, :inversionNueva)", producto);


                        if (guardado > 0 && producto.componenteid != null)
                        {
                            producto.componentes = ComponenteDAO.getComponente(producto.componenteid ?? default(int));
                            producto.treepath    = producto.componentes.treepath + "" + (10000000 + producto.id);
                        }
                        else if (producto.subcomponenteid != null)
                        {
                            producto.subcomponentes = SubComponenteDAO.getSubComponente(producto.subcomponenteid ?? default(int));
                            producto.treepath       = producto.subcomponentes.treepath + "" + (10000000 + producto.id);
                        }
                    }

                    guardado = db.Execute("UPDATE producto SET nombre=:nombre, descripcion=:descripcion, componenteid=:componenteid, subcomponenteid=:subcomponenteid, " +
                                          "usuario_creo=:usuarioCreo, usuario_actualizo=:usuarioActualizo, fecha_creacion=:fechaCreacion, fecha_actualizacion=:fechaActualizacion, " +
                                          "producto_tipoid=:productoTipoid, estado=:estado, ueunidad_ejecutora=:ueunidadEjecutora, snip=:snip, programa=:programa, subprograma=:subprograma, " +
                                          "proyecto=:proyecto, actividad=:actividad, obra=:obra, latitud=:latitud, longitud=:longitud, peso=:peso, costo=:costo, acumulacion_costoid=:acumulacionCostoid, " +
                                          "renglon=:renglon, ubicacion_geografica=:ubicacionGeografica, fecha_inicio=:fechaInicio, fecha_fin=:fechaFin, duracion=:duracion, duracion_dimension=:duracionDimension, " +
                                          "orden=:orden, treePath=:treePath, nivel=:nivel, ejercicio=:ejercicio, entidad=:entidad, fecha_inicio_real=:fechaInicioReal, fecha_fin_real=:fechaFinReal, inversion_nueva=:inversionNueva WHERE id=:id", producto);

                    if (guardado > 0)
                    {
                        Usuario         usu = UsuarioDAO.getUsuario(producto.usuarioCreo);
                        ProductoUsuario pu  = new ProductoUsuario();
                        pu.productos     = producto;
                        pu.productoid    = producto.id;
                        pu.usuario       = usu.usuario;
                        pu.usuarioCreo   = usu.usuario;
                        pu.fechaCreacion = DateTime.Now;

                        int existe = db.ExecuteScalar <int>("SELECT COUNT(*) FROM PRODUCTO_USUARIO WHERE productoid=:id AND usuario=:usuario", new { id = pu.productoid, usuario = pu.usuario });

                        if (existe > 0)
                        {
                            guardado = db.Execute("UPDATE PRODUCTO_USUARIO SET usuario_creo=:usuarioCreo, usuario_actualizo=:usuarioActualizo, fecha_creacion=:fechaCreacion, " +
                                                  "fecha_actualizacion=:fechaActualizacion WHERE productoid=:productoid AND usuario=:usuario", pu);

                            ret = guardado > 0 ? true : false;
                        }
                        else
                        {
                            guardado = db.Execute("INSERT INTO PRODUCTO_USUARIO VALUES (:productoid, :usuario, :usuarioCreo, :usuarioActualizo, :fechaCreacion, :fechaActualizacion)", pu);

                            ret = guardado > 0 ? true : false;
                        }

                        if (guardado > 0 && !producto.usuarioCreo.Equals("admin"))
                        {
                            ProductoUsuario pu_admin = new ProductoUsuario();
                            pu_admin.productos     = producto;
                            pu_admin.productoid    = producto.id;
                            pu_admin.usuario       = "admin";
                            pu_admin.usuarioCreo   = producto.usuarioCreo;
                            pu_admin.fechaCreacion = DateTime.Now;

                            existe = db.ExecuteScalar <int>("SELECT COUNT(*) FROM PRODUCTO_USUARIO WHERE productoid=:id AND usuario=:usuario", new { id = pu_admin.productoid, usuario = pu_admin.usuario });

                            if (existe > 0)
                            {
                                guardado = db.Execute("UPDATE PRODUCTO_USUARIO SET usuario_creo=:usuarioCreo, usuario_actualizo=:usuarioActualizo, fecha_creacion=:fechaCreacion, " +
                                                      "fecha_actualizacion=:fechaActualizacion WHERE productoid=:productoid AND usuario=:usuario", pu_admin);
                            }
                            else
                            {
                                guardado = db.Execute("INSERT INTO PRODUCTO_USUARIO VALUES (:productoid, :usuario, :usuarioCreo, :usuarioActualizo, :fechaCreacion, :fechaActualizacion)", pu_admin);
                            }
                        }

                        if (calcular_valores_agregados)
                        {
                            ret = ProyectoDAO.calcularCostoyFechas(Convert.ToInt32(producto.treepath.Substring(0, 8)) - 10000000);
                        }
                    }
                    else
                    {
                        ret = false;
                    }
                }
            }
            catch (Exception e)
            {
                CLogger.write("3", "ProductoDAO.class", e);
            }
            return(ret);
        }