package old.page;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

public class AdminProcessPage extends BaseComponentPage {

  private static final By modalMessage = By.xpath("//div[contains(@class, 'modal-body')][contains(., 'Вы действительно хотите')]");

  @FindBy(css = "div[col-id = 'process$start_date']")
  private List<WebElement> dates;

  private static final String PROCESS_XPATH = "//div[@row-id='%s'][.//div[contains(.,'%s')]]";

  public AdminProcessPage(WebDriver browser) {
    super(browser, "/#/process/instance");
  }

  private By getProcessBy(String processId, String processName) {
    return By.xpath(String.format(PROCESS_XPATH, processId, processName));
  }

  public WebElement getProcessFromProcessInstanceTable(String processName, String processId) {
    By processLocator = (getProcessBy(processId, processName));
    return waitForVisibilityOfElementLocated(processLocator);
  }

  public boolean isNoProcessFound(String processName, String processId) {
    By processLocator = (getProcessBy(processId, processName));

    if (!driver.findElements(FIRST_ROW_BY).isEmpty()) {
    }

    return driver.findElements(processLocator).isEmpty();
  }

  //прервать процесс
  public void stopProcess(String processName, String processId) {
    getProcessFromProcessInstanceTable(processName, processId).click();
    clickStopButton();
    waitForVisibilityOfElementLocated(modalMessage);
    clickConfirmButton();
    waitForInvisibilityOfElementLocated(modalMessage);
  }

  //переключиться между вкладками с помощью радиобатона
  public void changeRadioTab(String radioButtonTab) {
    waitProgressBarNotVisible();
    WebElement radioTab = driver.findElement(By.xpath("//label[.//span[contains(.,'" + radioButtonTab + "')]]//input"));
    radioTab.click();
    waitProgressBarNotVisible();
  }

  //переключится на вкладку завершенных процессов
  public void goToFinishedTab() {
    changeRadioTab("Завершенные");
    waitForPageLoad();
  }

  //переключится на вкладку прерванных процессов
  public void goToStopedTab() {
    changeRadioTab("Прерванные");
    waitForPageLoad();
  }

  public String getDateStringByRowNumber(Integer rowNumber) {
    return dates.get(rowNumber).getText();
  }
}
