// page-objects/RegisterPage.ts

import { Page } from '@playwright/test';

export class RegisterPage {
  readonly page: Page;

  constructor(page: Page) {
    this.page = page;
  }

  // --- Этап 1: Общие поля ---
  async goto() {
    await this.page.goto('/registration');
  }

  async fillLastName(lastName: string) {
    await this.page.fill('input[name="surname"]', lastName);
  }

  async fillFirstName(firstName: string) {
    await this.page.fill('input[name="name"]', firstName);
  }

  async fillMiddleName(middleName: string) {
    await this.page.fill('input[name="patronymic"]', middleName);
  }

  async fillEmail(email: string) {
    await this.page.fill('input[name="email"]', email);
  }

  async fillLogin(login: string) {
    await this.page.fill('input[name="login"]', login);
  }

  async fillPhone(phone: string) {
    await this.page.fill('input[name="phone"]', phone);
  }

  async fillPassword(password: string) {
    await this.page.fill('input[name="password"]', password);
  }

  async fillPasswordRepeat(password: string) {
    await this.page.fill('input[name="passwordRepeat"]', password);
  }

  async checkConsentCheckbox() {
    await this.page.locator('span.Checkmark_checkmark__58fWm').click();
  }

  async clickNextButton() {
    await this.page.locator('button[type="submit"]', { hasText: 'Далее' }).first().click();
  }

  async clickNextButtonOrg() {
    await this.page.locator('button[type="submit"]', { hasText: 'Далее' }).last().click();
  }

  async submitGeneral() {
    await this.page.locator('button[type="submit"]', { hasText: 'Зарегистрироваться' }).click();
  }

  async submit() {
    await this.page.locator('button[data-testid="btn-save"]').click();
  }

  async selectRole(roleName: 'Абитуриент' | 'Выпускник' | 'Организация') {
  await this.page.getByRole('button', { name: roleName }).click();
}

  async selectDepartment() {
    await this.page.locator('input[name="department"]').click();
    await this.page.getByText('Институт компьютерных технологий и информационной безопасности', { exact: true }).scrollIntoViewIfNeeded();
    await this.page.getByText('Институт компьютерных технологий и информационной безопасности', { exact: true }).click();
  }

  async selectEducationLevel() {
    await this.page.locator('input[name="educationLevel"]').click();
    await this.page.getByText('Специалитет', { exact: true }).click();
  }

  async selectSpeciality() {
    await this.page.locator('input[name="speciality"]').click();
    await this.page.getByText('Применение и эксплуатация автоматизированных систем специального назначения', { exact: true }).scrollIntoViewIfNeeded();
    await this.page.getByText('Применение и эксплуатация автоматизированных систем специального назначения', { exact: true }).click();
  }

  async selectProgram() {
    await this.page.locator('input[name="program"]').click();
    await this.page.getByText('Автоматизированные системы обработки информации и управления', { exact: true }).first().click();
  }

  async selectEducationForm() {
    await this.page.locator('input[name="educationForm"]').click();
    await this.page.getByText('Очная', { exact: true }).click();
  }

//Для организации

  async fillShortName(shortName: string) {
    await this.page.fill('input[name="shortName"]', shortName);
  }

  async fillFullName(fullName: string){
    await this.page.fill('input[name="fullName"]', fullName);
  }

  async fillAddress(address: string) {
await this.page.fill('input[name="address"]', address);
}

  async fillKPP(kpp: string) {
    await this.page.fill('input[name="kpp"]', kpp);
}

  async fillINN(inn: string) {
    await this.page.fill('input[name="inn"]', inn);
}

  async fillSite(site: string) {
    await this.page.fill('input[name="site"]', site);
}

  async fillDescription(description: string) {
    await this.page.fill('textarea[name="description"]', description);
}

// Step 3
  async fillDirectorFIO(fio: string) {
    await this.page.fill('input[name="directorFIO"]', fio);
}

  async fillPosition(position: string) {
    await this.page.fill('input[name="position"]', position);
}

  async fillBasis(basis: string) {
    await this.page.fill('input[name="basis"]', basis);
}

  async fillTelegram(tg: string) {
    await this.page.fill('input[name="tg"]', tg);
}

  async fillVK(vk: string) {
    await this.page.fill('input[name="vk"]', vk);
}

  async expectSuccessModal() {
    await this.page.getByRole('heading', { name: 'Ваши данные отправлены на проверку!' }).waitFor();
    await this.page.getByRole('button', { name: 'На главную' }).click();
}

}
