interface TestimonialInterface {
    id?: number;
    userId?: number | null;
    lastUpdatedBy?: number | null;
    accountId: number | null;
    imageId: number | null;
    name: string;
    designation: string | null;
    status: number;
    sortOrder?: number;
    testimonialContent?: TestimonialContentInterface;
    testimonialContents?: TestimonialContentInterface[];
    createdAt?: Date;
    updatedAt?: Date;
}

interface TestimonialContentInterface {
    id?: number;
    testimonialId?: number;
    languageId: number;
    content: Text | null;
}

interface testimonialRequest {
    name: string;
    designation?: string | null;
    content: Text | null;
    imageId: number;
    status: number | null;
}

interface testimonialObject {
    name: string;
    designation?: string | null;
    status: number | null;
    imageId: number | null;
    lastUpdatedBy?: number | null;
}

interface testimonialContentObject {
    id?: number;
    testimonialId?: number;
    content: Text | null;
    languageId?: number;
}

interface testimonialDataObject extends testimonialObject {
    id?: number;
    userId?: number | null;
    accountId?: number | null;
    testimonialContents?: testimonialContentObject[];
    testimonialContent?: testimonialContentObject;
}

interface testimonialObjectInteface {
    id: number;
    status: number;
    name: string;
    designation: string | null;
    content: Text | null;
    image: fileObject | null;
    createdAt: Date;
    updatedAt: Date;
}

interface testimonialObjectSummaryInteface {
    id: number;
    status: number;
    name: string;
    designation: string | null;
    content: Text | null;
    image: fileObject | null;
    createdAt: Date;
    updatedAt: Date;
}

interface TestimonialPaginatedData {
    count: number;
    rows: testimonialObjectSummaryInteface[] | [];
}

interface TestimonialPaginatedList {
    page: number;
    perPage: number;
    totalRecords: number;
    totalPages?: number;
    data: testimonialObjectSummaryInteface[] | [];
}

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

interface TestimonialListAllRequestObject {
    searchText: string | null;
    sortBy: string;
    sortDirection: string;
    status: number | null;
}

interface TestimonialIdentifierObject {
    id: number;
}

interface TestimonialCreateServiceInput {
    name: string;
    designation?: string | null;
    content: Text | null;
    imageId: number;
    status: number | null;
}

interface TestimonialUpdateServiceInput {
    id: number;
    name: string;
    designation?: string | null;
    content: Text | null;
    imageId: number;
    status: number | null;
}

interface TestimonialDeleteServiceInput {
    id: number;
}

interface TestimonialGetByIdServiceInput {
    id: number;
}

interface TestimonialGetTestimonialsServiceInput {
    listRequest: TestimonialListRequestObject;
    status?: number | null;
}

interface TestimonialGetAllTestimonialsServiceInput {
    listRequest: TestimonialListAllRequestObject;
}

interface TestimonialGetDaoInput {
    id?: number | null;
    paranoid?: boolean;
}

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

interface TestimonialCreateDaoInput {
    testimonialObj: testimonialObject;
    testimonialContentObj: testimonialContentObject;
    languages: LanguageInfo;
}

interface TestimonialUpdateDaoInput {
    id: number;
    testimonialObj: testimonialObject;
    testimonialContentObj: testimonialContentObject;
    languages: LanguageInfo;
}

interface TestimonialDeleteDaoInput {
    id: number;
}

interface TestimonialGetTestimonialListDaoInput {
    listRequest: TestimonialListRequestObject;
}

interface TestimonialGetAllTestimonialsDaoInput {
    listRequest: TestimonialListAllRequestObject;
}

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

interface TestimonialStatusObject {
    status: number;
}
