koprogo_api/application/dto/
meeting_dto.rs1use crate::domain::entities::{Meeting, MeetingStatus, MeetingType};
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5
6#[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#[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#[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#[derive(Debug, Deserialize)]
65pub struct AddAgendaItemRequest {
66 pub item: String,
67}
68
69#[derive(Debug, Deserialize)]
71pub struct CompleteMeetingRequest {
72 pub attendees_count: i32,
73}