import {faker} from "@faker-js/faker";
import dayjs from "dayjs";


export const fakeId = () => {
    return faker.random.numeric()
}

export const fakeAfm = () => {
    return faker.phone.number('##########')
}

export const fakeTitle = () => {
    return faker.random.words(range(1, 5))
}

export const fakeNote = () => {
    return faker.random.words(range(1, 25))
}

export const fakeFirstName = () => {
    return faker.name.firstName()
}

export const fakeLastName = () => {
    return faker.name.lastName()
}

export const fakeFatherName = () => {
    return faker.name.firstName()
}

export const fakeFullName = () => {
    return fakeFirstName() + " " + fakeLastName()
}

export const fakeEmail = () => {
    return faker.internet.email()
}

export const fakeMobilePhone = () => {
    return faker.phone.number('69########')
}

export const fakeOfficePhone = () => {
    return faker.phone.number('0###')
}

export const fakeOfficeNumber = () => {
    return faker.random.numeric()
}

export const fakeFloorNumber = () => {
    return faker.random.numeric()
}

const range = (from: number, to: number) => {
    return faker.datatype.number({min: from, max: to})
}

export const fakeOffice = () => {
    return 'Γραφειο '+ range(1,28)
}

export const fakeInternalPhone = () => {
    return faker.phone.number('0###')
}

/**
 * returns 1-3 lines of text
 */
export const fakeNotes = () => {
    return faker.lorem.lines(range(1, 3))
}

/**
 * returns number between 1-199 (for user ids)
 */
export const fakeDuaId = () => {
        return range(1,199);
}

/**
 * returns date close to today (15 days before to 30 days later)
 */
export const fakeDateAround = () => {
    return dayjs(faker.date.between(15, 30)).format('DD-MM-YYYY')
}

/**
 * adds 6 ,12 or 24 to given date
 */
export const fakeDateAfter = (ref:any) => {
    const future = faker.helpers.arrayElement([6, 12, 24])
    return dayjs(ref, 'DD-MM-YYYY').add(future, 'month').format('DD-MM-YYYY')
}

/**
 * returns date up to 30 days before today
 */
export const fakeDatePast = () => {
    return dayjs(faker.date.recent(30)).format('DD-MM-YYYY')
}

/**
 * Return array of *count* size and *factory_type* Factory Function
 */
export const Industry = (count:number, factory_type:Function) => {

    return  new Array(count).fill(null).map(() => factory_type())

}