import _ from "lodash";

export const ActivitiesParentEnum = {
    MEETING: 'Meeting',
    CORPORATE_EVENT: 'Corporate Event',
    PARTY: 'Party',
    NETWORKING: 'Networking',
    FILM_SHOOT: 'Film Shoot',
    PERFORMANCE: 'Performance',
    PHOTO_SHOOT: 'Photo Shoot',
    FITNESS: 'Fitness',
    WORKSHOP: 'Workshop',
    FOOD_AND_DRINK: 'Food & Drink',
    POP_UP: 'Pop-Up',
    WEDDING: 'Wedding',
    RETREAT: 'Retreat',
};

export const ActivitiesSubEnum = {
    [ActivitiesParentEnum.MEETING]: ["Team Meeting", "Corporate Meeting", "Off-Site", "Audition", "Board Meeting", "Therapy Session", "Interview", "Meeting", "Company Meeting", "Brainstorm Session", "Casting", "Client Meeting", "Group Work Session", "Creative Meeting", "Sales Meeting"],
    [ActivitiesParentEnum.CORPORATE_EVENT]: ["Charity Evening", "Product Demo", "Corporate Party", "Fundraising Event", "Function", "Auction", "Press Conference", "Fashion Show", "Company Party", "Rooftop", "Exhibit", "Product Showcase", "Fashion Event", "Conference", "Product Release", "Launch Event", "Awards Ceremony", "Event"],
    [ActivitiesParentEnum.PARTY]: ["Birthday Party", "Cocktail Party", "Tea Party", "Marriage Proposal", "Baby Shower", "Dance Party", "Happy Hour", "Anniversary", "Kids Party", "After Party", "Banquet", "Bachelor Party", "Wedding Shower", "Outdoor Party Party", "Year-End Function", "Reunion", "Graduation Party", "Theme Party", "Staff Party", "Bachelorette Party", "Celebration", "Gathering", "Sweet 16", "Private Party", "Party", "Engagement Party", "Bridal Shower", "Bar/Bat Mitzvah", "Holiday Party", "Function", "Graduation Ceremony"],
    [ActivitiesParentEnum.NETWORKING]: ["Meetup", "Roundtable", "Gathering", "After Hours Meetup", "Community Group", "Social", "Industry Speaker Event", "Tradeshow", "Speed Networking", "Job Fair"],
    [ActivitiesParentEnum.FILM_SHOOT]: ["Kickstarter Video", "Dance Shoot", "Film Studio", "Basecamp", "Influencer Shoot", "Film Shoot", "Video Studio", "Production", "Recording Studio", "Video Shoot", "Music Video", "Web Series Shoot", "Filmed Interview", "Documentary Shoot", "Promotional Video", "TV Series Shoot"],
    [ActivitiesParentEnum.PERFORMANCE]: ["Recital", "Auditorium", "Screening", "Theatre", "Poetry Reading", "Performance", "Concert"],
    [ActivitiesParentEnum.PHOTO_SHOOT]: ["Family Photo Shoot", "Portrait Photo Shoot", "Product Shoot", "Test Shoot", "Birthday Photo Shoot", "Boudoir Photo Shoot", "Food Shoot", "Influencer Shoot", "Photo Shoot", "Fashion Shoot", "Promotional Photo Shoot", "Maternity Photo Shoot", "Wedding Photo Shoot", "Corporate Photo Shoot"],
    [ActivitiesParentEnum.FITNESS]: ["Fitness Class", "Swimming Class", "Martial Arts Class", "Yoga Studio", "Pilates Class", "Workout Class", "Team Sport Venue", "Fitness", "Dance Studio", "Crossfit Class", "Outdoor Fitness Class", "Yoga Class", "Competitive Event", "Personal Training Session"],
    [ActivitiesParentEnum.WORKSHOP]: ["Improv Session", "Collaboration", "Lecture", "Seminar", "Art Class", "Class", "Rehearsal", "Speaker Event", "Religious", "Workshop", "Orientation", "Coaching Session", "Hackathon", "Presentation", "Forum", "Convention", "Training", "Focus Group", "Creative Workshop"],
    [ActivitiesParentEnum.FOOD_AND_DRINK]: ["Rehearsal Dinner", "Brunch", "Kitchen Tea", "Pop-up Restaurant", "Luncheon", "Food Fair/Festival", "Cooking Class", "Food Tasting", "Private Dinner", "Beer And Wine Tasting"],
    [ActivitiesParentEnum.POP_UP]: ["Retail Shop", "Eatery", "Storefront", "Cinema", "Gallery", "Pop-up", "Store Share", "Art Exhibit"],
    [ActivitiesParentEnum.WEDDING]: ["Elopement", "Bachelor Party", "Wedding Reception", "Wedding", "Bachelorette Party", "Wedding Shower", "Reception", "Engagement Party", "Celebration", "Bridal Shower"],
    [ActivitiesParentEnum.RETREAT]: ["Wellness Retreat", "Couples Retreat", "Yoga Retreat", "Spa Retreat", "Team Building Retreat", "Nature Retreat", "Women's Retreat", "Spiritual Retreat"]
};

export const ActivitiesForListingEnum = {
    EVENT: "Events",
    FILM_AND_PHOTO: "Film & Photo",
    CELEBRATION: "Celebrations",
    MEETING: "Meetings",
    WEDDING: "Weddings",
}

export const ActivitiesForLandingTitlesEnum = {
    EVENT: "event",
    PHOTO: "photo shoot",
    CELEBRATION: "celebration",
    FILM: "film",
    MEETING: "meeting",
    WEDDING: "wedding",
}

export const ActivitiesForLandingTitlesNumberBasedEnum = [
    "event",
    "photo shoot",
    "celebration",
    "film",
    "meeting",
    "wedding",
]

export const ActivitiesForLandingTitlesKeyedByIndexEnum = [
    ActivitiesForLandingTitlesEnum.EVENT,
    ActivitiesForLandingTitlesEnum.PHOTO,
    ActivitiesForLandingTitlesEnum.CELEBRATION,
    ActivitiesForLandingTitlesEnum.FILM,
    ActivitiesForLandingTitlesEnum.MEETING,
    ActivitiesForLandingTitlesEnum.WEDDING,
]

export const ActivitiesForLandingTitlesSubLocationKeyedByIndexEnum = [
    "venue",
    "location",
    "venue",
    "location",
    "space",
    "venue",
]

export const ActivitiesForLandingImagesEnum = {
    [ActivitiesForLandingTitlesEnum.EVENT]: "/images/landing/1.Rooftop_on_Bree.jpeg",
    [ActivitiesForLandingTitlesEnum.PHOTO]: "/images/landing/2.The_Aven.jpeg",
    [ActivitiesForLandingTitlesEnum.CELEBRATION]: "/images/landing/3.Blaauwklippen.jpeg",
    [ActivitiesForLandingTitlesEnum.FILM]: "/images/landing/4.Fairytale_Home.jpeg",
    [ActivitiesForLandingTitlesEnum.MEETING]: "/images/landing/5.BoxOffice.png",
    [ActivitiesForLandingTitlesEnum.WEDDING]: "/images/landing/wedding_header.png",
}

export const ActivitiesForLandingListingsNameEnum = {
    [ActivitiesForLandingTitlesEnum.EVENT]: "Rooftop on Bree - Cape Town",
    [ActivitiesForLandingTitlesEnum.PHOTO]: "The Aven - Bakhoven",
    [ActivitiesForLandingTitlesEnum.CELEBRATION]: "Blaauwklippen - Stellenbosch",
    [ActivitiesForLandingTitlesEnum.FILM]: "Fairytale House - Johannesburg",
    [ActivitiesForLandingTitlesEnum.MEETING]: "Box Office - Cape Town",
    [ActivitiesForLandingTitlesEnum.WEDDING]: "Landtscap - Stellenbosch",
}

export const ActivitiesForListingDescriptionsEnum = {
    [ActivitiesForListingEnum.EVENT]: "Exhibit, Corporate, Gallery, Performance, Auction, Launch, Trade Show etc.",
    [ActivitiesForListingEnum.FILM_AND_PHOTO]: "Film Shoot, Photo Shoot, Music Video, Fashion Shoot, Green Screen etc.",
    [ActivitiesForListingEnum.CELEBRATION]: "Birthday, Baby Shower, Bridal Shower, Reunion, Proposal etc.",
    [ActivitiesForListingEnum.WEDDING]: "Ceremony, Reception, Rehearsal, Bridal Photo Shoot, Bridal Shower etc.",
    [ActivitiesForListingEnum.MEETING]: "Off-Site, Workshop, Interview, Therapy Session, Lecture, Fitness Class etc.",
}

export const ActivitiesForListingSubEnum = {
    [ActivitiesForListingEnum.EVENT]: [
        ...ActivitiesSubEnum[ActivitiesParentEnum.CORPORATE_EVENT],
        ...ActivitiesSubEnum[ActivitiesParentEnum.NETWORKING],
        ...ActivitiesSubEnum[ActivitiesParentEnum.PERFORMANCE],
        ...ActivitiesSubEnum[ActivitiesParentEnum.POP_UP],
    ],
    [ActivitiesForListingEnum.FILM_AND_PHOTO]: [
        ...ActivitiesSubEnum[ActivitiesParentEnum.FILM_SHOOT],
        ...ActivitiesSubEnum[ActivitiesParentEnum.PHOTO_SHOOT],
    ],
    [ActivitiesForListingEnum.MEETING]: [
        ...ActivitiesSubEnum[ActivitiesParentEnum.MEETING],
        ...ActivitiesSubEnum[ActivitiesParentEnum.FITNESS],
        ...ActivitiesSubEnum[ActivitiesParentEnum.WORKSHOP],
        ...ActivitiesSubEnum[ActivitiesParentEnum.RETREAT],
    ],
    [ActivitiesForListingEnum.WEDDING]: [
        ...ActivitiesSubEnum[ActivitiesParentEnum.WEDDING],
    ],
    [ActivitiesForListingEnum.CELEBRATION]: [
        ...ActivitiesSubEnum[ActivitiesParentEnum.PARTY],
        ...ActivitiesSubEnum[ActivitiesParentEnum.FOOD_AND_DRINK],
    ],
}

export const ParentFromSubActivity = _.chain(ActivitiesSubEnum)
    .map((value, key) => ({ key, value }))
    .flatMap((a) => _.map(a.value, (s) => ({ child: s, parent: a.key })))
    .mapKeys(o => o.child)
    .mapValues(o => o.parent)
    .value();

export const ListingParentFromSubActivity = _.chain(ActivitiesForListingSubEnum)
    .map((value, key) => ({ key, value }))
    .flatMap((a) => _.map(a.value, (s) => ({ child: s, parent: a.key })))
    .mapKeys(o => o.child)
    .mapValues(o => o.parent)
    .value();
