Hp137 commited on
Commit
5f97141
·
1 Parent(s): 90ebf1e

feat:Added sub mentor

Browse files
src/auth/service.py CHANGED
@@ -121,7 +121,7 @@ async def verify_email(session: Session, token: str):
121
  async def login_user(session: Session, email: str, password: str):
122
 
123
  if not email.lower():
124
- raise HTTPException(status_code=400, detail="Enter you're Yuvabe email ID")
125
 
126
  users = await session.exec(select(Users).where(Users.email_id == email))
127
  user = users.first()
 
121
  async def login_user(session: Session, email: str, password: str):
122
 
123
  if not email.lower():
124
+ raise HTTPException(status_code=400, detail="Enter you're valid email ID")
125
 
126
  users = await session.exec(select(Users).where(Users.email_id == email))
127
  user = users.first()
src/data_add/seed_from_excel.py CHANGED
@@ -229,6 +229,7 @@ async def run_all_seeds():
229
  "Digital Marketing",
230
  "Bevolve",
231
  "Bridge",
 
232
  "HR",
233
  ]:
234
  await get_or_create(session, Teams, t)
 
229
  "Digital Marketing",
230
  "Bevolve",
231
  "Bridge",
232
+ "Quilt",
233
  "HR",
234
  ]:
235
  await get_or_create(session, Teams, t)
src/data_add/users.xlsx CHANGED
Binary files a/src/data_add/users.xlsx and b/src/data_add/users.xlsx differ
 
src/profile/router.py CHANGED
@@ -584,12 +584,14 @@ async def cancel_leave(
584
 
585
  # Notify Team Lead
586
  lead_tokens = await get_user_device_tokens(session, leave.lead_id)
587
- await send_fcm(
588
- lead_tokens,
589
- "Leave Cancelled",
590
- f"User {user.user_name} cancelled their approved leave.",
591
- {"type": "leave_cancel", "leave_id": str(leave.id)},
592
- )
 
 
593
 
594
  return {
595
  "code": 200,
 
584
 
585
  # Notify Team Lead
586
  lead_tokens = await get_user_device_tokens(session, leave.lead_id)
587
+ if leave.lead_id:
588
+ lead_tokens = await get_user_device_tokens(session, leave.lead_id)
589
+ await send_fcm(
590
+ lead_tokens,
591
+ "Leave Cancelled",
592
+ f"User {user.user_name} cancelled their approved leave.",
593
+ {"type": "leave_cancel", "leave_id": str(leave.id)},
594
+ )
595
 
596
  return {
597
  "code": 200,
src/profile/service.py CHANGED
@@ -47,15 +47,23 @@ async def _get_team_roles(session: AsyncSession, user_id: uuid.UUID):
47
  mentor_role = (
48
  await session.exec(select(Roles).where(Roles.name == "Mentor"))
49
  ).first()
50
- if not mentor_role:
51
- raise ValueError("Mentor role not found")
 
 
 
 
 
 
 
 
 
 
52
 
53
  # 3) Get Team Lead role
54
  lead_role = (
55
  await session.exec(select(Roles).where(Roles.name == "Team Lead"))
56
  ).first()
57
- if not lead_role:
58
- raise ValueError("Team Lead role not found")
59
 
60
  # 4) Find mentor in same team
61
  mentor_users = (
@@ -63,25 +71,24 @@ async def _get_team_roles(session: AsyncSession, user_id: uuid.UUID):
63
  select(Users)
64
  .join(UserTeamsRole, UserTeamsRole.user_id == Users.id)
65
  .where(UserTeamsRole.team_id == user_team.team_id)
66
- .where(UserTeamsRole.role_id == mentor_role.id)
67
  )
68
  ).all()
69
 
70
  if not mentor_users:
71
- raise ValueError("Mentor not found in user's team")
72
 
73
  # 5) Find team lead in same team
74
- lead_users = (
75
- await session.exec(
76
- select(Users)
77
- .join(UserTeamsRole, UserTeamsRole.user_id == Users.id)
78
- .where(UserTeamsRole.team_id == user_team.team_id)
79
- .where(UserTeamsRole.role_id == lead_role.id)
80
- )
81
- ).all()
82
-
83
- if not lead_users:
84
- raise ValueError("Team Lead not found in user's team")
85
 
86
  return mentor_users, lead_users
87
 
@@ -110,6 +117,9 @@ async def create_leave(session, user_id, body):
110
  # Get mentor + team lead
111
  mentor_users, lead_users = await _get_team_roles(session, user_id)
112
 
 
 
 
113
  leave = Leave(
114
  user_id=user_id,
115
  leave_type=body.leave_type,
@@ -117,8 +127,8 @@ async def create_leave(session, user_id, body):
117
  to_date=body.to_date,
118
  reason=body.reason,
119
  days=body.days,
120
- mentor_id=mentor_users[0].id,
121
- lead_id=lead_users[0].id,
122
  )
123
 
124
  session.add(leave)
 
47
  mentor_role = (
48
  await session.exec(select(Roles).where(Roles.name == "Mentor"))
49
  ).first()
50
+ sub_mentor_role = (
51
+ await session.exec(select(Roles).where(Roles.name == "Sub Mentor"))
52
+ ).first()
53
+
54
+ if not mentor_role and not sub_mentor_role:
55
+ raise ValueError("No Mentor / Sub Mentor roles defined in system")
56
+
57
+ mentor_role_ids = []
58
+ if mentor_role:
59
+ mentor_role_ids.append(mentor_role.id)
60
+ if sub_mentor_role:
61
+ mentor_role_ids.append(sub_mentor_role.id)
62
 
63
  # 3) Get Team Lead role
64
  lead_role = (
65
  await session.exec(select(Roles).where(Roles.name == "Team Lead"))
66
  ).first()
 
 
67
 
68
  # 4) Find mentor in same team
69
  mentor_users = (
 
71
  select(Users)
72
  .join(UserTeamsRole, UserTeamsRole.user_id == Users.id)
73
  .where(UserTeamsRole.team_id == user_team.team_id)
74
+ .where(UserTeamsRole.role_id.in_(mentor_role_ids))
75
  )
76
  ).all()
77
 
78
  if not mentor_users:
79
+ raise ValueError("No Mentor or Sub Mentor found in user's team")
80
 
81
  # 5) Find team lead in same team
82
+ lead_users = []
83
+ if lead_role:
84
+ lead_users = (
85
+ await session.exec(
86
+ select(Users)
87
+ .join(UserTeamsRole, UserTeamsRole.user_id == Users.id)
88
+ .where(UserTeamsRole.team_id == user_team.team_id)
89
+ .where(UserTeamsRole.role_id == lead_role.id)
90
+ )
91
+ ).all()
 
92
 
93
  return mentor_users, lead_users
94
 
 
117
  # Get mentor + team lead
118
  mentor_users, lead_users = await _get_team_roles(session, user_id)
119
 
120
+ main_mentor = mentor_users[0] # could be Mentor OR Sub Mentor
121
+ main_lead = lead_users[0] if lead_users else None
122
+
123
  leave = Leave(
124
  user_id=user_id,
125
  leave_type=body.leave_type,
 
127
  to_date=body.to_date,
128
  reason=body.reason,
129
  days=body.days,
130
+ mentor_id=main_mentor.id,
131
+ lead_id=main_lead.id if main_lead else None,
132
  )
133
 
134
  session.add(leave)