interface ContactUsInterface {
    id?: number;
    userId: number | null;
    accountId: number | null;
    name: string;
    email: string;
    subject: string;
    lastUpdatedBy: number | null;
    status: number;
    message?: string | Text;
    createdAt?: Date,
    updatedAt?: Date
}

interface ContactUsRequest {
   name: string;
   email: string;
   subject: string;
   message: Text;
   attachmentIds?: number[] | null;
}

interface ContactUsPaginatedData {
    count: number;
    rows: ContactUsInterface[] | []
}

interface ContactUsPaginatedList {
    page: number;
    perPage: number;
    totalRecords: number;
    totalPages?: number;
    data: ContactUsInterface[] | [];
}

interface ContactUsListRequestObject {
    page: number;
    perPage: number;
    searchText: string | null;
    sortBy: string;
    sortDirection: string;
    status: number | null;
}

interface ContactUsIdentifierObject {
    id: number;
}

interface ContactUsAttachmentInterface {
    id: number;
    contactusId: number;
    attachmentId: number;
}

interface ContactUsCreateServiceInput {
    name: string;
    email: string;
    subject: string;
    message: Text;
    attachmentIds?: number[] | null;
}

interface ContactUsGetByIdServiceInput {
    id: number;
}

interface ContactUsListServiceInput {
    listRequest: ContactUsListRequestObject;
}

interface ContactUsCreateDaoInput {
    name: string;
    email: string;
    subject: string;
    message: Text;
    attachments: number[] | null;
}

interface ContactUsGetDaoInput {
    id: number;
}

interface ContactUsGetByIdDaoInput {
    id: number;
    paranoid?: boolean;
}

interface ContactUsListDaoInput {
    listRequest: ContactUsListRequestObject;
}

interface ContactUsDeleteDaoInput {
    id: number;
}

interface ContactUsUpdateStatusDaoInput {
    id: number;
    status: number;
}

interface ContactUsGetFullObjectDaoInput {
    id: number;
}
