package io.delphi.qa.auto.awsmfrw.tests.api;

import io.delphi.qa.auto.awsmfrw.common_baby.IsaCommonMethods;
import io.delphi.qa.auto.awsmfrw.models.api.rest.v3.EnContentTypeItems;
import io.delphi.qa.auto.awsmfrw.models.api.rest.v3.EnExpandToItems;
import io.delphi.qa.auto.awsmfrw.models.api.rest.v3.video_positions.charts.EnVideoPositionsChartsIncludeItems;

import java.util.Arrays;
import java.util.stream.Collectors;

public abstract class BsVideoTest extends BsApiRestMagicTest {

  private final String D364 = IsaCommonMethods.getDateMinusDays(365);
  private final String D335 = IsaCommonMethods.getDateMinusDays(28 * 12);
  private final String D307 = IsaCommonMethods.getDateMinusDays(28 * 11);
  private final String D279 = IsaCommonMethods.getDateMinusDays(28 * 10);
  private final String D251 = IsaCommonMethods.getDateMinusDays(28 * 9);
  private final String D223 = IsaCommonMethods.getDateMinusDays(28 * 8);
  private final String D195 = IsaCommonMethods.getDateMinusDays(28 * 7);
  protected final String D167 = IsaCommonMethods.getDateMinusDays(28 * 6);
  private final String D139 = IsaCommonMethods.getDateMinusDays(28 * 5);
  private final String D111 = IsaCommonMethods.getDateMinusDays(28 * 4);
  private final String D83 = IsaCommonMethods.getDateMinusDays(28 * 3);
  private final String D55 = IsaCommonMethods.getDateMinusDays(28 * 2);
  protected final String D27 = IsaCommonMethods.getDateMinusDays(28);
  private final String D13 = IsaCommonMethods.getDateMinusDays(7 * 2);
  protected final String D7 = IsaCommonMethods.getDateMinusDays(8);
  protected final String D6 = IsaCommonMethods.getDateMinusDays(7);
  protected final String D2 = IsaCommonMethods.getDateMinusDays(2);
  protected final String D1 = IsaCommonMethods.getDateMinusDays(1);
  private final String NOW_D = IsaCommonMethods.getDateMinusDays(0);

  protected final String DSP = fetchVideoDsp();
  protected final String DSPS = String.join(",", fetchVideoDsps());
  protected final String COUNTRY_CODE = fetchCountryCode(true);
  private final String COUNTRY_CODES = String.join(",", fetchCountryCodes(true));
  private final String CHART_GROUP = fetchChartGroup(true, DSP);
  private final String CHART_GROUPS = String.join(",", fetchChartGroups(true, DSP));
  private final String CHART_ID = fetchChartId(true, DSP, COUNTRY_CODE);
  private final String CHART_IDS = String.join(",", fetchChartIds(true, DSP));

  private final String EXPAND_TOS =
      Arrays.stream(EnExpandToItems.values())
          .map(EnExpandToItems::get)
          .collect(Collectors.joining(","));
  private final String EXPAND_TO_RELATED_ISRCS = EnExpandToItems.RELATED_ISRCS.get();
  private final String EXPAND_TO = EnExpandToItems.RELATED_ISRCS.get();
  private final String CONTENT_TYPE = fetchContentType();
  private final String CONTENT_TYPES = String.join(",", fetchContentTypes());
  private final String CONTENT_TYPE_PREMIUM_UGC_PARTNER_UPLOADED =
      String.format(
          "%s,%s",
          EnContentTypeItems.PREMIUM_UGC.get(), EnContentTypeItems.PARTNER_UPLOADED.get());
  private final String CONTENT_TYPE_PARTNER_UPLOADED = EnContentTypeItems.PARTNER_UPLOADED.get();
  protected final String CONTENT_TYPE_PREMIUM_UGC = EnContentTypeItems.PREMIUM_UGC.get();
  private final String INCLUDE_VIDEO = EnVideoPositionsChartsIncludeItems.VIDEO.get();
  private final String INCLUDES = EnVideoPositionsChartsIncludeItems.VIDEO.get();
  private final String SORT_BY_VIEWS = "views";
}
