Spaces:
Sleeping
Sleeping
from typing import List, Optional | |
from fastapi import APIRouter,Depends,HTTPException | |
from fastapi.security import OAuth2PasswordBearer | |
from sqlalchemy.orm import Session | |
from db.session import get_session | |
from schemas.MovimientosSh import * | |
from schemas.UsuarioSh import UserRead | |
from cruds.MovimientosCrud import * | |
from routes.UsuarioR import get_current_user | |
router = APIRouter() | |
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/users/login") | |
BARBERO = "BARBERO" | |
async def create_movimiento(movi:MovimientosCreate,db:Session = Depends(get_session), current_user: UserRead = Depends(get_current_user)): | |
if current_user.estado_usuario: | |
if current_user.rol == BARBERO: | |
return create_new_movimiento(movi,current_user.id_usuario,db) | |
else: | |
raise HTTPException(status_code=401, detail="Not authorized") | |
else: | |
raise HTTPException(status_code=403, detail="El estado del usuario es inactivo /create") | |
def read_movimiento(id_movimientos:int, db:Session = Depends(get_session), current_user: UserRead = Depends(get_current_user)): | |
if current_user.estado_usuario: | |
user = buscar_movimientos(id_movimientos,db) | |
if user is None: | |
raise HTTPException(status_code=404,detail="Movimiento no encontrado") | |
return user | |
raise HTTPException(status_code=403, detail="El estado del usuario es inactivo") | |
def weekly_expenses(datos: dict, db: Session = Depends(get_session), current_user: UserRead = Depends(get_current_user)): | |
if not current_user.estado_usuario: | |
raise HTTPException(status_code=403, detail="El estado del usuario es inactivo") | |
if current_user.rol != 'BARBERO': | |
raise HTTPException(status_code=401, detail="Not authorized") | |
tipo = datos.get("tipo") | |
if not tipo: | |
raise HTTPException(status_code=400, detail="El campo 'tipo' es requerido") | |
total_expenses, details = get_weekly_expenses(db, current_user.id_usuario, tipo) | |
return {"total_expenses": total_expenses, "details": details} | |
def consulted_expenses(datos: dict, db: Session = Depends(get_session), current_user: UserRead = Depends(get_current_user)): | |
if not current_user.estado_usuario: | |
raise HTTPException(status_code=403, detail="El estado del usuario es inactivo") | |
if current_user.rol != 'BARBERO': | |
raise HTTPException(status_code=401, detail="Not authorized") | |
start_week = datos.get("start_week") | |
end_week = datos.get("end_week") | |
if not start_week and end_week: | |
raise HTTPException(status_code=400, detail="Los campos son requeridos") | |
total_expenses, details = get_consulted_expenses(db, current_user.id_usuario, start_week,end_week) | |
return {"total_expenses": total_expenses, "details": details} | |
async def account_money(fecha_inicio : Optional[str] = None,fecha_fin : Optional[str] = None,db:Session = Depends(get_session),current_user:UserRead = Depends(get_current_user)): | |
if current_user.estado_usuario: | |
if current_user.rol == BARBERO: | |
cuenta = money_account(db,current_user.id_usuario,fecha_inicio,fecha_fin) | |
return {"money_account":cuenta} | |
raise HTTPException(status_code=401, detail="Not authorized") | |
raise HTTPException(status_code=403, detail="El estado del usuario es inactivo /get_reserve_pendiente") | |
def update_user_func(movi: MovimientosUpdate, db: Session = Depends(get_session), current_user: UserRead = Depends(get_current_user)): | |
if current_user.estado_usuario: | |
if current_user.rol == BARBERO: | |
movimientoread = update_movimiento_crud(movi,db) | |
if movimientoread is None: | |
raise HTTPException(status_code=401, detail="no se encontro el movimiento") | |
return movimientoread | |
raise HTTPException(status_code=401, detail="Not authorized") | |
else: | |
raise HTTPException(status_code=403, detail="El estado del usuario es inactivo") | |
def update_movimientos_status(movi: MovimientosUpdateStatus, db: Session = Depends(get_session), current_user: UserRead = Depends(get_current_user)): | |
if current_user.estado_usuario: | |
if current_user.rol == BARBERO: | |
statusUpdate = update_movimientos_status_crud(movi, db) | |
if statusUpdate: | |
return {"message:":"The movimiento status has been successfully updated", "status": statusUpdate} | |
return {"message:":"An error occurred at the time of updating the movimiento.", "status": statusUpdate} | |
raise HTTPException(status_code=401, detail="Not authorized") | |
else: | |
raise HTTPException(status_code=403, detail="El estado del usuario es inactivo") |