コード例 #1
0
async def make_transaction(transaction_in: TransactionIn,
                           db: Session = Depends(get_db)):

    validate_transaction(transaction_in)

    user_in_db = db.query(UserInDB).get(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="No se tienen los fondos suficientes")

    user_in_db.balance = user_in_db.balance - transaction_in.value
    db.commit()
    db.refresh(user_in_db)

    transaction_in_db = TransactionInDB(**transaction_in.dict(),
                                        actual_balance=user_in_db.balance)
    db.add(transaction_in_db)
    db.commit()
    db.refresh(transaction_in_db)

    return transaction_in_db
コード例 #2
0
ファイル: main.py プロジェクト: NicolasBeltran70/cajero_api
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
コード例 #3
0
async def make_transaction(transaction_in: TransactionIn, session: Session = Depends(get_db)):
    user_in_db = session.query(UserInDB).get(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="No se tienen los fondos suficientes")

    user_in_db.balance = user_in_db.balance - transaction_in.value

    # Vamos a actualizar en la db
    session.commit()

    # Actualiza la sesión que tenemos creada
    session.refresh(user_in_db)

    transaction_in_db = TransactionInDB(**transaction_in.dict(), actual_balance = user_in_db.balance)

    # Como queremos agregar un nuevo valor a la bd,
    # debemos insertarle el elemento a nuestra sesión
    session.add(transaction_in_db)
    session.commit()
    session.refresh(transaction_in_db)

    return  transaction_in_db
コード例 #4
0
ファイル: main.py プロジェクト: posve/cajero-api
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 = TransactionIn(**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
コード例 #5
0
ファイル: main.py プロジェクト: RosaRR/AppReto2
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
コード例 #6
0
ファイル: main.py プロジェクト: sergioignacioserna/Sp2G3M3E10
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
コード例 #7
0
ファイル: main.py プロジェクト: sebas-tech/cajero-api
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
コード例 #8
0
ファイル: main.py プロジェクト: SantiagoFonsecap/cajero-api
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
コード例 #9
0
ファイル: main.py プロジェクト: MDrakus/Hotel00
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
コード例 #10
0
ファイル: main.py プロジェクト: MDrakus/Hotel1
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