from flask import Blueprint, jsonify, request, g from services.EventService import EventService from middelwares.userMiddelwares import authenticate_user from middelwares.eventMiddelwares import validate_event_post_request eventRoutes = Blueprint('eventRoutes', __name__) # Create new event @eventRoutes.route('/', methods=['POST']) @eventRoutes.route('', methods=['POST']) @validate_event_post_request @authenticate_user def create_event(): try: data = request.json data['user_id'] = g.user_id print(data) new_event = EventService.create_event(data) if new_event: return jsonify(new_event.to_dict()), 201 else: return jsonify({'error': 'Failed to create event'}), 400 except Exception as e: return jsonify({'error': str(e)}), 500 # Get All Events @eventRoutes.route('/', methods=['GET']) @eventRoutes.route('', methods=['GET']) @authenticate_user def get_events(): try: user_events = EventService.get_all_user_events(g.user_id) return {"events": user_events, "count": len(user_events)}, 200 except Exception as e: return {"error": str(e)}, 500 # Get Event by ID @eventRoutes.route('/', methods=['GET']) @authenticate_user def get_event(event_id): try: return {"event": EventService.get_event_by_id(event_id, g.user_id)}, 200 except Exception as e: return {"error": str(e)}, 500 # Update Event @eventRoutes.route('/', methods=['PUT']) @validate_event_post_request @authenticate_user def update_event(event_id): try: data = request.json updated_event = EventService.update_event(event_id, data) if updated_event: return jsonify(updated_event.to_dict()), 200 else: return jsonify({'error': 'Failed to update event'}), 400 except Exception as e: return jsonify({'error': str(e)}), 500 # DELETE Event @eventRoutes.route('/', methods=['DELETE']) @authenticate_user def delete_event(event_id): try: deleted_event = EventService.delete_event(event_id) if deleted_event: return jsonify(deleted_event.to_dict()), 200 else: return jsonify({'error': 'Failed to delete event'}), 400 except Exception as e: return jsonify({'error': str(e)}), 500