barbershop / routes /MovimientosR.py
winderoman's picture
Add application file
35c6a2c
raw
history blame contribute delete
No virus
5.07 kB
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"
@router.post("/create/",response_model=MovimientosRead)
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")
@router.get("/get/{movimiento_id}",response_model=MovimientosRead)
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")
@router.post("/weekly-expenses")
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}
@router.post("/consulted_expenses")
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}
@router.get("/get-cuenta")
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")
@router.post("/update-movimiento", response_model=MovimientosRead)
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")
@router.post("/update-movimientos-status")
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")