def update_reservation(id: int): reservation = Reservation.query.filter_by(id=id).first() if reservation is None: return not_found('reserva não encontrada') data = request.get_json() or {} error = Reservation.check_data(data=data) if 'user_id' in data and data['user_id'] is not None and \ User.query.get(data['user_id']) is None: error = 'usuário não existe' if 'thirdparty_id' in data and data['thirdparty_id'] is not None and \ Thirdparty.query.get(data['thirdparty_id']) is None: error = 'terceiro não existe' if Reservation.query.filter( Reservation.date_start >= data['date_start']).filter( Reservation.date_start <= data['date_end']).all( ) or Reservation.query.filter( Reservation.date_end >= data['date_start']).filter( Reservation.date_end <= data['date_end']).all(): error = 'já existe um evento nesse período' if error: return bad_request(error) reservation.from_dict(data) try: db.session.commit() except Exception: return internal_server() return jsonify(reservation.to_dict())
def create_reservation(): data = request.get_json() or {} error = Reservation.check_data(data=data, new=True) if 'user_id' in data and data['user_id'] is not None and \ User.query.get(data['user_id']) is None: error = 'usuário não existe' if 'thirdparty_id' in data and data['thirdparty_id'] is not None and \ Thirdparty.query.get(data['thirdparty_id']) is None: error = 'terceiro não existe' if Reservation.query.filter( Reservation.date_start >= data['date_start']).filter( Reservation.date_start <= data['date_end']).all( ) or Reservation.query.filter( Reservation.date_end >= data['date_start']).filter( Reservation.date_end <= data['date_end']).all(): error = 'já existe um evento nesse período' if error: return bad_request(error) reservation = Reservation() reservation.from_dict(data) try: db.session.add(reservation) db.session.commit() except Exception: return internal_server() return jsonify(reservation.to_dict()), 201