Taller_Conectando MongoDB Con ASP .Net_COMPDES2014

download Taller_Conectando MongoDB Con ASP .Net_COMPDES2014

of 38

Transcript of Taller_Conectando MongoDB Con ASP .Net_COMPDES2014

  • Taller COMPDES 2014 Da 1

    "Conectando MongoDB con ASP .Net"

    Jonnathan Bartly Monge ([email protected])

    Walter Chavarra Mora ([email protected])

    Josu Murillo Len ([email protected])

    Colaboradora: Prof. Marlen Trevio Villalobos ([email protected])

  • Enlace de Presentacin: https://slidebean.com/p/aJjnRqB1Ea/MongoDB

    Primero Creamos la Base de datos use bookshelf

    switched to db bookshelf

    Creacin de colecciones Primero se crea la coleccin:

    db.createCollection(books)

    { ok: 1 }

    db.createCollection(magazines)

    { ok: 1 }

    Insertar un documento en la base de datos anterior: Se puede indicar una clave nica (Opcional): (si se indica debe usar un id distinto en cada insercin)

    db.books.ensureIndex({idBook:1},{unique: true})

    Se crea un documento:

    medieval = {name:Game of Thrones,qty:10,price:19000}

    { name: Game of Thrones, qty:10, price:19000 }

    Luego lo insertamos el documento en una coleccin: (Este comando si no existe la coleccin la

    crea)

    db.books.insert(medieval)

    db.books.insert({name:Crepusculo,qty:11, price:9000})

    db.books.insert({name:Crepusculo,qty:10, price:9000})

    Se pueden hacer inserciones mltiples:

    db.books.insert(*{name:Game of Thrones 2,qty:5, price:20000},{name:Game of

    Thrones 3,qty:5, price:22000}])

  • Bsquedas en documentos: Se busca el libro con el nombre respectivo

    db.books.find({name:Game of Thrones})

    { _id: ObjectId(539083d56ca7450eb139e92d), name: Game of Thrones, qty:10,

    price:19000}

    Se puede obtener los libros con cantidad menor a 8.

    db.books.find( {qty:{$lt:8}} )

    { _id: ObjectId(539083d56ca7450eb139e990), name: Game of Thrones 2, qty:5,

    price:20000}

    { _id: ObjectId(539083d56ca7450eb139e991), name: Game of Thrones 3, qty:5,

    price:22000}

    Modificar Documentos Se puede modificar la informacin en un documento, se selecciona el libro por nombre y se

    modifica la cantidad.

    db.books.update({name:Game of Thrones 3},{qty:7})

    Se pueden incrementar el valor de los datos numricos, en este caso se incrementa la cantidad

    en 7 unidades.

    db.books.update({name:Game of Thrones 3},{$inc:{qty:7}})

    Se pueden incrementar varios valores de datos numricos en un mismo query, en este caso se

    incrementa la cantidad en 7 y se le resta 2000 al precio.

    db.books.update({name:Game of Thrones 3},$inc:{qty:7,price:-2000})

    Se pueden incrementar varios valores de datos numricos en un mismo query, de varios

    documentos, al activr el multi:true lo que se hace es incrementar la cantidad en 7 de todos los

    documentos que cumplan con el criterio de bsqueda y no solo del primero como

    normalmente se hara.

    db.books.update({name:Game of Thrones 3},{$inc:{qty:7},{multi:true})

  • Agregar un campo a un documento, se le agrega el campo type:Medieval al documento que

    cumpla con la condicin.

    db.books.update({name:Game of Thrones 3},{$set:{ type:Medieval}})

    Eliminar un campo en un documento, se elimina el campo type del documento seleccionado.

    db.books.update({name:Game of Thrones 3},$unset:{ type:Medieval})

    Eliminar una coleccin Se puede eliminar la coleccin sin importar su contenido

    db.magazines.drop()

    true

    Eliminar Documento Se puede eliminar el documento sin importar su contenido

    db.books.remove({name:Crepusculo})

  • Tablas Comandos: Comando Ejemplo Funcin Nota

    Base de Datos

    show dbs show dbs Muestra las bases de datos existentes de manera fsica.

    Si la base de datos no contiene informacin la misma no se mostrara, por default podemos encontrar local.

    db db Indica en cual base de datos se encuentra trabajando actualmente.

    Si se est iniciando mongo por default nos indicara la base de datos test.

    db.dropDatabase() db.dropDatabase() Elimina la base de datos en la que se encuentra trabajando.

    db.copyDatabase(old_name, new name)

    db.copyDatabase(bookshlf,bookshelf)

    Para copiar o renombrar la base de datos. Primero se indica el nombre de la base existente y luego el nombre del destino de la copia.

    Cuando lo que se quiere es renombrar, despus de realizar esto se debe borrar la base de datos anterior.

    use use bookshelf Utilizamos la base de datos indicada, si no existe se crea.

    Si no se le agrega nada a la base de datos esta no se almacenara fsicamente.

  • Comando Ejemplo Funcin Nota

    Colecciones

    - show collections - show tables

    - show collections - show tables

    Muestra la lista de colecciones en la base de datos actual.

    Si no existen colecciones el comando no devolver ninguna

    respuesta. La coleccin System.indexes mantiene los ndices de todas las colecciones.

    db.createCollection(name,{options})

    db.createCollection(books)

    Crea la coleccin con el nombre indicado, en las opciones se puede indicar, tamao en disco fsico y cantidad mxima de documentos.

    Si se indica el nombre de una existente devolver un mensaje de error indicando que ya existe el nombre.

    db.oldName.renameCollection(newName)

    db.book.renameCollection(books)

    Renombra la coleccin, cuenta con opciones para borrar la coleccin anterior o mantenerla, por default la elimina.

    Si se indica el mismo nombre dar error porque detectara una coleccin existente con ese nombre.

    db.name.drop() db.books.drop() Elimina la coleccin completa.

    Si la eliminar devuelve true, si no lo hace devuelve falso.

  • Comando Ejemplo Funcin Nota

    Documentos

    db.collection.ensureIndex( {id:1}

    ,{unique:true} )

    db.books.ensureIndex( {idBook:1} ,{unique:true} )

    Crea un valor nico en los documentos que se quieran insertar a la coleccin.

    No hace que sea obligatorio el campo, pero si nico. No aplica para los sub documentos.

    db.collection.insert( { name:info})

    db.inventory.insert( { _id: 10, type: "misc", item: "card", qty: 15 } )

    Inserta en la coleccin el documento indicado.

    Puede contener sub documentos, y el id se le agrega por defecto si no se le indica uno.

    db.collection.insert( [ { _id: 20, item: "item1", qty: 50, type: "desk" }, { _id: 21, item: "item2", qty: 20, type: "floor" }, { _id: 22, item: "item3", qty: 100 } ] )

    db.books.insert( [ { _id: 20, name:

    "GoT1", qty: 10}, { _id: 21, item:

    "item2", qty: 20, type: "floor" }, { _id: 22, item:

    "item3", qty: 100 } ] )

    Se realiza la insercin de varios documentos a la vez.

    db.collection.find() db.books.find() Devuelve un listado con todos los documentos y la informacin que contiene.

    Si no contiene nada, no devuelve ninguna respuesta.

  • Comando Ejemplo Funcin Nota

    Documentos

    db.collection.find({name:info}) db.books.find( {name:Game of Thrones} )

    Obtiene todos los documentos que tengan la informacion exacta indicada.

    db.books.find( {name:Game of Thrones} ).limit(3)

    Devuelve nicamente los primeros 3 resultados.

    Si hay menos resultados de los indicados nicamente devuelve los que encuentre.

    db.books.findOne({name:Game of Thrones})

    Devuelve el primer resultado que encuentre, un nico resultado.

    db.collection.find( {item}:{$lt:42}), {item2:0,_id:0} )

    db.books.find( {idBook}:{$lt:42}), {name:0,_id:0} )

    Devuelve los documentos con el idBook mientras sea menor a 42, y no muestra el nombre ni el _id.

    db.books.update( { item: "Divine Comedy" }, {

    $inc: { stock: 5 } }

    )

    db.products.update( { sku: "abc123" }, { $inc: { quantity: -2, sales: 2 } } ) db.products.update( { _id: 1 }, { $mul: { price: 1.25 } } )

    db.books.update( { _id: 11 }, { $set: { stock: 1 } } )

    Agrega el campo stock a documento.

  • Comando Ejemplo Funcin Nota

    Documentos

    db.books.update( { _id: 11 }, { $unset: { stock: 1 } },{multi:true} )

    Remueve el campo estock del arreglo.

    Multi es la propiedad de aplicrselo a varios datos al azar.

    db.students.update( { _id: 1 }, { $rename: { "nmae": "name" } } )

    Cambia el nombre de un tem en un documento.

    db.students.update( { _id: 1 }, { $rename: { "name.first": "name.fname" } } )

    Cambia el nombre de un tem en un sub documento.

    db.scores.update( { _id: 1 }, { $max: { highScore: 950 } } )

    Si la mxima cantidad encontrada es menor a la indicada entonces se reemplaza por esta indicada.

    db.scores.update( { _id: 1 }, { $min: { lowScore: 150 } } )

    Si la mnima cantidad encontrada es mayor a la indicada entonces se reemplaza por esta indicada.

    db.collection.save({}) db.products.save( { _id: 100, item: "water", qty: 30 } )

    Si el id indicado no existe funciona como un insert, si existe entonces reemplaza todo el documento por la informacin que se le provee.

    db.collection.remove({}) db.books.remove({info:}) Elimina el documento que cumpla con la condicin de bsqueda.

    Retorna false si no se puede borrar y true si se borr.

  • Taller COMPDES 2014 Da 2,3

    "Conectando MongoDB con ASP .Net"

    Jonnathan Bartly Monge ([email protected])

    Walter Chavarra Mora ([email protected])

    Josu Murillo Len ([email protected])

    Colaboradora: Prof. Marlen Trevio Villalobos ([email protected])

  • Definicio n de Problema

    Una empresa de nombre Coopatrac R.L brinda servicios de transporte pblico

    especializado en autobuses. Para tener un control de su flota y personal de recurso humano lleva

    un registro manual en un cuaderno donde anota la ruta que un autobs recorrer, el nombre del

    bus y el nombre del chofer encargado de conducir el autobs.

    Recientemente tuvieron problemas con el registro ya que se perdi el cuaderno de

    anotaciones. Por esta razn Coopatrac R.L quiere una aplicacin web que le permita llevar el

    registro de choferes, autobuses y rutas. Tambin pidi de requisito que la aplicacin sea rpida en

    la insercin y acceso a los datos.

  • Creando la base de Datos

    use compdes2014 db.createCollection("choferes") db.createCollection("buses") db.createCollection("rutas") db.createCollection("comborutas") db.choferes.insert({nombre:"Jorge", apellidos:"Rojas Jimenez", cedula:"207120658", telefono: "8965-9865", direccion:"Alajuela, Grecia", anos_experiencia:8}) db.buses.insert({marca:"Mercedes Benz", modelo:"N2007", n_placa:"JSG 025", capacidad: 89, estado:"Disponible", descripcion:"Color blanco con negro"}) db.comborutas.insert({ruta:"Ciudad Quesada-Florencia"}) db.comborutas.insert({ruta:"Ciudad Quesada-Fortuna"}) db.rutas.insert({ruta:" Ciudad Quesada-Florencia ", chofer:"Jorge", bus:" Mercedes Benz ", salida_deposito: "05:30 am", entrada_deposito:"09:40 pm", tiempo_viaje:"30 min"})

  • La siguiente gua pretende facilitar a los usuarios un mejor y ms rpido aprendizaje respecto al uso de MongoDB siendo consumido por una aplicacin web en ASP .Net.

    La aplicacin consiste en la administracin rutinaria de las rutas laborales de autobuses. Se deben registrar rutas y los choferes y buses que se utilizarn para cada ruta laboral. Iniciemos:

    1. En primer lugar se debe crear un nuevo proyecto Web vaco, se le da nombre y la direccin donde se guardar el proyecto en la PC.

    2. Una vez se haya generado el proyecto nuevo, se abre el archivo Web.config y se le agrega las siguientes lneas de cdigo, las cuales son para realizar la coneccin a la base de datos:

  • 3. Para poder hacer uso de las funcionalidades mongo dentro del proyecto se debe instalar el paquete mongocsharpdriver, se abre la pestaa de Herramientas en el men principal, luego al Administrador de Libreras de Paquete y se selecciona la Consola de Administracin de Paquetes:

    En la Consola de Administracin de Paquetes se escribe el siguiente comando:

    Install-Package mongocsharpdriver

  • 4. Para un mayor orden del proyecto se recomienda el uso de carpetas para la divisin de

    archivos. Los archivos que se necesitarn son:

    bll.cs (para la lgica de negocio).

    ddl.cs (para realizar los mtodos referentes a la base de datos).

    clsInfoBuses.cs (clase con la estructura de la coleccin de buses).

    clsInfoChoferes.cs (clase con la estructura de la coleccin de choferes).

    clsInfoComboRutas.cs (clase con la estructura de la coleccin de rutas fsicas).

    clsInfoRutas.cs (clase con la estructura de la coleccin de rutas laborales).

    vBuses.aspx (interfaz grfica para la funcionalidad de la lgica de buses).

    vChoferes.aspx (interfaz grfica para la funcionalidad de la lgica de choferes).

    vRutas.aspx (interfaz grfica para la funcionalidad de la lgica de rutas laborales).

    5. Para la vista de choferes se necesita los siguientes componentes:

  • 6. Para la vista de buses se necesita los siguientes componentes:

    7. Para la vista de rutas se necesita los siguientes componentes:

    8. La clase de clsInfoChoferes.cs tiene la siguiente estructura:

    public ObjectId _id { get; set; } public string nombre { get; set; }

  • public string apellidos { get; set; } public string cedula { get; set; } public string telefono { get; set; } public string direccion { get; set; } public int anos_experiencia { get; set; }

    Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.

    9. La clase de clsInfoBuses.cs tiene la siguiente estructura:

    public ObjectId _id { get; set; } public string marca { get; set; } public string modelo { get; set; } public string n_placa { get; set; } public int capacidad { get; set; } public string estado { get; set; } public string descripcion { get; set; }

    Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.

  • 10. La clase de clsInfoComboRutas.cs tiene la siguiente estructura:

    public ObjectId _id { get; set; } public string ruta { get; set; }

    Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.

  • 11. La clase de clsInfoRutas.cs tiene la siguiente estructura:

    public ObjectId _id { get; set; } public string ruta { get; set; } public string chofer { get; set; } public string bus { get; set; } public string salida_deposito { get; set; } public string entrada_deposito { get; set; } public string tiempo_viaje { get; set; }

    Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.

    12. En el archivo dll.cs se mantienen los mtodos respectivos para el funcionamiento de la

    base de datos. En primer lugar est el mtodo que establece la conexin a MongoDB y

    devuelve la base de datos respectiva.

    /// /// Establece conexin a la base de datos. /// /// Nombre de la base de datos /// public MongoDatabase conn(string db) {

    MongoServer server = MongoServer.Create(ConfigurationManager.AppSettings["connectionString"]);

    MongoDatabase myDB = server.GetDatabase(db); return myDB; }

  • 13. Los siguientes mtodos son para la obtencin de los distintos documentos en la base de

    datos:

    /// /// Obtiene todos los choferes de la coleccin. /// /// public List _Lista_Choferes() {

    MongoDatabase myDatabase = conn("compdes2014"); List list = new List();

    MongoCollection collection = myDatabase.GetCollection("choferes");

    return collection.FindAll().ToList(); }

    /// /// Obtiene todos los buses de la coleccin. /// /// public List _Lista_Buses() {

    MongoDatabase myDatabase = conn("compdes2014"); List list = new List(); MongoCollection collection = myDatabase.GetCollection("buses"); return collection.FindAll().ToList();

    }

    /// /// Obtiene todos las rutas de la coleccin dependiendo de la categoria. /// /// Tipo de restriccin para hallar los documentos /// Restriccin para hallar los documentos /// public List _Lista_Rutas(string categoria, string consulta) {

    MongoDatabase myDatabase = conn("compdes2014"); List list = new List(); MongoCollection collection = myDatabase.GetCollection("rutas"); if (categoria == "todos") {

    foreach (clsInfoRutas documento in collection.FindAll()) {

    list.Add(documento); } return list;

    } foreach (clsInfoRutas documento in collection.Find(Query.EQ(categoria, consulta))) {

    list.Add(documento); } return list;

    }

  • 14. Los siguientes mtodos son para la insercin de los distintos documentos en la base de

    datos:

    /// /// Inserta chofer en la base de datos. /// /// Nombre /// Apellidos /// Cedula /// Telefono /// Direccion /// Aos Experiencia public void _insertarChofer(string nombre, string apellidos, string cedula, string telefono, string direccion, int anos_experiencia) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection document = myDatabase.GetCollection("choferes");

    BsonDocument chofer = new BsonDocument { {"nombre",nombre}, {"apellidos",apellidos}, {"cedula",cedula}, {"telefono",telefono}, {"direccion",direccion}, {"anos_experiencia",anos_experiencia} };

    document.Insert(chofer); } /// /// Inserta bus en la base de datos /// /// Marca /// Modelo /// N de Placa /// Capacidad /// Estado /// Direccin public void _insertarBus(string marca, string modelo, string n_placa, int capacidad, string estado, string descripcion) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection document = myDatabase.GetCollection("buses"); BsonDocument bus = new BsonDocument {

    {"marca",marca}, {"modelo",modelo}, {"n_placa",n_placa}, {"capacidad",capacidad}, {"estado",estado}, {"descripcion",descripcion} };

    document.Insert(bus); } /// /// Inserta ruta en la base de datos ///

  • /// Nombre de ruta /// Nombre de chofer /// Marca de bus /// Hora salida deposito /// Hora entrada deposito /// Tiempo aproximado de viaje public void _insertarRuta(string ruta, string chofer, string bus, string salida_deposito, string entrada_deposito, string tiempo_viaje) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection document = myDatabase.GetCollection("rutas"); BsonDocument rutas = new BsonDocument {

    {"ruta",ruta}, {"chofer",chofer}, {"bus",bus}, {"salida_deposito",salida_deposito}, {"entrada_deposito",entrada_deposito}, {"tiempo_viaje",tiempo_viaje} };

    document.Insert(rutas); }

    15. Los siguientes mtodos son para la modificacin de los distintos documentos en la base de

    datos:

    /// /// Modifica chofer en la base de datos /// /// ID del chofer a modificar /// Nombre /// Apellidos /// Cedula /// Telefono /// Direccion /// Aos de Experiencia public void _modificarChofer(ObjectId _id, string nombre, string apellidos, string cedula, string telefono, string direccion, int anos_experiencia) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection chofer = myDatabase.GetCollection("choferes"); IMongoQuery query = Query.EQ("_id", _id); IMongoUpdate update = MongoDB.Driver.Builders.Update.Set("nombre", nombre)

    .Set("apellidos", apellidos)

    .Set("cedula", cedula)

    .Set("telefono", telefono)

    .Set("direccion", direccion)

    .Set("anos_experiencia", anos_experiencia); chofer.Update(query, update);

    } /// /// Modifica bus en la base de datos ///

  • /// ID del bus a modificar /// Marca /// Modelo /// N de Placa /// Capacidad /// Estado /// Descripcion public void _modificarBus(ObjectId _id, string marca, string modelo, string n_placa, int capacidad, string estado, string descripcion) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection bus = myDatabase.GetCollection("buses"); IMongoQuery query = Query.EQ("_id", _id); IMongoUpdate update = MongoDB.Driver.Builders.Update.Set("marca", marca)

    .Set("modelo", modelo)

    .Set("n_placa", n_placa)

    .Set("capacidad", capacidad)

    .Set("estado", estado)

    .Set("descripcion", descripcion); bus.Update(query, update);

    } /// /// Modifica ruta en la base de datos /// /// ID de ruta a modificar /// Nombre de ruta /// Nombre de chofer /// Marca de bus /// Hora salida deposito /// Hora entrada deposito /// Tiempo aproximado de viaje public void _modificarRuta(ObjectId _id, string ruta, string chofer, string bus, string salida_deposito, string entrada_deposito, string tiempo_viaje) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection rutas = myDatabase.GetCollection("rutas"); IMongoQuery query = Query.EQ("_id", _id); IMongoUpdate update = MongoDB.Driver.Builders.Update.Set("ruta", ruta)

    .Set("chofer", chofer)

    .Set("bus", bus)

    .Set("salida_deposito", salida_deposito)

    .Set("entrada_deposito", entrada_deposito)

    .Set("tiempo_viaje", tiempo_viaje); rutas.Update(query, update);

    }

    16. Los siguientes mtodos son para la eliminacin de los distintos documentos en la base de

    datos:

    /// /// Elimina chofer de la base de datos ///

  • /// ID del chofer a eliminar public void _eliminarChofer(ObjectId _id) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection chofer = myDatabase.GetCollection("choferes"); IMongoQuery query = Query.EQ("_id", _id); chofer.Remove(query);

    } /// /// Elimina bus de la base de datos /// /// ID del bus a eliminar public void _eliminarBus(ObjectId _id) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection bus = myDatabase.GetCollection("buses"); IMongoQuery query = Query.EQ("_id", _id); bus.Remove(query);

    } /// /// Elimina ruta de la base de datos /// /// ID de ruta a eliminar public void _eliminarRuta(ObjectId _id) {

    MongoDatabase myDatabase = conn("compdes2014"); MongoCollection rutas = myDatabase.GetCollection("rutas"); IMongoQuery query = Query.EQ("_id", _id); rutas.Remove(query);

    }

    17. El siguiente mtodo obtiene los documentos de la coleccin que almacena las rutas fsicas

    que debe recorrer un autobs, esos documentos son para el DropDownList de Rutas.

    /// /// Obtiene una lista con el nombre de todas las rutas. /// /// public List _obtenerComboRutas() {

    MongoDatabase myDatabase = conn("compdes2014"); List list = new List(); MongoCollection collection = myDatabase.GetCollection("comborutas"); return collection.FindAll().ToList();

    }

  • 18. Se debe realizar las referencias a:

    using MongoDB_COMPDES_2014.Utilerias; using MongoDB.Driver; using MongoDB.Driver.Builders; using MongoDB.Bson;

    19. En el archivo bll.cs se mantienen los mtodos respectivos para el funcionamiento de la

    base de datos. En primer lugar est el mtodo que convierte una estructura tipo List a una

    estructura tipo DataTable.

    /// /// Lista de datos a convertir en DataTable /// /// Tipo de lista /// Lista /// public DataTable _ToDataTable(List items) {

    DataTable dataTable = new DataTable(typeof(T).Name); PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in Props) {

    dataTable.Columns.Add(prop.Name); } foreach (T item in items) {

    var values = new object[Props.Length]; for (int i = 0; i < Props.Length; i++) {

    values[i] = Props[i].GetValue(item, null); } dataTable.Rows.Add(values);

    } return dataTable;

    }

  • 20. Los siguientes mtodos son para la obtencin de los distintos documentos de la dll:

    /// /// Consulta la lista de choferes a partir de la ddl /// /// public DataTable _consultarChoferes() {

    List list = odll._Lista_Choferes(); return _ToDataTable(list);

    } /// /// Consulta la lista de buses a partir de la ddl /// /// public DataTable _consultarBuses() {

    List list = odll._Lista_Buses(); return _ToDataTable(list);

    } /// /// Consulta la lista de rutas a partir de la ddl /// /// Categoria de busqueda /// Parametro de busqueda /// public DataTable _consultarRutas(string _categoria, string consulta) {

    string categoria = _categoria.ToLower(); List list = odll._Lista_Rutas(categoria, consulta); return _ToDataTable(list);

    }

    21. Los siguientes mtodos son para la insercin de los distintos documentos hacia la dll:

    /// /// Inserta choferes a la base de datos a partir de la dll /// /// Nombre /// Apellidos /// Cedula /// Telefono /// Direccion /// Aos de Experiencia public void _insertarChofer(string nombre, string apellidos, string cedula, string telefono, string direccion, int anos_experiencia) {

    odll._insertarChofer(nombre, apellidos, cedula, telefono, direccion, anos_experiencia);

    } /// /// Inserta buses a la base de datos a partir de la dll

  • /// /// Marca /// Modelo /// N de Placa /// Capacidad /// Estado /// Descripcion public void _insertarBus(string marca, string modelo, string n_placa, int capacidad, string estado, string descripcion) {

    odll._insertarBus(marca, modelo, n_placa, capacidad, estado, descripcion); } /// /// Inserta rutas a la base de datos a partir de la dll /// /// Nombre de la ruta /// Nombre del chofer /// Nombre del bus /// Hora salida deposito /// Hora entrada deposito /// Tiempo aproximado de viaje public void _insertarRuta(string ruta, string chofer, string bus, string salida_deposito, string entrada_deposito, string tiempo_viaje) {

    odll._insertarRuta(ruta, chofer, bus, salida_deposito, entrada_deposito, tiempo_viaje);

    }

    22. Los siguientes mtodos son para la modificacin de los distintos documentos hacia la dll:

    /// /// Modifica choferes en la base de datos a partir de la dll /// /// ID del chofer a modificar /// Nombre /// Apellidos /// Cedula /// Telefono /// Direccion /// Aos de Experiencia public void _modificarChofer(string _id, string nombre, string apellidos, string cedula, string telefono, string direccion, int anos_experiencia) {

    odll._modificarChofer(ObjectId.Parse(_id), nombre, apellidos, cedula, telefono, direccion, anos_experiencia);

    } /// /// Modifica buses en la base de datos a partir de la dll /// /// ID del bus a modificar /// Marca

  • /// Modelo /// N de Placa /// Capacidad /// Estado /// Descripcion public void _modificarBus(string _id, string marca, string modelo, string n_placa, int capacidad, string estado, string descripcion) {

    odll._modificarBus(ObjectId.Parse(_id), marca, modelo, n_placa, capacidad, estado, descripcion);

    } /// /// Modifica rutas en la base de datos a partir de la dll /// /// ID de la ruta a modificar /// Nombre de la ruta /// Nombre del chofer /// Nombre del bus /// Hora salida deposito /// Hora entrada deposito /// Tiempo aproximado de voaje public void _modificarRuta(string _id, string ruta, string chofer, string bus, string salida_deposito, string entrada_deposito, string tiempo_viaje) {

    odll._modificarRuta(ObjectId.Parse(_id), ruta, chofer, bus, salida_deposito, entrada_deposito, tiempo_viaje);

    }

    23. Los siguientes mtodos son para la eliminacin de los distintos documentos hacia la dll:

    /// /// Elimina choferes de la base de datos a partir de la dll /// /// ID del chofer a eliminar public void _eliminarChofer(string _id) {

    odll._eliminarChofer(ObjectId.Parse(_id)); } /// /// Elimina buses de la base de datos a partir de la dll /// /// ID del bus a eliminar public void _eliminarBus(string _id) {

    odll._eliminarBus(ObjectId.Parse(_id)); } /// /// Elimina rutas de la base de datos a partir de la dll /// /// ID de la ruta a eliminar public void _eliminarRuta(string _id) {

    odll._eliminarRuta(ObjectId.Parse(_id));

  • }

    24. El siguiente mtodo recibe de la dll los documentos de la coleccin que almacena las rutas

    fsicas que debe recorrer un autobs, esos documentos son para el DropDownList de

    Rutas:

    /// /// Consulta la lista con el nombre de todas las rutas a aprtir de la dll. /// /// public DataTable _cargaComboRutas() {

    List list = odll._obtenerComboRutas(); return _ToDataTable(list);

    }

    25. Se debe realizar las referencias a:

    using MongoDB_COMPDES_2014.DAL; using MongoDB_COMPDES_2014.Utilerias; using MongoDB.Bson;

    Adems, antes de todos los mtodos se debe inicializar la clase dll.cs:

    dll odll = new dll();

    26. En el archivo vBuses.aspx.cs se debe llamar a los mtodos de la bll:

    bll obll = new bll(); static string ID_Modificar = ""; static DataTable tempTable = new DataTable(); protected void Page_Load(object sender, EventArgs e) {

    tempTable = obll._consultarBuses(); gdrBuses.DataSource = tempTable; gdrBuses.DataBind();

    }

  • /// /// Llama a la ventana de choferes /// /// /// protected void btnChoferesBuses_Click(object sender, EventArgs e) {

    Response.Redirect("vChoferes.aspx"); } /// /// Llama a la ventana de rutas /// /// /// protected void btnRutasBuses_Click(object sender, EventArgs e) {

    Response.Redirect("vRutas.aspx"); } /// /// Inserta la informacin de los buses /// /// /// protected void btnInsertarBuses_Click(object sender, EventArgs e) {

    string marca = txtMarca.Text.ToString(); string modelo = txtModelo.Text.ToString(); string n_placa = txtN_Placa.Text.ToString(); int capacidad = Int16.Parse(txtCapacidad.Text.ToString()); string estado = ddlEstado.SelectedValue.ToString(); string descripcion = txtDescripcion.Text.ToString();

    obll._insertarBus(marca, modelo, n_placa, capacidad, estado, descripcion); tempTable = obll._consultarBuses(); gdrBuses.DataSource = tempTable; gdrBuses.DataBind();

    txtMarca.Text = string.Empty; txtModelo.Text = string.Empty; txtN_Placa.Text = string.Empty; txtCapacidad.Text = string.Empty; txtDescripcion.Text = string.Empty;

    } /// /// Selecciona la fila del gridview /// /// /// protected void gdrBuses_SelectedIndexChanged(object sender, EventArgs e) {

    int bus = gdrBuses.SelectedRow.RowIndex; ID_Modificar = tempTable.Rows[bus][0].ToString(); txtMarca.Text = gdrBuses.SelectedRow.Cells[2].Text; txtModelo.Text = gdrBuses.SelectedRow.Cells[3].Text;

  • txtN_Placa.Text = gdrBuses.SelectedRow.Cells[4].Text; txtCapacidad.Text = gdrBuses.SelectedRow.Cells[5].Text; ddlEstado.SelectedValue = gdrBuses.SelectedRow.Cells[6].Text; txtDescripcion.Text = gdrBuses.SelectedRow.Cells[7].Text; txtMarca.Enabled = false;

    } /// /// Inserta la informacin de los buses /// /// /// protected void btnModificarBuses_Click(object sender, EventArgs e) {

    string marca = txtMarca.Text.ToString(); string modelo = txtModelo.Text.ToString(); string n_placa = txtN_Placa.Text.ToString(); int capacidad = Int16.Parse(txtCapacidad.Text.ToString()); string estado = ddlEstado.SelectedValue.ToString(); string descripcion = txtDescripcion.Text.ToString();

    obll._modificarBus(ID_Modificar, marca, modelo, n_placa, capacidad, estado, descripcion); tempTable = obll._consultarBuses(); gdrBuses.DataSource = tempTable; gdrBuses.DataBind();

    txtMarca.Text = string.Empty; txtModelo.Text = string.Empty; txtN_Placa.Text = string.Empty; txtCapacidad.Text = string.Empty; txtDescripcion.Text = string.Empty; txtMarca.Enabled = true;

    } /// /// Elimina la informacin de los buses /// /// /// protected void gdrBuses_RowDeleting(object sender, GridViewDeleteEventArgs e){} protected void gdrBuses_RowCommand(object sender, GridViewCommandEventArgs e) {

    if (e.CommandName == "Delete") {

    int index = Convert.ToInt32(e.CommandArgument); string _id = tempTable.Rows[index][0].ToString();

    obll._eliminarBus(_id); tempTable = obll._consultarBuses(); gdrBuses.DataSource = tempTable; gdrBuses.DataBind();

    } }

    protected void btnLimpiarBuses_Click(object sender, EventArgs e) {

    txtMarca.Text = string.Empty;

  • txtModelo.Text = string.Empty; txtN_Placa.Text = string.Empty; txtCapacidad.Text = string.Empty; txtDescripcion.Text = string.Empty; txtMarca.Enabled = true;

    }

    27. Se deben referenciar lo siguiente:

    using MongoDB_COMPDES_2014.BLL; using MongoDB.Bson; using System.Data;

    28. En el archivo vChoferes.aspx.cs se debe llamar a los mtodos de la bll:

    bll obll = new bll(); static string ID_Modificar = ""; static DataTable tempTable = new DataTable(); protected void Page_Load(object sender, EventArgs e) {

    tempTable = obll._consultarChoferes(); gdrChoferes.DataSource = tempTable; gdrChoferes.DataBind();

    } /// /// Llama a la ventana de rutas /// /// /// protected void btnRutasChoferes_Click(object sender, EventArgs e) {

    Response.Redirect("vRutas.aspx"); } /// /// Llama a la ventana de buses /// /// /// protected void btnBusesChoferes_Click(object sender, EventArgs e) {

    Response.Redirect("vBuses.aspx"); }

  • /// /// Inserta la informacin de los choferes /// /// /// protected void btnInsertarChoferes_Click(object sender, EventArgs e) {

    string nombre = txtNombre.Text.ToString(); string apellidos = txtApellidos.Text.ToString(); string cedula = txtCedula.Text.ToString(); string telefono = txtTelefono.Text.ToString(); string direccion = txtDireccion.Text.ToString(); int anos_experiencia = Int16.Parse(txtAnosExperiencia.Text.ToString());

    obll._insertarChofer(nombre, apellidos, cedula, telefono, direccion, anos_experiencia); tempTable = obll._consultarChoferes(); gdrChoferes.DataSource = tempTable; gdrChoferes.DataBind();

    txtNombre.Text= string.Empty; txtApellidos.Text= string.Empty; txtCedula.Text= string.Empty; txtTelefono.Text= string.Empty; txtDireccion.Text= string.Empty; txtAnosExperiencia.Text = string.Empty;

    } /// /// Selecciona la fila del gridview /// /// /// protected void gdrChoferes_SelectedIndexChanged(object sender, EventArgs e) {

    int chofer = gdrChoferes.SelectedRow.RowIndex; ID_Modificar = tempTable.Rows[chofer][0].ToString(); txtNombre.Text = gdrChoferes.SelectedRow.Cells[2].Text; txtApellidos.Text = gdrChoferes.SelectedRow.Cells[3].Text; txtCedula.Text = gdrChoferes.SelectedRow.Cells[4].Text; txtTelefono.Text = gdrChoferes.SelectedRow.Cells[5].Text; txtDireccion.Text = gdrChoferes.SelectedRow.Cells[6].Text; txtAnosExperiencia.Text = gdrChoferes.SelectedRow.Cells[7].Text; txtNombre.Enabled = false;

    } /// /// Inserta la informacin de los buses /// /// /// protected void btnModificarChoferes_Click(object sender, EventArgs e) {

    string nombre = txtNombre.Text.ToString(); string apellidos = txtApellidos.Text.ToString(); string cedula = txtCedula.Text.ToString(); string telefono = txtTelefono.Text.ToString();

  • string direccion = txtDireccion.Text.ToString(); int anos_experiencia = Int16.Parse(txtAnosExperiencia.Text.ToString());

    obll._modificarChofer(ID_Modificar, nombre, apellidos, cedula, telefono, direccion, anos_experiencia); tempTable = obll._consultarChoferes(); gdrChoferes.DataSource = tempTable; gdrChoferes.DataBind();

    txtNombre.Text = string.Empty; txtApellidos.Text = string.Empty; txtCedula.Text = string.Empty; txtTelefono.Text = string.Empty; txtDireccion.Text = string.Empty; txtAnosExperiencia.Text = string.Empty; txtNombre.Enabled = true;

    } /// /// Elimina la informacin de los choferes /// /// /// protected void gdrChoferes_RowDeleting(object sender, GridViewDeleteEventArgs e){} protected void gdrChoferes_RowCommand(object sender, GridViewCommandEventArgs e) {

    if (e.CommandName == "Delete") {

    int index = Convert.ToInt32(e.CommandArgument); string _id = tempTable.Rows[index][0].ToString();

    obll._eliminarChofer(_id); tempTable = obll._consultarChoferes(); gdrChoferes.DataSource = tempTable; gdrChoferes.DataBind();

    } }

    protected void btnLimpiarChoferes_Click(object sender, EventArgs e) {

    txtNombre.Text = string.Empty; txtApellidos.Text = string.Empty; txtCedula.Text = string.Empty; txtTelefono.Text = string.Empty; txtDireccion.Text = string.Empty; txtAnosExperiencia.Text = string.Empty; txtNombre.Enabled = true;

    }

    29. Se deben referenciar lo siguiente:

    using MongoDB_COMPDES_2014.BLL; using MongoDB.Bson; using System.Data;

  • 30. En el archivo vRutas.aspx.cs se debe llamar a los mtodos de la bll:

    bll obll = new bll(); static string ID_Modificar = ""; static DataTable tempTable = new DataTable(); protected void Page_Load(object sender, EventArgs e) {

    tempTable = obll._consultarRutas("Todos", ""); gdrRutas.DataSource = tempTable; gdrRutas.DataBind();

    if (!Page.IsPostBack) {

    cargarcombos(); }

    } /// /// Llama a la ventana de choferes /// /// /// protected void btnChoferesRutas_Click(object sender, EventArgs e) {

    Response.Redirect("vChoferes.aspx"); } /// /// Llama a la ventana de buses /// /// /// protected void btnBusesRutas_Click(object sender, EventArgs e) {

    Response.Redirect("vBuses.aspx"); } /// /// Carga los drop down list con la informacion obtenida /// protected void cargarcombos() {

    ddlRutas.DataTextField = "ruta"; ddlRutas.DataValueField = "ruta"; ddlRutas.DataSource = obll._cargaComboRutas(); ddlRutas.DataBind();

  • ddlChoferes.DataTextField = "nombre"; ddlChoferes.DataValueField = "nombre"; ddlChoferes.DataSource = obll._consultarChoferes(); ddlChoferes.DataBind();

    ddlBuses.DataTextField = "marca"; ddlBuses.DataValueField = "marca"; ddlBuses.DataSource = obll._consultarBuses(); ddlBuses.DataBind();

    } /// /// Obtiene la informacin de las rutas /// /// /// protected void btnBuscar_Click(object sender, EventArgs e) {

    string categoria = ddlConsulta.SelectedValue.ToString(); string consulta = txtConsulta.Text.ToString(); tempTable = obll._consultarRutas(categoria, consulta); gdrRutas.DataSource = tempTable; gdrRutas.DataBind();

    } /// /// Inserta la informacin de las rutas /// /// /// protected void btnInsertarRutas_Click(object sender, EventArgs e) {

    string ruta = ddlRutas.SelectedValue.ToString(); string chofer = ddlChoferes.SelectedValue.ToString(); string bus = ddlBuses.SelectedValue.ToString(); string salida_deposito = txtSalidaDeposito.Text.ToString(); string entrada_deposito = txtEntradaDeposito.Text.ToString(); string tiempo_viaje = txtTiempoViaje.Text.ToString();

    obll._insertarRuta(ruta, chofer, bus, salida_deposito, entrada_deposito, tiempo_viaje); tempTable = obll._consultarRutas("Todos", ""); gdrRutas.DataSource = tempTable; gdrRutas.DataBind();

    txtSalidaDeposito.Text = string.Empty; txtEntradaDeposito.Text = string.Empty; txtTiempoViaje.Text = string.Empty;

    } /// /// Selecciona la fila del gridview /// /// /// protected void gdrRutas_SelectedIndexChanged(object sender, EventArgs e) {

    int ruta = gdrRutas.SelectedRow.RowIndex;

  • ID_Modificar = tempTable.Rows[ruta][0].ToString(); ddlRutas.SelectedValue = gdrRutas.SelectedRow.Cells[2].Text; ddlChoferes.SelectedValue = gdrRutas.SelectedRow.Cells[3].Text; ddlBuses.SelectedValue = gdrRutas.SelectedRow.Cells[4].Text; txtSalidaDeposito.Text = gdrRutas.SelectedRow.Cells[5].Text; txtEntradaDeposito.Text = gdrRutas.SelectedRow.Cells[6].Text; txtTiempoViaje.Text = gdrRutas.SelectedRow.Cells[7].Text;

    } /// /// Inserta la informacin de las rutas /// /// /// protected void btnModificarRutas_Click(object sender, EventArgs e) {

    string ruta = ddlRutas.SelectedValue.ToString(); string chofer = ddlChoferes.SelectedValue.ToString(); string bus = ddlBuses.SelectedValue.ToString(); string salida_deposito = txtSalidaDeposito.Text.ToString(); string entrada_deposito = txtEntradaDeposito.Text.ToString(); string tiempo_viaje = txtTiempoViaje.Text.ToString();

    obll._modificarRuta(ID_Modificar, ruta, chofer, bus, salida_deposito, entrada_deposito, tiempo_viaje); tempTable = obll._consultarRutas("Todos", ""); gdrRutas.DataSource = tempTable; gdrRutas.DataBind();

    txtSalidaDeposito.Text = string.Empty; txtEntradaDeposito.Text = string.Empty; txtTiempoViaje.Text = string.Empty;

    } /// /// Elimina la informacin de las rutas /// /// /// protected void gdrRutas_RowDeleting(object sender, GridViewDeleteEventArgs e){} protected void gdrRutas_RowCommand(object sender, GridViewCommandEventArgs e) {

    if (e.CommandName == "Delete") {

    int index = Convert.ToInt32(e.CommandArgument); string _id = tempTable.Rows[index][0].ToString();

    obll._eliminarRuta(_id); tempTable = obll._consultarRutas("Todos", ""); gdrRutas.DataSource = tempTable; gdrRutas.DataBind();

    } }

    31. Se deben referenciar lo siguiente:

  • using MongoDB_COMPDES_2014.BLL; using System.Data;