using FlowAPI.Domain.Enums; namespace FlowAPI.Application.DTOs.Graph { public class FullGraphResponseDto { public Guid Id { get; set; } public Guid UserId { get; set; } public string Title { get; set; } = string.Empty; public string? Description { get; set; } public DateTime CreatedAt { get; set; } public bool IsShared { get; set; } public string Permission { get; set; } = "Owner"; public List Nodes { get; set; } = new(); public List Edges { get; set; } = new(); } public class NodeDto { public Guid Id { get; set; } public string Label { get; set; } = string.Empty; public double PosX { get; set; } public double PosY { get; set; } public string Type { get; set; } = "sketch"; public int State { get; set; } public string? Decision { get; set; } // Extended visual/content fields public string? Description { get; set; } public string? Color { get; set; } public bool IsPinned { get; set; } public double? Width { get; set; } public double? Height { get; set; } public string? Data { get; set; } public bool? HasLargeData { get; set; } } public class EdgeDto { public Guid Id { get; set; } public Guid FromNodeId { get; set; } public Guid ToNodeId { get; set; } public string Condition { get; set; } = "True"; } public class CreateGraphDto { public string Title { get; set; } = string.Empty; public string? Description { get; set; } public string? TemplateKey { get; set; } } public class TemplateInfoDto { public string Key { get; set; } = string.Empty; public string Title { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public string Icon { get; set; } = string.Empty; public string Category { get; set; } = string.Empty; } public class UpdateGraphDto { public string? Title { get; set; } public string? Description { get; set; } } public class GraphResponseDto { public Guid Id { get; set; } public Guid UserId { get; set; } public string Title { get; set; } = string.Empty; public string? Description { get; set; } public DateTime CreatedAt { get; set; } public bool IsShared { get; set; } public string Permission { get; set; } = "Owner"; } public class ShareGraphRequestDto { public string Email { get; set; } = string.Empty; public string Permission { get; set; } = "Read"; } public class SharedUserResponseDto { public Guid Id { get; set; } public Guid SharedWithUserId { get; set; } public string Email { get; set; } = string.Empty; public string DisplayName { get; set; } = string.Empty; public string Permission { get; set; } = "Read"; } }