# data[].attributes.attachment_link.title
Proyecto de aplicación para pedidos en la cafetería escolar

# data[].attributes.attachment_link.description
¡Hola! Queremos mejorar tu experiencia en la cafetería. ¿Nos dedicarías unos minutos para responder esta encuesta?

# data[].attributes.body
Diagramas de caso de uso detallados de usuarios

# data[].attributes.headline
Diagrama de caso de uso a detalle (DELIFOOD CAFETERIA)

# data[].attributes.subject
Diagrama de caso de uso a detalle (DELIFOOD CAFETERIA)

# data[].attributes.body
Enunciado DELIFOOD

# data[].attributes.attachment_link.readable_text
INSERT INTO `mydb`.`Usuarios` (`nombre`, `apellido`, `fecha_nac`, `correo`, `contrasena`) VALUES
('David', 'Mendoza', '2004-11-09', 'davidmendoza19.social@gmail.com', 'password123'),
('Uriel', 'Panzo', '2003-06-26', 'uvelazquez481@gmail.com', 'password456'),
('Cesiah', 'Perez', '2002-03-04', 'cesiarr60.wallet@gmail.com', 'password789');
('Fernanda', 'Arellano', '2004-09-28', 'fernandatrinidad04@gmail.com', 'password789');
('Natalia', 'L��pez', '2004-02-06', 'natalia.lopez@example.com', 'password789'),
('Rodrigo', 'Garcia', '1984-02-06', 'rodrigo.garcia@example.com', 'password789');

INSERT INTO `mydb`.`Administradores` (`Usuarios_codigo`) VALUES
(6);  -- Rodrigo Garcia es administrador

INSERT INTO `mydb`.`Cafeterias` (`nombre`, `descripcion`, `logo`, `codigo_acceso`, `Administradores_Usuarios_codigo`) VALUES
('Cafeter��a IESE', 'La principal cafeter��a del campus.', 'logo1.png', 'CENTRAL123', 6);

INSERT INTO `mydb`.`Clientes` (`Usuarios_codigo`, `Cafeterias_codigo`) VALUES
(1, 1),  -- David es cliente de la Cafeter��a
(2, 1),  -- Uriel es cliente de la Cafeter��a
(3, 1),  -- Cesiah es cliente de la Cafeter��a
(4, 1),  -- Fernanda es cliente de la Cafeter��a
(5, 1);  -- Natalia es cliente de la Cafeter��a

INSERT INTO `mydb`.`Codigos_registro` (`fecha_creacion`, `fecha_expiracion`, `Administradores_Usuarios_codigo`, `Cafeterias_codigo`) VALUES
('2025-02-27', '2025-03-27', 6, 1);  -- C��digo creado por Rodrigo para la Cafeter��a

INSERT INTO `mydb`.`Pedidos_estados` (`descripcion`) VALUES
('creado'),
('confirmado'),
('preparando'),
('Pendiente'),
('listo'),
('entregado'),
('Cancelado');

INSERT INTO `mydb`.`Productos` (`descripcion`, `imagen`, `precio`, `disponibilidad`) VALUES
('Caf��', 'cafe_americano.png', 12.0, 'Disponible'),
('T�� Verde', 'te_verde.png', 10.0, 'Disponible'),
('Chilaquiles rojos', 'chilaquiles_verde.png', 40, 'Disponible'),
('Galletas', 'galletas_chockis.png', 20, 'No Disponible'),
('Cuernito de Jam��n', 'cuernito_jamon.png', 35.00, 'Disponible');

INSERT INTO `mydb`.`Pedidos` (`codigo`, `total`, `Cafeterias_codigo`, `Clientes_Usuarios_codigo`, `Pedidos_estados_id_estado`) VALUES
(1, 12.0, 1, 1, 1), -- Pedido de David 
(2, 6.30, 1, 2, 2), -- Pedido de Uriel 
(3, 6.30, 1, 3, 1), -- Pedido de Cesiah 
(4, 6.30, 1, 4, 3), -- Pedido de Fernanda 
(5, 6.30, 1, 5, 5);  -- Pedido de Natalia

INSERT INTO `mydb`.`Pedidos_detalles` (`cantidad`, `precio_unitario`, `Pedidos_codigo`, `Pedidos_Cafeterias_codigo`, `Pedidos_Clientes_Usuarios_codigo`, `Productos_codigo`) VALUES
(1, 12.0, 1, 1, 1, 1),  -- 1 Caf�� Americano
(1, 10.0, 2, 1, 2, 2),  -- 1 T�� Verde
(1, 40.0, 3, 1, 3, 3),  -- 1 Chilaquiles rojos
(1, 20.0, 4, 1, 4, 4),  -- 1 Galletas
(1, 35.0, 5, 1, 5, 5);  -- 1 Cuernito de Jam��n

INSERT INTO `mydb`.`Personalizaciones` (`descripcion`, `precio`, `imagen`, `Productos_codigo`) VALUES
('Con leche', 10, 'leche.png', 1),  -- Personalizaci��n para Caf�� Americano
('Sin azucar', 0, 'azucar.png', 2),  -- Personalizaci��n para Te verde
('Sin cebolla', 0, 'cebolla.png', 2),  -- Personalizaci��n para Te verde
('Sin jitomate', 0, 'Jitomate.png', 5),  -- Personalizaci��n para Cuernito
('Queso extra', 10, 'queso.png', 5),  -- Personalizaci��n para Cuernito
('Sin cebolla', 0, 'cebolla.png', 5);  -- Personalizaci��n para Cuernito

INSERT INTO `mydb`.`Productos_historicos` (`descripcion`, `imagen`, `precio`, `fecha_inicio_vigencia`, `fecha_final_vigencia`, `Productos_codigo`) VALUES
('Caf�� Americano', 'cafe_americano_old.png', 10.00, '2025-01-01 00:00:00', '2025-12-31 23:59:59', 1);  -- Precio antiguo del Caf�� Americano

# data[].attributes.attachment_link.readable_text
-- 1. Verificar si existe el c��digo de registro
-- Enunciado: Verificar si un c��digo de registro espec��fico existe en la base de datos.

SELECT * 
FROM `mydb`.`Codigos_registro` 
WHERE `id_codigo` = 1;

-- 2. Mostrar todos los pedidos categorizados por estados
-- Enunciado: Mostrar todos los pedidos agrupados por su estado actual.

SELECT 
    pe.descripcion AS estado, 
    p.codigo AS codigo_pedido, 
    p.total, 
    p.fecha_creacion, 
    p.hora_creacion
FROM `mydb`.`Pedidos` p
JOIN `mydb`.`Pedidos_estados` pe ON p.Pedidos_estados_id_estado = pe.id_estado
ORDER BY pe.descripcion;

-- 3. Mostrar los pedidos ordenados en orden de creaci��n
-- Enunciado: Mostrar todos los pedidos ordenados por su fecha y hora de creaci��n (del m��s reciente al m��s antiguo).

SELECT 
    p.codigo AS codigo_pedido, 
    p.total, 
    p.fecha_creacion, 
    p.hora_creacion, 
    pe.descripcion AS estado
FROM `mydb`.`Pedidos` p
JOIN `mydb`.`Pedidos_estados` pe ON p.Pedidos_estados_id_estado = pe.id_estado
ORDER BY p.fecha_creacion DESC, p.hora_creacion DESC;

-- 4. Mostrar los pedidos y su respectivo estado
-- Enunciado: Mostrar todos los pedidos junto con su estado actual.

SELECT 
    p.codigo AS codigo_pedido, 
    p.total, 
    p.fecha_creacion, 
    p.hora_creacion, 
    pe.descripcion AS estado
FROM `mydb`.`Pedidos` p
JOIN `mydb`.`Pedidos_estados` pe ON p.Pedidos_estados_id_estado = pe.id_estado;

-- 5. Obtener informaci��n acerca de un cliente en espec��fico
-- Enunciado: Obtener toda la informaci��n de un cliente espec��fico, incluyendo sus datos personales y la cafeter��a a la que est�� asociado.

SELECT 
    u.codigo AS codigo_usuario, 
    u.nombre, 
    u.apellido, 
    u.fecha_nac, 
    u.correo, 
    c.Cafeterias_codigo AS codigo_cafeteria, 
    ca.nombre AS nombre_cafeteria
FROM `mydb`.`Usuarios` u
JOIN `mydb`.`Clientes` c ON u.codigo = c.Usuarios_codigo
JOIN `mydb`.`Cafeterias` ca ON c.Cafeterias_codigo = ca.codigo
WHERE u.codigo = ?;  -- Reemplaza ? con el c��digo del cliente

-- 6. Obtener todos los pedidos de un usuario en espec��fico ordenados por fecha de creaci��n y su estado actual
-- Enunciado: Mostrar todos los pedidos de un cliente espec��fico, ordenados por fecha de creaci��n y mostrando su estado actual.

SELECT 
    p.codigo AS codigo_pedido, 
    p.total, 
    p.fecha_creacion, 
    p.hora_creacion, 
    pe.descripcion AS estado
FROM `mydb`.`Pedidos` p
JOIN `mydb`.`Pedidos_estados` pe ON p.Pedidos_estados_id_estado = pe.id_estado
WHERE p.Clientes_Usuarios_codigo = ?  -- Reemplaza ? con el c��digo del cliente
ORDER BY p.fecha_creacion DESC, p.hora_creacion DESC;

-- 7. Listar todos los pedidos, donde incluya su estado, sus detalles e informaci��n del producto
-- Enunciado: Mostrar todos los pedidos con su estado, los detalles de cada pedido (productos y cantidades) y la informaci��n de los productos.

SELECT 
    p.codigo AS codigo_pedido, 
    p.total AS total_pedido, 
    p.fecha_creacion, 
    p.hora_creacion, 
    pe.descripcion AS estado, 
    pd.cantidad, 
    pd.precio_unitario, 
    pr.descripcion AS producto, 
    pr.precio AS precio_producto
FROM `mydb`.`Pedidos` p
JOIN `mydb`.`Pedidos_estados` pe ON p.Pedidos_estados_id_estado = pe.id_estado
JOIN `mydb`.`Pedidos_detalles` pd ON p.codigo = pd.Pedidos_codigo 
    AND p.Cafeterias_codigo = pd.Pedidos_Cafeterias_codigo 
    AND p.Clientes_Usuarios_codigo = pd.Pedidos_Clientes_Usuarios_codigo
JOIN `mydb`.`Productos` pr ON pd.Productos_codigo = pr.codigo
ORDER BY p.fecha_creacion DESC, p.hora_creacion DESC;

-- 8. Obtener todos los productos disponibles en una cafeter��a espec��fica
-- Enunciado: Mostrar todos los productos disponibles en una cafeter��a espec��fica.

SELECT 
    pr.codigo AS codigo_producto, 
    pr.descripcion, 
    pr.imagen, 
    pr.precio, 
    pr.disponibilidad
FROM `mydb`.`Productos` pr
JOIN `mydb`.`Pedidos_detalles` pd ON pr.codigo = pd.Productos_codigo
JOIN `mydb`.`Pedidos` p ON pd.Pedidos_codigo = p.codigo 
    AND pd.Pedidos_Cafeterias_codigo = p.Cafeterias_codigo
WHERE p.Cafeterias_codigo = ?  -- Reemplaza ? con el c��digo de la cafeter��a
AND pr.disponibilidad = 'Disponible'
GROUP BY pr.codigo;

-- 9. Obtener todos los administradores y las cafeter��as que gestionan
-- Enunciado: Mostrar todos los administradores junto con las cafeter��as que gestionan.

SELECT 
    u.codigo AS codigo_administrador, 
    u.nombre, 
    u.apellido, 
    u.correo, 
    c.codigo AS codigo_cafeteria, 
    c.nombre AS nombre_cafeteria
FROM `mydb`.`Usuarios` u
JOIN `mydb`.`Administradores` a ON u.codigo = a.Usuarios_codigo
JOIN `mydb`.`Cafeterias` c ON a.Usuarios_codigo = c.Administradores_Usuarios_codigo;

-- 10. Obtener todos los productos con sus personalizaciones disponibles
-- Enunciado: Mostrar todos los productos junto con sus posibles personalizaciones.

SELECT 
    pr.codigo AS codigo_producto, 
    pr.descripcion AS producto, 
    pr.precio AS precio_producto, 
    pe.descripcion AS personalizacion, 
    pe.precio AS precio_personalizacion
FROM `mydb`.`Productos` pr
LEFT JOIN `mydb`.`Personalizaciones` pe ON pr.codigo = pe.Productos_codigo;

# data[].attributes.headline
DIAGRAMA DE SECUENCIA (DELIFOOD CAFETERIA)

# data[].attributes.subject
DIAGRAMA DE SECUENCIA (DELIFOOD CAFETERIA)

# data[].attributes.headline
DIAGRAMA DE INTERFACES DELIFOOD CAFETERÍA

# data[].attributes.subject
DIAGRAMA DE INTERFACES DELIFOOD CAFETERÍA

# data[].attributes.headline
DIAGRAMA DE SECUENCIA DE DELIFOOD CLIENTE

# data[].attributes.subject
DIAGRAMA DE SECUENCIA DE DELIFOOD CLIENTE

# data[].attributes.headline
DIAGRAMA DE INTERFACES DE DELIFOOD CLIENTES

# data[].attributes.subject
DIAGRAMA DE INTERFACES DE DELIFOOD CLIENTES

# data[].attributes.attachment_link.title
PROCEDIMIENTOS ALMACENADOS BASICOS PARA DELIFOOD SERVIDOR

# data[].attributes.headline
RESULTADOS DE ECUESTAS A USUARIOS DE LA CAFETERIA

# data[].attributes.subject
RESULTADOS DE ECUESTAS A USUARIOS DE LA CAFETERIA