import { GuestInvitePage, InviteGuestModalPage } from '@admin-lib/index';
import { generateAdminEventName, guestInfoData } from '@fixtures/admin/guest_data';

export class GuestInviteUtility {
  static createGuestInviteForInternalUser(isAllowedExtraGuest = false) {
    const eventName = generateAdminEventName();
    GuestInvitePage.visitGuestInvitePage();
    GuestInvitePage.selectGuestInviteOption();
    InviteGuestModalPage.fillGuestInfoFromCachedUser();

    if (isAllowedExtraGuest) {
      InviteGuestModalPage.setExtraGuestAllowed();
    }
    InviteGuestModalPage.selectNextOptionFromGuestInformation();
    InviteGuestModalPage.setEventName(eventName);
    InviteGuestModalPage.setEventLocation(guestInfoData.eventLocation);
    InviteGuestModalPage.selectNextOptionFromEventDetails();
    InviteGuestModalPage.setAdditionalInfo(guestInfoData.additionalInfo);
    InviteGuestModalPage.selectNextOptionFromTravelPolicy();
    InviteGuestModalPage.selectPaymentMethod(guestInfoData.paymentMethod);
    InviteGuestModalPage.selectReviewOption();
    InviteGuestModalPage.selectOnlyInviteOption();
    InviteGuestModalPage.verifySuccessToastMessage();
    InviteGuestModalPage.verifyInvitationSuccessMessage();
    GuestInvitePage.searchEventByEventName(eventName);
    GuestInvitePage.getDataFromCachedUserEmailAndVerifyEventData(eventName);
  }
}
