import { Random } from '../../utilities/utilities';
import { faker } from '@faker-js/faker';

const DEFAULT_STAGING_PRIME_AGENCY_COMPANY_ASSOCIATION_UUID =
  '61579ca9-3d77-45bf-b05c-f4eefc202153';
const location_Id = 'ChIJPR_P35GAhYAR1FrMYIltGWo';

export class LegalData {
  static generateLegalEntitiesData() {
    const legalId = Random.randomString(6);

    return {
      legalName: 'Legal entity ' + legalId,
      locationPlaceId: location_Id,
      address1: '620 Jones Street, San Francisco, CA, USA',
      address2: null,
      city: 'San Francisco',
      state: 'CA',
      country: 'US',
      zipCode: '94102',
      contactGivenName: faker.name.firstName(),
      contactFamilyName: faker.name.lastName().replace(/'/g, '')
    };
  }

  static generateOfficeData(
    billableEntityUuid: string,
    defaultOffice = true,
    agencyCompanyAssociationUuid = DEFAULT_STAGING_PRIME_AGENCY_COMPANY_ASSOCIATION_UUID
  ) {
    const officeId = Random.randomString(4);

    return {
      officeName: 'SF Office ' + officeId,
      officeLocationPlaceId: location_Id,
      agencyCompanyAssociationUuid,
      address1: '620 Jones Street, San Francisco, CA, USA',
      address2: null,
      city: 'San Francisco',
      state: 'CA',
      country: 'US',
      zipCode: '94102',
      contactFamilyName: faker.name.lastName().replace(/'/g, ''),
      contactGivenName: faker.name.firstName(),
      contactPhoneNumber: faker.phone.phoneNumber(),
      billableEntityUuid: billableEntityUuid,
      defaultOffice: defaultOffice
    };
  }

  static generateEULegalEntitiesData() {
    const legalId = Random.randomString(6);
    return {
      legalName: 'Legal entity ' + legalId,
      locationPlaceId: location_Id,
      address1: 'Schinkestraße 20, Berlin, Germany, 12047 Berlin, DE',
      address2: null,
      zipCode: '12047',
      city: 'Berlin',
      state: 'Germany',
      country: 'DE',
      contactGivenName: faker.name.firstName(),
      contactFamilyName: faker.name.lastName().replace(/'/g, '')
    };
  }
  static generateEUOfficeData(
    billableEntityUuid: string,
    defaultOffice = true,
    agencyCompanyAssociationUuid = DEFAULT_STAGING_PRIME_AGENCY_COMPANY_ASSOCIATION_UUID
  ) {
    const officeId = Random.randomString(4);
    return {
      officeName: ' Office ' + officeId,
      officeLocationPlaceId: location_Id,
      agencyCompanyAssociationUuid,
      address1: 'Schinkestraße 20, Berlin, Germany, 12047 Berlin, DE',
      address2: null,
      city: 'Berlin',
      state: 'Germany',
      country: 'DE',
      zipCode: '12047',
      billableEntityUuid: billableEntityUuid,
      contactFamilyName: faker.name.lastName().replace(/'/g, ''),
      contactGivenName: faker.name.firstName(),
      contactPhoneNumber: faker.phone.phoneNumber(),
      defaultOffice: defaultOffice
    };
  }
  static generateIndiaLegalEntitiesData() {
    const legalId = Random.randomString(6);
    return {
      legalName: 'Legal entity ' + legalId,
      locationPlaceId: location_Id,
      address1: 'Survey No. 115/1, Financial District, Nanakramguda',
      address2: null,
      zipCode: '500032',
      city: 'Hyderabad',
      state: 'Telangana',
      country: 'IN',
      contactGivenName: faker.name.firstName(),
      contactFamilyName: faker.name.lastName().replace(/'/g, '')
    };
  }
  static generateIndiaOfficeData(
    billableEntityUuid: string,
    defaultOffice = true,
    agencyCompanyAssociationUuid = DEFAULT_STAGING_PRIME_AGENCY_COMPANY_ASSOCIATION_UUID
  ) {
    const officeId = Random.randomString(4);
    return {
      officeName: 'India Office ' + officeId,
      officeLocationPlaceId: location_Id,
      agencyCompanyAssociationUuid,
      address1: 'Survey No. 115/1, Financial District, Nanakramguda',
      address2: null,
      city: 'Hyderabad',
      state: 'Telangana',
      country: 'India',
      zipCode: '500032',
      billableEntityUuid: billableEntityUuid,
      contactFamilyName: faker.name.lastName().replace(/'/g, ''),
      contactGivenName: faker.name.firstName(),
      contactPhoneNumber: faker.phone.phoneNumber(),
      defaultOffice: defaultOffice
    };
  }
}
