Ejercicio Web API

Vamos a crear una API para gestionar los siguientes modelos de datos:

HojaServicio

Id

Fecha

Descripción

Lineas

Id

Servicio

Precio

HojaServicioId

La API debe tener la siguiente funcionalidad:

Hoja/Get/id

Devuelve la fecha, la descripción y el total del precio

Hoja/Get/

Devuelve la lista con el mismo formato que el anterior

Hoja/Fecha/{fecha}

Nos devuelve una lista con las hojas de servicio de esa fecha con el mismo formato que la anterior

El resto (POST/PUT/DELETE) comportamiento habitual.

Lineas/Get/id

Nos devuelve el servicio, el precio y la fecha

Lineas/get

Todas las lineas con el formato anterior

Lineas/Servicio/{Servicio}

Todas las líneas que tengan ese servicio con el formato anterior.

El resto (POST/PUT/DELETE) comportamiento habitual.

Crear una ruta addAll a la que le pasemos lo siguiente:

fecha

descripcion

lista de servicios[{servicio,precio},{servicio,precio},{servicio,precio}]

Y nos cree la hoja de servicios y los servicios asociados

MVC Zoo

Queremos hacer un MVC para implementar el siguiente modelo ER

El zoo tiene diferentes especies de las que tenemos el nombre común y el científico, una foto y una descripción. Las especies viven en habitats que tienen un nombre, un clima y una vegetación. Cada especie en cada habitat tiene un índice (entero) que es su adecuación al habitat. El zoo tiene diferentes itinerarios que tienen una duración en minutos (entera) un número de visitantes (entero) y una longitud en metros (entero)

Tenemos que hacer un MVC que permita dar de alta todas las entidades, permita asignar especies a habitats, pueda ver para cada itinerario los habitats y las especies que pueda ver, en general lo más completo que podáis.

Implementar detalles para una relación N-N

Si en nuestro MVC queremos ver en el detalle de un registro los registros relacionados en otra entidad a través de una relación N-N lo único que tenemos que hacer es cargarlo en el modelo.

Esto lo hacemos a través de Include y ThenInclude que funcionan como si fueran los joins de una consulta.

En el ejemplo tenemos Comics, que tiene una relación 1-N con Categoría y una N-N con autores. Tendremos un Include para incluir Categoría y poder ver su nombre. Para el caso del Autor usamos Include para incluir ComicAutor y después ThenInclude para incluir Autor. Queda así:

var comic = await _context.Comic
.Include(c => c.Categoria)
.Include(c=>c.ComicAutor)
.ThenInclude(ComicAutor=>ComicAutor.Autor)
.FirstOrDefaultAsync(m => m.Id == id);

Cuando pasamos el modelo a la vista tenemos cargados los datos del comic. En el objeto Categoria los datos de la categoría. En la colección de ComicAutor la lista de elementos de ComicAutor y cada uno de estos elementos tendrá el Autor cargado al completo.

Aunque sólo pasamos un modelo (Comic) Estamos pasando información de cuatro entidades de la base de datos: Comic, Categoria, ComicAutor y Autor.

Para acceder a la información basta acceder a las propiedades de esos objetos. Ejemplo:

Nombre de la categoría: model.Categoria.Nombre

Colección de ComicAutor: Model.ComicAutor

Si recorremos este último
@foreach (var c in Model.ComicAutor)
{
<p>@c.Autor.Nombre (@c.Rol)</p>
}

Ejercicio controlador+vistas

Crear un controlador ‘Tablas’ Que tenga las siguientes acciones:

Diagonal?lado=xx

Nos dibujará una tabla con 1 en la diagonal principal y aumentando de número en las siguientes diagonales. Ejemplo:

1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1

Aleatorio?lado=xx

Nos dibujará una tabla con valores aleatorios entre 1 y 9. Ejemplo:

1 6 3 5
2 4 2 8
6 2 7 2
2 5 2 9

Magico?lado=??

Nos dibujará una tabla con un cuadrado mágico del lado que nos indiquen. Tenemos que comprobar que el lado sea impar. Ejemplo:

4 9 2
3 5 7
8 1 6

Pista: http://www.elguille.info/NET/dotnet/cuadradoMagico.htm

Ejercicios Regex

Cambiar el programa de amazon para que nos busque urls de imágenes.

Crear un programa que nos busque en el archivo adjunto todos los dnis y matrículas.

testra

Ejercicio Colección de cómics

Vamos a crear una aplicación para hacer un catálogo de una colección de comics. Las entidades son las siguientes:

Categorias: Nombre y descripción
Autores: Nombre, nacionalidad y año de nacimiento
Comics: Título, descripción, fecha y número de páginas

Una categoría puede tener varios cómics pero un cómic sólo pertenece a una categoría
Un autor lo puede ser de varios comics y viceversa. Los autores pueden tener diferentes roles para cada cómic (guionista, dibujante, entintador,…)

Tenemos que hacer:

1) Modelo ER.
2) Crear una aplicación de consola que implemente (Code First) este modelo.
3) En esa misma aplicación poder hacer un mantenimiento CRUD de las tres tablas. Incluyendo asignar autores a comics. Las asignaciones se harán por el id.

Ejemplo. El programa nos mostrará lo siguiente:

1) Añadir categoría
2) Ver categorías
3) Modificar categoría
4) Borrar categoría

Si pulsamos 1:

Introduzca el nombre de la categoría:
Introduzca la descripción:
Categoría creada con id:

Si pulsamos el 2:

Id Nombre Descripción
1 Manga Comic japonés
2 Novela gráfica

Si ponemos el 3:

Introduzca el id a modificar:
Introduzca nuevo nombre (intro para no modificar):
Introduzca nueva descripción (intro para no modificar):

Si ponemos el 4:

introduzca el id a eliminar:
Borrará la categoría XXX ¿Está seguro?

4) Modificar las asignaciones para incluir también búsqueda por nombre.
5) Crear una opción de estadísticas que nos permita ver:
a) El número de cómics por categoría
b) el número de cómics por autor
c) Los 5 cómics con mayor número de páginas.
d) el número de autores por nacionalidad.

 

Añadir la entidad Editorial

Tiene las propiedades nombre y país

Un comic es de una editorial y una editorial puede tener varios comics.

Añadir el CRUD de la editorial y los cambios que sean necesarios en comic para tener en cuenta la editorial.