from fastapi import APIRouter, Request, Form, Depends from fastapi.responses import RedirectResponse, JSONResponse from app.database import get_connection from app.auth import get_current_user router = APIRouter(prefix="/contratos", tags=["contratos"]) _SEED = [ ("001", "860078828", "11", "EPS SANITAS"), ("002", "830054904", "11", "EPS COMPENSAR"), ("003", "900278729", "12", "PARTICULAR"), ("004", "800106339", "11", "EPS NUEVA EPS"), ("005", "800153424", "11", "EPS SURA"), ("006", "805009741", "11", "EPS COOMEVA"), ("007", "860002183", "11", "EPS FAMISANAR"), ("008", "860002503", "11", "EPS CRUZ BLANCA"), ("009", "860027404", "11", "EPS COLSANITAS"), ("010", "860039988", "11", "EPS SALUD TOTAL"), ("011", "890903790", "11", "EPS SAVIA SALUD"), ("012", "900178724", "11", "EPS MUTUAL SER"), ("034", "860078828", "11", "EPS SANITAS (alt)"), ("035", "860078828", "11", "EPS SANITAS (alt)"), ("036", "860078828", "11", "EPS SANITAS (alt)"), ("20062026", "800182856", "01", "SUBSIDIADO"), ("CW225489", "899999068", "07", "POLIZA / SEGURO"), ] def ensure_defaults(): conn = get_connection() for nc, nit, tu, desc in _SEED: exists = conn.execute( "SELECT id FROM contratos WHERE numero_contrato = ?", (nc,) ).fetchone() if not exists: conn.execute( "INSERT INTO contratos (numero_contrato, nit_empresa, tipo_usuario, descripcion) VALUES (?,?,?,?)", (nc, nit, tu, desc), ) conn.commit() conn.close() def load_contrato_map() -> dict: """Devuelve {numero_contrato: tipo_usuario} incluyendo variante sin ceros a la izquierda.""" conn = get_connection() rows = conn.execute("SELECT numero_contrato, tipo_usuario FROM contratos").fetchall() conn.close() result = {} for r in rows: nc = r["numero_contrato"].strip() tu = r["tipo_usuario"].strip() result[nc] = tu nc_s = nc.lstrip("0") or nc if nc_s != nc: result[nc_s] = tu return result @router.get("") async def contratos_page(request: Request, user: dict = Depends(get_current_user)): conn = get_connection() rows = conn.execute("SELECT * FROM contratos ORDER BY numero_contrato").fetchall() conn.close() return request.app.state.templates.TemplateResponse("contratos.html", { "request": request, "user": user, "contratos": rows, }) @router.post("/create") async def contrato_create( request: Request, user: dict = Depends(get_current_user), numero_contrato: str = Form(...), nit_empresa: str = Form(""), tipo_usuario: str = Form(...), descripcion: str = Form(""), ): conn = get_connection() try: conn.execute( "INSERT INTO contratos (numero_contrato, nit_empresa, tipo_usuario, descripcion) VALUES (?,?,?,?)", (numero_contrato.strip(), nit_empresa.strip(), tipo_usuario.strip(), descripcion.strip()), ) conn.commit() except Exception: pass conn.close() return RedirectResponse("/contratos", status_code=302) @router.post("/update/{contrato_id}") async def contrato_update( contrato_id: int, user: dict = Depends(get_current_user), numero_contrato: str = Form(...), nit_empresa: str = Form(""), tipo_usuario: str = Form(...), descripcion: str = Form(""), ): conn = get_connection() conn.execute( "UPDATE contratos SET numero_contrato=?, nit_empresa=?, tipo_usuario=?, descripcion=? WHERE id=?", (numero_contrato.strip(), nit_empresa.strip(), tipo_usuario.strip(), descripcion.strip(), contrato_id), ) conn.commit() conn.close() return RedirectResponse("/contratos", status_code=302) @router.post("/delete/{contrato_id}") async def contrato_delete(contrato_id: int, user: dict = Depends(get_current_user)): conn = get_connection() conn.execute("DELETE FROM contratos WHERE id = ?", (contrato_id,)) conn.commit() conn.close() return RedirectResponse("/contratos", status_code=302)