use serde::{Deserialize, Serialize};
use uuid::Uuid;
use chrono::{DateTime, Utc};
use crate::domain::entity::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct ActivityId(pub Uuid);
impl ActivityId {
pub fn new(id: Uuid) -> Self {
Self(id)
}
pub fn into_inner(self) -> Uuid {
self.0
}
}
impl From<Uuid> for ActivityId {
fn from(id: Uuid) -> Self {
Self(id)
}
}
impl From<ActivityId> for Uuid {
fn from(id: ActivityId) -> Self {
id.0
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityDto {
pub id: ActivityId,
pub subject: String,
pub activity_type: ActivityType,
pub direction: Option<ActivityDirection>,
pub lead_id: Option<Uuid>,
pub opportunity_id: Option<Uuid>,
pub party_id: Option<Uuid>,
pub status: ActivityStatus,
pub scheduled_at: Option<DateTime<Utc>>,
pub occurred_at: Option<DateTime<Utc>>,
pub assignee_id: Option<Uuid>,
pub outcome: Option<String>,
pub notes: Option<String>,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivitySummary {
pub id: ActivityId,
pub status: ActivityStatus,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityRef {
pub id: ActivityId,
}