koprogo_api/application/dto/
board_member_dto.rs1use serde::{Deserialize, Serialize};
2use validator::Validate;
3
4#[derive(Debug, Serialize, Deserialize, Validate, Clone)]
7pub struct CreateBoardMemberDto {
8 pub owner_id: String, pub building_id: String, #[validate(length(min = 1, message = "Position cannot be empty"))]
13 pub position: String, pub mandate_start: String, pub mandate_end: String, pub elected_by_meeting_id: String, }
21
22#[derive(Debug, Serialize, Deserialize, Validate, Clone)]
24pub struct RenewMandateDto {
25 pub new_elected_by_meeting_id: String, #[serde(default = "default_mandate_duration_days")]
27 pub mandate_duration_days: i64, }
29
30fn default_mandate_duration_days() -> i64 {
31 1095 }
33
34#[derive(Debug, Serialize, Deserialize, Clone)]
36pub struct BoardMemberResponseDto {
37 pub id: String,
38 pub owner_id: String, pub building_id: String,
40 pub position: String,
41 pub mandate_start: String,
42 pub mandate_end: String,
43 pub elected_by_meeting_id: String,
44 pub is_active: bool, pub days_remaining: i64, pub expires_soon: bool, pub created_at: String,
48 pub updated_at: String,
49}
50
51#[derive(Debug, Serialize, Deserialize, Clone)]
53pub struct BoardStatsDto {
54 pub building_id: String,
55 pub total_members: i64,
56 pub active_members: i64,
57 pub expiring_soon: i64, pub has_president: bool,
59 pub has_treasurer: bool,
60}