Update app/services/class_service.py
Browse files
app/services/class_service.py
CHANGED
|
@@ -4,8 +4,9 @@ from typing import List, Optional, Iterable, Tuple
|
|
| 4 |
|
| 5 |
from sqlalchemy.orm import Session
|
| 6 |
|
| 7 |
-
from models.class_ import Class, ClassEnrollment
|
| 8 |
from models.membership import Membership
|
|
|
|
| 9 |
from schemas.class_ import (
|
| 10 |
ClassCreate,
|
| 11 |
ClassUpdate,
|
|
@@ -145,10 +146,27 @@ def create_class(db: Session, class_in: ClassCreate) -> Class:
|
|
| 145 |
max_students=class_in.max_students,
|
| 146 |
is_active=getattr(class_in, "is_active", True),
|
| 147 |
coach_email=getattr(class_in, "coach_email", None),
|
|
|
|
| 148 |
)
|
| 149 |
db.add(db_class)
|
| 150 |
db.commit()
|
| 151 |
db.refresh(db_class)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 152 |
return db_class
|
| 153 |
|
| 154 |
|
|
@@ -191,6 +209,26 @@ def update_class(db: Session, class_id: int, class_in: ClassUpdate) -> Optional[
|
|
| 191 |
db_class.is_active = class_in.is_active
|
| 192 |
if hasattr(class_in, "coach_email") and class_in.coach_email is not None:
|
| 193 |
db_class.coach_email = class_in.coach_email
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
|
| 195 |
db.commit()
|
| 196 |
db.refresh(db_class)
|
|
|
|
| 4 |
|
| 5 |
from sqlalchemy.orm import Session
|
| 6 |
|
| 7 |
+
from models.class_ import Class, ClassEnrollment, ClassMembershipPlan
|
| 8 |
from models.membership import Membership
|
| 9 |
+
from models.membership_plan import MembershipPlan
|
| 10 |
from schemas.class_ import (
|
| 11 |
ClassCreate,
|
| 12 |
ClassUpdate,
|
|
|
|
| 146 |
max_students=class_in.max_students,
|
| 147 |
is_active=getattr(class_in, "is_active", True),
|
| 148 |
coach_email=getattr(class_in, "coach_email", None),
|
| 149 |
+
location=getattr(class_in, "location", None),
|
| 150 |
)
|
| 151 |
db.add(db_class)
|
| 152 |
db.commit()
|
| 153 |
db.refresh(db_class)
|
| 154 |
+
|
| 155 |
+
# Handle membership plan associations
|
| 156 |
+
membership_plan_ids = getattr(class_in, "membership_plan_ids", [])
|
| 157 |
+
if membership_plan_ids:
|
| 158 |
+
for plan_id in membership_plan_ids:
|
| 159 |
+
# Verify plan exists
|
| 160 |
+
plan = db.query(MembershipPlan).filter(MembershipPlan.id == plan_id).first()
|
| 161 |
+
if plan:
|
| 162 |
+
class_plan = ClassMembershipPlan(
|
| 163 |
+
class_id=db_class.id,
|
| 164 |
+
membership_plan_id=plan_id,
|
| 165 |
+
)
|
| 166 |
+
db.add(class_plan)
|
| 167 |
+
db.commit()
|
| 168 |
+
|
| 169 |
+
db.refresh(db_class)
|
| 170 |
return db_class
|
| 171 |
|
| 172 |
|
|
|
|
| 209 |
db_class.is_active = class_in.is_active
|
| 210 |
if hasattr(class_in, "coach_email") and class_in.coach_email is not None:
|
| 211 |
db_class.coach_email = class_in.coach_email
|
| 212 |
+
if hasattr(class_in, "location"):
|
| 213 |
+
db_class.location = class_in.location
|
| 214 |
+
|
| 215 |
+
# Handle membership plan associations
|
| 216 |
+
if hasattr(class_in, "membership_plan_ids") and class_in.membership_plan_ids is not None:
|
| 217 |
+
# Remove existing associations
|
| 218 |
+
db.query(ClassMembershipPlan).filter(
|
| 219 |
+
ClassMembershipPlan.class_id == class_id
|
| 220 |
+
).delete()
|
| 221 |
+
|
| 222 |
+
# Add new associations
|
| 223 |
+
for plan_id in class_in.membership_plan_ids:
|
| 224 |
+
# Verify plan exists
|
| 225 |
+
plan = db.query(MembershipPlan).filter(MembershipPlan.id == plan_id).first()
|
| 226 |
+
if plan:
|
| 227 |
+
class_plan = ClassMembershipPlan(
|
| 228 |
+
class_id=class_id,
|
| 229 |
+
membership_plan_id=plan_id,
|
| 230 |
+
)
|
| 231 |
+
db.add(class_plan)
|
| 232 |
|
| 233 |
db.commit()
|
| 234 |
db.refresh(db_class)
|