sales.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from logging import getLogger
  2. from venv import logger
  3. from fastapi.responses import JSONResponse
  4. from config.messages import ErrorResponse, UserResponse
  5. from datetime import datetime, timedelta, time
  6. from services.data_service import DataServiceFactory
  7. from fastapi import APIRouter, Depends
  8. from models.sales import Sale
  9. from utils.responses import error_response, success_response
  10. sale_data_service = DataServiceFactory.get_sales_service()
  11. user_data_service = DataServiceFactory.get_user_service()
  12. logger = getLogger(__name__)
  13. sales_router = APIRouter()
  14. @sales_router.get("/user/{user_id}", response_model=list[Sale])
  15. def get_user_sales(user_id: int):
  16. user = user_data_service.get_by_id(user_id)
  17. if not user:
  18. return error_response(UserResponse.USER_NOT_FOUND.format(user_id=user_id), status_code=404)
  19. sales = sale_data_service.get_by_user(user_id)
  20. # solo las ventas del dia, estilo 12pm a 3am del dia siguiente
  21. # suponiendo que today es la fecha de referencia
  22. start = datetime.combine(datetime.today(), time(12, 0)) # hoy a las 12:00 pm
  23. end = start + timedelta(hours=15) # mañana a las 3:00 am
  24. sales = [sale for sale in sales if start <= sale.date < end]
  25. if not sales:
  26. return error_response(ErrorResponse.SALE_NOT_FOUND, status_code=404)
  27. logger.info(f"Sales found for user {user_id}: {len(sales)} sales")
  28. return success_response({"sales": [{**sale.model_dump(), "date": sale.date.isoformat()} for sale in sales], "message": "Ventas obtenidas correctamente."})