koprogo_api/application/dto/
board_decision_dto.rs1use serde::{Deserialize, Serialize};
2use validator::Validate;
3
4#[derive(Debug, Serialize, Deserialize, Validate, Clone)]
6pub struct CreateBoardDecisionDto {
7 pub building_id: String, pub meeting_id: String, #[validate(length(min = 1, message = "Subject cannot be empty"))]
12 pub subject: String,
13
14 #[validate(length(min = 1, message = "Decision text cannot be empty"))]
15 pub decision_text: String,
16
17 pub deadline: Option<String>, }
19
20#[derive(Debug, Serialize, Deserialize, Validate, Clone)]
22pub struct UpdateBoardDecisionDto {
23 #[validate(length(min = 1, message = "Status cannot be empty"))]
24 pub status: String, pub notes: Option<String>, }
28
29#[derive(Debug, Serialize, Deserialize, Validate, Clone)]
31pub struct AddDecisionNotesDto {
32 #[validate(length(min = 1, message = "Notes cannot be empty"))]
33 pub notes: String,
34}
35
36#[derive(Debug, Serialize, Deserialize, Clone)]
38pub struct BoardDecisionResponseDto {
39 pub id: String,
40 pub building_id: String,
41 pub meeting_id: String,
42 pub subject: String,
43 pub decision_text: String,
44 pub deadline: Option<String>,
45 pub status: String,
46 pub completed_at: Option<String>,
47 pub notes: Option<String>,
48 pub is_overdue: bool, pub days_until_deadline: Option<i64>, pub created_at: String,
51 pub updated_at: String,
52}
53
54#[derive(Debug, Serialize, Deserialize, Clone)]
56pub struct DecisionStatsDto {
57 pub building_id: String,
58 pub total_decisions: i64,
59 pub pending: i64,
60 pub in_progress: i64,
61 pub completed: i64,
62 pub overdue: i64,
63 pub cancelled: i64,
64}
65
66#[derive(Debug, Serialize, Deserialize, Clone)]
68pub struct DeadlineAlertDto {
69 pub decision_id: String,
70 pub subject: String,
71 pub deadline: String,
72 pub days_remaining: i64,
73 pub urgency: String, }