This commit is contained in:
MythEclipse
2025-09-25 17:29:17 +07:00
parent df11aa5eb8
commit 82b85abe8f
2 changed files with 481 additions and 509 deletions
+34 -67
View File
@@ -279,68 +279,6 @@ pub struct TeamsSearchQueryDto {
pub per_page: Option<i64>, pub per_page: Option<i64>,
} }
impl TeamsDetailQueryDto {
pub fn from(self) -> Self {
self
}
}
impl TeamsListQueryDto {
pub fn from(self) -> TeamsListItemDto {
TeamsListItemDto {
id: self.id.id.to_raw(),
name: self.name,
description: self.description,
leader: TeamMemberDto {
id: String::new(),
user_id: self.leader_id.id.to_raw(),
fullname: String::new(),
email: None,
avatar: None,
role: "leader".to_string(),
skills: None,
joined_at: self.created_at.clone(),
},
is_open: self.is_open,
current_member_count: 1,
max_members: self.max_members,
skills_required: self.skills_required,
location: self.location,
avatar: self.avatar,
created_at: self.created_at,
}
}
pub fn to_admin_list_dto(self) -> AdminTeamsListItemDto {
let members = vec![];
AdminTeamsListItemDto {
id: self.id.id.to_raw(),
name: self.name,
description: self.description,
leader: TeamMemberDto {
id: String::new(),
user_id: self.leader_id.id.to_raw(),
fullname: String::new(),
email: None,
avatar: None,
role: "leader".to_string(),
skills: None,
joined_at: self.created_at.clone(),
},
is_open: self.is_open,
current_member_count: members.len() as i32 + 1,
max_members: self.max_members,
skills_required: self.skills_required,
location: self.location,
avatar: self.avatar,
website_url: None,
github_url: None,
is_active: true,
is_deleted: false,
created_at: self.created_at,
}
}
}
#[derive(Clone, Debug, Serialize, Deserialize, ToSchema)] #[derive(Clone, Debug, Serialize, Deserialize, ToSchema)]
pub struct AdminTeamsListItemDto { pub struct AdminTeamsListItemDto {
pub id: String, pub id: String,
@@ -381,9 +319,39 @@ pub struct AdminTeamsDetailItemDto {
pub updated_at: String, pub updated_at: String,
} }
impl TeamsDetailQueryDto {
pub fn into_detail_dto(self) -> Self {
self
}
}
impl TeamsListQueryDto { impl TeamsListQueryDto {
pub fn to_admin_list_dto(self) -> AdminTeamsListItemDto { pub fn into_list_item_dto(self) -> TeamsListItemDto {
let members = vec![]; TeamsListItemDto {
id: self.id.id.to_raw(),
name: self.name,
description: self.description,
leader: TeamMemberDto {
id: String::new(),
user_id: self.leader_id.id.to_raw(),
fullname: String::new(),
email: None,
avatar: None,
role: "leader".to_string(),
skills: None,
joined_at: self.created_at.clone(),
},
is_open: self.is_open,
current_member_count: 1,
max_members: self.max_members,
skills_required: self.skills_required,
location: self.location,
avatar: self.avatar,
created_at: self.created_at,
}
}
pub fn into_admin_list_dto(self) -> AdminTeamsListItemDto {
AdminTeamsListItemDto { AdminTeamsListItemDto {
id: self.id.id.to_raw(), id: self.id.id.to_raw(),
name: self.name, name: self.name,
@@ -399,7 +367,7 @@ impl TeamsListQueryDto {
joined_at: self.created_at.clone(), joined_at: self.created_at.clone(),
}, },
is_open: self.is_open, is_open: self.is_open,
current_member_count: members.len() as i32 + 1, current_member_count: 1, // Placeholder; adjust based on actual member count
max_members: self.max_members, max_members: self.max_members,
skills_required: self.skills_required, skills_required: self.skills_required,
location: self.location, location: self.location,
@@ -414,7 +382,7 @@ impl TeamsListQueryDto {
} }
impl TeamsDetailQueryDto { impl TeamsDetailQueryDto {
pub fn to_admin_detail_dto(self, members: Vec<TeamMemberDto>) -> AdminTeamsDetailItemDto { pub fn into_admin_detail_dto(self, members: Vec<TeamMemberDto>) -> AdminTeamsDetailItemDto {
AdminTeamsDetailItemDto { AdminTeamsDetailItemDto {
id: self.id.id.to_raw(), id: self.id.id.to_raw(),
name: self.name, name: self.name,
@@ -445,4 +413,3 @@ impl TeamsDetailQueryDto {
} }
} }
} }
}
@@ -759,6 +759,11 @@ impl TeamsServiceTrait for TeamsService {
}; };
success_list_response(response) success_list_response(response)
} }
Err(e) => common_response(StatusCode::BAD_REQUEST, &e.to_string()),
}
})
}
fn get_admin_team_list(state: &AppState, meta: MetaRequestDto) -> Pin<Box<dyn Future<Output = Response> + Send>> { fn get_admin_team_list(state: &AppState, meta: MetaRequestDto) -> Pin<Box<dyn Future<Output = Response> + Send>> {
let state = state.to_owned(); let state = state.to_owned();
Box::pin(async move { Box::pin(async move {