Add all project files
This commit is contained in:
61
app/crud.py
Normal file
61
app/crud.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from sqlalchemy.orm import Session
|
||||
from . import models, schemas
|
||||
|
||||
def get_customer(db: Session, customer_id: int):
|
||||
return db.query(models.Customer).filter(models.Customer.id == customer_id).first()
|
||||
|
||||
def get_customer_by_email(db: Session, email: str):
|
||||
return db.query(models.Customer).filter(models.Customer.customer_email == email).first()
|
||||
|
||||
def get_customers(db: Session, skip: int = 0, limit: int = 100):
|
||||
return db.query(models.Customer).offset(skip).limit(limit).all()
|
||||
|
||||
def create_transaction(db: Session, transaction: schemas.TransactionBase, customer_id: int, status: int, auth_net_transaction_id: str = None):
|
||||
db_transaction = models.Transaction(
|
||||
preauthorize_amount=transaction.preauthorize_amount,
|
||||
charge_amount=transaction.charge_amount,
|
||||
transaction_type=transaction.transaction_type,
|
||||
customer_id=customer_id,
|
||||
status=status,
|
||||
auth_net_transaction_id=auth_net_transaction_id,
|
||||
service_id=transaction.service_id,
|
||||
delivery_id=transaction.delivery_id,
|
||||
card_id=transaction.card_id,
|
||||
payment_gateway=transaction.payment_gateway,
|
||||
rejection_reason=transaction.rejection_reason
|
||||
)
|
||||
db.add(db_transaction)
|
||||
db.commit()
|
||||
db.refresh(db_transaction)
|
||||
return db_transaction
|
||||
|
||||
def get_transaction_by_delivery_id(db: Session, delivery_id: int):
|
||||
return db.query(models.Transaction).filter(
|
||||
models.Transaction.delivery_id == delivery_id,
|
||||
models.Transaction.transaction_type == 1, # auth transactions
|
||||
models.Transaction.status == 0 # approved
|
||||
).first()
|
||||
|
||||
# --- THIS IS THE FIX ---
|
||||
# This function was missing, causing the AttributeError.
|
||||
# It finds a transaction using the unique Authorize.Net transaction ID.
|
||||
def get_transaction_by_auth_id(db: Session, auth_net_transaction_id: str):
|
||||
return db.query(models.Transaction).filter(
|
||||
models.Transaction.auth_net_transaction_id == auth_net_transaction_id
|
||||
).first()
|
||||
# --- END OF FIX ---
|
||||
|
||||
def update_transaction_for_capture(db: Session, auth_net_transaction_id: str, charge_amount: float, status: int, rejection_reason: str = None):
|
||||
transaction = db.query(models.Transaction).filter(models.Transaction.auth_net_transaction_id == auth_net_transaction_id).first()
|
||||
if not transaction:
|
||||
return None
|
||||
|
||||
transaction.charge_amount = charge_amount
|
||||
transaction.transaction_type = 3 # capture
|
||||
transaction.status = status
|
||||
if rejection_reason:
|
||||
transaction.rejection_reason = rejection_reason
|
||||
|
||||
db.commit()
|
||||
db.refresh(transaction)
|
||||
return transaction
|
||||
Reference in New Issue
Block a user