koprogo_api/application/dto/
meeting_dto.rs

1use crate::domain::entities::{Meeting, MeetingStatus, MeetingType};
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5
6/// Response DTO for Meeting
7#[derive(Debug, Serialize, Deserialize)]
8pub struct MeetingResponse {
9    pub id: Uuid,
10    pub building_id: Uuid,
11    pub meeting_type: MeetingType,
12    pub title: String,
13    pub description: Option<String>,
14    pub scheduled_date: DateTime<Utc>,
15    pub location: String,
16    pub status: MeetingStatus,
17    pub agenda: Vec<String>,
18    pub attendees_count: Option<i32>,
19    pub created_at: DateTime<Utc>,
20    pub updated_at: DateTime<Utc>,
21}
22
23impl From<Meeting> for MeetingResponse {
24    fn from(meeting: Meeting) -> Self {
25        Self {
26            id: meeting.id,
27            building_id: meeting.building_id,
28            meeting_type: meeting.meeting_type,
29            title: meeting.title,
30            description: meeting.description,
31            scheduled_date: meeting.scheduled_date,
32            location: meeting.location,
33            status: meeting.status,
34            agenda: meeting.agenda,
35            attendees_count: meeting.attendees_count,
36            created_at: meeting.created_at,
37            updated_at: meeting.updated_at,
38        }
39    }
40}
41
42/// Request DTO for creating a meeting
43#[derive(Debug, Deserialize)]
44pub struct CreateMeetingRequest {
45    pub organization_id: Uuid,
46    pub building_id: Uuid,
47    pub meeting_type: MeetingType,
48    pub title: String,
49    pub description: Option<String>,
50    pub scheduled_date: DateTime<Utc>,
51    pub location: String,
52}
53
54/// Request DTO for updating a meeting
55#[derive(Debug, Deserialize)]
56pub struct UpdateMeetingRequest {
57    pub title: Option<String>,
58    pub description: Option<String>,
59    pub scheduled_date: Option<DateTime<Utc>>,
60    pub location: Option<String>,
61}
62
63/// Request DTO for adding agenda item
64#[derive(Debug, Deserialize)]
65pub struct AddAgendaItemRequest {
66    pub item: String,
67}
68
69/// Request DTO for completing a meeting
70#[derive(Debug, Deserialize)]
71pub struct CompleteMeetingRequest {
72    pub attendees_count: i32,
73}