using MediatR;

namespace IamService.API.Application.Commands.Organizations;

/// <summary>
/// EN: Command to create a new organization.
/// VI: Command để tạo tổ chức mới.
/// </summary>
/// <param name="Name">Organization name / Tên tổ chức</param>
/// <param name="Slug">URL-friendly slug / Slug thân thiện URL</param>
/// <param name="Description">Optional description / Mô tả tùy chọn</param>
/// <param name="ParentOrganizationId">Optional parent organization ID / ID tổ chức cha tùy chọn</param>
public record CreateOrganizationCommand(
    string Name,
    string Slug,
    string? Description = null,
    Guid? ParentOrganizationId = null) : IRequest<CreateOrganizationCommandResult>;

/// <summary>
/// EN: Result of CreateOrganizationCommand.
/// VI: Kết quả của CreateOrganizationCommand.
/// </summary>
public record CreateOrganizationCommandResult(
    Guid Id,
    string Name,
    string Slug,
    string? Description,
    Guid? ParentOrganizationId,
    string Status,
    DateTime CreatedAt);
