Ejercicio clicker empresa de software

Vamos a hacer un juego tipo clicker para manejar una empresa de software.

Tenemos un botón para escribir código. Cada vez que lo pulsamos generamos una línea de código. La venta de una línea de código nos proporciona 10 céntimos de euro. Vamos a tener un control de las líneas de código escritas y del dinero que tenemos.

Por 10€ (gasto de papeleo) podemos contratar a un minion. Cada minion escribe una línea de código cada 10 segundos.

Nuestras oficinas tienen capacidad para albergar a 50 minions.

Nuestros discos duros tienen capacidad para almacenar 10 millones de líneas de código.

Ampliar la oficina nos cuesta 1000€ y caben otros 50 minions. Comprar un disco duro nos cuesta 100 € y almacena 10 millones de líneas de código.

Podemos ir comprando estos powers up:

  • Contratar formador (1000€) Incrementa la productividad de los minions x 10
  • Comprar máquina de café (500€) Incrementa la productividad de los minions x 2
  • Incentivos (200€ * minion) Incrementa la productividad de los minions x 10 (este lo podemos ir haciendo todas las veces que queramos pero el precio se va multiplicando por 2, 400, 800…)

Cuando tengamos más de 500 minions:

  • Asesoría SCRUM (10000€) Incrementa la productividad de los minions x4
  • Contratar CTO de Amazon (100000€) Incrementa la productividad de los minions x50

Y también:

  • Contratar comercial (1000€) Incrementa el precio del código x 2
  • Contratar campaña medios (2000€) Incrementa el precio del código x 2
  • Contratar agencia (5000€) Incrementa el precio del código x 2

Para almacenamiento:

  • Comprar sistema de compresión (1000€) Duplica la capacidad de nuestros discos duros

 

Ejercicio Reloj

Vamos a construir un cronómetro de la siguiente manera:

Segundos

Minutos:

Horas:

Las cajas se van llenando hasta llegar a 60, cuando llegan a 60 se borra todo el div y se añade una caja a la siguiente. Cuando las horas lleguen a 24 se borra todo y se empieza de nuevo.

Ejercicio JS DOM

ejercicio

En la página anterior realizar un js que nos permita:

Ver todos los elementos que están dentro de una lista

Ver todos los elementos que están dentro de un td

Poner todos los elementos que tengan una y griega dentro de su texto de color rojo (todo el elemento)

Mostrar un listado de todos los id’s

Mostrar un listado de todas las clases

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

Ejercicio API

Vamos a consultar libros y artículos del nytimes. Aquí hay la lista de las apis:

https://developer.nytimes.com/apis

Yo me he creado una apikey: SFq0lnJwGzV4X8XyqV2kQvA3LgKAp3kN

Pero os podéis crear la vuestra.

Me gustaría que, desde el postman, accediéramos a la lista de los libros más vendidos y a los artículos de los tres últimos meses.

También podéis crear vuestra propia apikey y acceder, por ejemplo, a películas.

¡A por ello!

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>
}