{"id":24811040,"url":"https://github.com/wil-jsdev/gestiondetareas","last_synced_at":"2025-03-25T13:24:01.294Z","repository":{"id":274109696,"uuid":"919094523","full_name":"Wil-JsDev/GestionDeTareas","owner":"Wil-JsDev","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-16T02:07:14.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T02:41:55.286Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Wil-JsDev.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-19T17:35:14.000Z","updated_at":"2025-03-16T02:07:18.000Z","dependencies_parsed_at":"2025-01-25T00:20:27.187Z","dependency_job_id":"25c2ca05-8202-4a65-a4b2-433088227279","html_url":"https://github.com/Wil-JsDev/GestionDeTareas","commit_stats":null,"previous_names":["wil-jsdev/gestiondetareas"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wil-JsDev%2FGestionDeTareas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wil-JsDev%2FGestionDeTareas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wil-JsDev%2FGestionDeTareas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wil-JsDev%2FGestionDeTareas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Wil-JsDev","download_url":"https://codeload.github.com/Wil-JsDev/GestionDeTareas/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245468637,"owners_count":20620423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-30T12:19:03.649Z","updated_at":"2025-03-25T13:24:01.259Z","avatar_url":"https://github.com/Wil-JsDev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arquitectura ONION\n\nEl proyecto está estructurado en varias capas para mantener la separación de responsabilidades, facilitar el mantenimiento y mejorar la escalabilidad.\n\n---\n\n## **Capa de Aplicación (Application Layer)**\n\nEsta capa contiene toda la lógica de negocio y las definiciones de contratos para las interfaces de servicio. Aquí se gestionan las siguientes responsabilidades principales:\n\n- **Servicios de negocio**: Implementación de reglas y procesos específicos del dominio.\n- **Interfaces**: Contratos que definen las operaciones disponibles en los repositorios y servicios.\n- **DTOs (Data Transfer Objects)**: Clases diseñadas para transferir datos entre capas.\n- **Validaciones**: Asegurar que los datos cumplen con las reglas de negocio.\n- **Mapeo de datos**: Convierte los datos de entrada en DTOs y los datos de salida en respuestas comprensibles para el cliente.\n\n---\n\n## **Capa de Dominio (Domain Layer)**\n\nEs el núcleo de la aplicación, que encapsula los conceptos principales del negocio. Contiene:\n\n- **Modelos de datos**: Representaciones de las entidades del dominio, como las tablas de la base de datos.\n- **Enumeraciones (Enums)**: Valores predefinidos utilizados para representar estados o categorías dentro del dominio.\n- **Reglas del dominio**: Lógica específica que afecta directamente a los modelos, como validaciones y comportamientos.\n\n---\n\n## **Capa de Persistencia (Persistence Layer)**\n\nGestiona la interacción con la base de datos y es responsable de la persistencia de datos. Sus responsabilidades incluyen:\n\n- **Contexto de la base de datos**: Configuración y gestión del acceso a la base de datos utilizando herramientas como Entity Framework Core.\n- **Repositorios**: Implementación de métodos para acceder, consultar y manipular datos en las tablas.\n- **Migraciones**: Gestión del esquema de la base de datos, permitiendo aplicar o revertir cambios estructurales.\n\n---\n\nEste diseño en capas asegura que el proyecto sea modular, reutilizable y fácil de probar. Cada capa se comunica únicamente a través de contratos y no accede directamente a las capas inferiores, promoviendo la adherencia a los principios de arquitectura limpia.\n\n\n## **Capa de API (API Layer)**\nLa capa de API actúa como el punto de entrada principal para los clientes que interactúan con la aplicación. Su propósito es exponer los servicios y operaciones del sistema de manera segura y estructurada.\n\n### Responsabilidades principales:\n- **Controladores**: Implementan los endpoints HTTP para gestionar las solicitudes y respuestas.\n- **Validación de solicitudes**: Verifica que los datos recibidos cumplan con los requisitos antes de procesarlos.\n- **Manejo de errores**: Proporciona respuestas claras y coherentes en caso de errores o excepciones.\n\n### Ejemplo de uso:\n- Recibe una solicitud HTTP (por ejemplo, `GET /api/task`).\n- Valida los datos de la solicitud.\n- Llama a los servicios de la capa de Aplicación para realizar la lógica de negocio.\n- Devuelve la respuesta al cliente en un formato estándar (como JSON).\n\n### Beneficios:\n- Separa la lógica de presentación de las capas internas del sistema.\n- Facilita la integración con diferentes clientes (web, móvil, etc.).\n- Proporciona un único punto de acceso para los consumidores del sistema.\n\n---\n\n# Documentación de la API de Tareas\n\n## Endpoints\n\n---\n\n### **1. Crear Tarea**\n**POST** `/api/task`\n\nCrea una nueva tarea con los detalles proporcionados.\n\n- **Cuerpo de la solicitud:**\n  ```json\n  {\n  \"descriptionAboutTask\": \"Descripcion de la tarea\",\n  \"statusTask\": estado de la tarea ,\n  \"DuaDate\": \"fecha de venciemiento\",\n  \"additionalData\": nivel de acceso (int)\n}\n\n## **2. Obtener Todas las Tareas**\n**GET** `/api/task`\n\nRecupera todas las tareas.\n\n- **Respuesta:**\n  - **200 OK**: Devuelve una lista de tareas.\n\n---\n\n## **3. Filtrar Tareas por Estado**\n**GET** `/api/task/{status}`\n\nRecupera tareas filtradas por su estado.\n\n- **Parámetros de ruta:**\n  - `status` (enum): El estado por el cual filtrar (por ejemplo, `Pendiente`, `Completada`).\n\n- **Respuesta:**\n  - **200 OK**: Devuelve una lista de tareas con el estado especificado.\n  - **400 Bad Request**: Si el filtro falla.\n\n---\n\n## **4. Obtener Tarea por ID**\n**GET** `/api/task/{id}`\n\nRecupera una tarea específica por su ID.\n\n- **Parámetros de ruta:**\n  - `id` (GUID): El ID de la tarea a recuperar.\n\n- **Respuesta:**\n  - **200 OK**: Devuelve la tarea con el ID especificado.\n  - **404 Not Found**: Si no se encuentra la tarea con el ID proporcionado.\n\n---\n\n## **5. Eliminar Tarea**\n**DELETE** `/api/task/{id}`\n\nElimina una tarea específica por su ID.\n\n- **Parámetros de ruta:**\n  - `id` (GUID): El ID de la tarea a eliminar.\n\n- **Respuesta:**\n  - **204 No Content**: Si la tarea se elimina correctamente.\n  - **404 Not Found**: Si no se encuentra la tarea con el ID proporcionado.\n\n---\n\n## **6. Actualizar Tarea**\n**PUT** `/api/task`\n\nActualiza una tarea con el ID y los detalles proporcionados.\n\n- **Parámetros de consulta:**\n  - `id` (GUID): El ID de la tarea a actualizar.\n\n- **Cuerpo de la solicitud:**\n  ```json\n  { \n    \"description\": \"Nueva descripción de la tarea\",\n    \"status\": \"Completada\"\n  }","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwil-jsdev%2Fgestiondetareas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwil-jsdev%2Fgestiondetareas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwil-jsdev%2Fgestiondetareas/lists"}