async def make_transaction( transaction_in: TransactionIn): #entra modelo transaccion user_in_db = get_user(transaction_in.username) #valida usuario if user_in_db == None: raise HTTPException(status_code=404, detail="El usuario no existe") if user_in_db.balance < transaction_in.value: #valida el saldo con lo que se retirara raise HTTPException(status_code=400, detail="Sin fondos suficientes") # ya todo validado user_in_db.balance = user_in_db.balance - transaction_in.value #resta la transaccion del saldo update_user(user_in_db) #actualiza la base de datos #creamos el un objeto trnasaccionIN con el mapeo de la transaccion transaction_in_db = TransactionInDB( **transaction_in.dict(), actual_balance=user_in_db.balance ) #guarda el balance del usuario en ese momento como un atributo suyo transaction_in_db = save_transaction( transaction_in_db) #guarda esa transaccionIN transaction_out = TransactionOut( **transaction_in_db.dict()) #crea la TransaccionOUT con su mapeo return transaction_out #retorna el modelo de transaccion OUT
async def make_transaction(transaction_in: TransactionIn): user_in_db = get_user(transaction_in.username) if user_in_db == None: raise HTTPException(status_code=404, detail="El usuario no existe") if user_in_db.balance < transaction_in.value: raise HTTPException(status_code=400, detail="Sin fondos suficientes") user_in_db.balance = user_in_db.balance - transaction_in.value update_user(user_in_db) transaction_in_db = TransactionInDB(**transaction_in.dict(), actual_balance = user_in_db.balance) transaction_in_db = save_transaction(transaction_in_db) transaction_out = TransactionOut(**transaction_in_db.dict()) return transaction_out
async def make_transaction(transaction_in: TransactionIn): user_in_db = get_user(transaction_in.username) if user_in_db == None: raise HTTPException(status_code=404, detail="El usuario no existe") user_in_db.balance = user_in_db.balance + transaction_in.income user_in_db.balance = user_in_db.balance - transaction_in.expense update_user(user_in_db) transaction_in_db = TransactionInDB(**transaction_in.dict(), actual_balance = user_in_db.balance) transaction_in_db = save_transaction(transaction_in_db) transaction_out = TransactionOut(**transaction_in_db.dict()) return transaction_out
async def make_transaction(transaction_in: TransactionIn): user_in_db = get_user(transaction_in.ID_empleado) if user_in_db != None: raise HTTPException(status_code=404, detail="El usuario ya existe") #update_user(user_in_db) transaction_in_db = TransactionInDB(**transaction_in.dict()) transaction_in_db = save_transaction(transaction_in_db) transaction_out = TransactionOut(**transaction_in_db.dict()) return transaction_out
async def make_transaction(transaction_in: TransactionIn):#Recibe un usuario y valor a retirar user_in_db = get_user(transaction_in.username)#Verifica si el usuario existe if user_in_db == None: raise HTTPException(status_code=404, detail="El usuario no existe") if user_in_db.balance < transaction_in.value: raise HTTPException(status_code=400, detail="Sin fondos suficientes") user_in_db.balance = user_in_db.balance - transaction_in.value #Resta el balance actual con el valor que retiro update_user(user_in_db) #Actualiza el usuario transaction_in_db = TransactionInDB( **transaction_in.dict(), actual_balance=user_in_db.balance) transaction_in_db = save_transaction(transaction_in_db) #Guarda la transaccion transaction_out = TransactionOut(**transaction_in_db.dict()) #Pasa la transaccion para retornarla al usuario return transaction_out
async def make_transaction(transaction_in: TransactionIn): user_in_db = get_user(transaction_in) if user_in_db == None: #Puede entenderse como un tipo de return raise HTTPException( status_code=404, detail="El usuario no existe") #para cuando existe el error #(no se ejecutan las acciones siguientes) if user_in_db.balance < transaction_in.value: ##Esta también(las que contienen rise) raise HTTPException(status_code=400, detail="Sin fondos suficientes") user_in_db.balance -= transaction_in.value update_user(user_in_db) transaction_in_db = TransactionInDB( **transaction_in.dict(), actual_balance=user_in_db.balance ) # "**" sirve para mapear en el objeto transaction_out = TransactionOut(**transaction_in_db.dict()) return transaction_out
async def make_transaction(transaction_in: TransactionIn): hotel_in_db = get_hotel(transaction_in.nombre) if hotel_in_db == None: raise HTTPException(status_code=404, detail="El hotel no existe") if hotel_in_db.totalHabitaciones < transaction_in.totalHabitaciones: raise HTTPException(status_code=400, detail=" ") hotel_in_db.totalHabitaciones = hotel_in_db.totalHabitaciones - transaction_in.reserva update_hotel(hotel_in_db) transaction_in_db = TransactionInDB(**transaction_in.dict(), totalHabs = hotel_in_db.totalHabitaciones) transaction_in_db = save_transaction(transaction_in_db) transaction_out = TransactionOut(**transaction_in_db.dict()) return transaction_out
async def make_transaction(transaction_in: TransactionIn): user_in_db = get_user(transaction_in.nombre) if user_in_db == None: raise HTTPException(status_code=404, detail="El hotel no existe") if user_in_db.totalHabitaciones < transaction_in.totalHabitaciones: raise HTTPException(status_code=400, detail="No se tienen los fondos suficientes") user_in_db.totalHabitaciones = user_in_db.totalHabitaciones - transaction_in.reserva update_user(user_in_db) transaction_in_db = TransactionInDB(**transaction_in.dict(), totalHabs=user_in_db.totalHabitaciones) transaction_in_db = save_transaction(transaction_in_db) transaction_out = TransactionOut(**transaction_in_db.dict()) return transaction_out
return {"Autenticado": True} @api.get("/user/balance/{username}") async def get_balance(username: str): user_in_db = get_user(username) if user_in_db == None: raise HTTPException(status_code=404, detail="El usuario no existe") user_out = UserOut(**user_in_db.dict()) return user_out @api.put("/user/transaction/") async def make_transaction(transaction_in: TransactionIn): user_in_db = get_user(transaction_in.username) if user_in_db == None: raise HTTPException(status_code=404, detail="El usuario no existe") user_in_db.balance = user_in_db.balance + transaction_in.income user_in_db.balance = user_in_db.balance - transaction_in.expense update_user(user_in_db) transaction_in_db = TransactionInDB(**transaction_in.dict(), actual_balance = user_in_db.balance) transaction_in_db = save_transaction(transaction_in_db) transaction_out = TransactionOut(**transaction_in_db.dict()) return transaction_out