import { check } from "express-validator";
import { validateResult } from "../../utils/handlers/validator.handle";
import { AbstractValidator } from "../abstract.validator";

export class SocialNetworkInstagramsValidator extends AbstractValidator {
  constructor() {
    super();
  }
  session() {
    return [
      check("id").exists().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  connect() {
    return [
      check("provider_id").exists().isMongoId(),
      check("username").exists().isString(),
      check("password").exists().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  disconnect() {
    return [
      check("provider_id").exists().isMongoId(),
      check("username").exists().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  sendMessages() {
    return [
      check("provider_id").exists().isMongoId(),
      // check("campaign_id").exists().isMongoId(),
      check("username").exists().isString(),
      check("list").exists().isArray({ min: 1 }),
      check("list.*.username").exists().isString(),
      check("list.*.message").exists().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  sendPhotos() {
    return [
      check("provider_id").exists().isMongoId(),
      // check("campaign_id").exists().isMongoId(),
      check("username").exists().isString(),
      check("list").exists().isArray({ min: 1 }),
      check("list.*.username").exists().isString(),
      check("list.*.url").exists().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  sendVideos() {
    return [
      check("provider_id").exists().isMongoId(),
      // check("campaign_id").exists().isMongoId(),
      check("username").exists().isString(),
      check("list").exists().isArray({ min: 1 }),
      check("list.*.username").exists().isString(),
      check("list.*.url").exists().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  sendStories() {
    return [
      check("provider_id").exists().isMongoId(),
      // check("campaign_id").exists().isMongoId(),
      check("username").exists().isString(),
      check("list").exists().isArray({ min: 1 }),
      check("list.*.username").exists().isString(),
      check("list.*.url").exists().isString(),
      check("list.*.url_cover").optional().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  sendAudios() {
    return [
      check("provider_id").exists().isMongoId(),
      // check("campaign_id").exists().isMongoId(),
      check("username").exists().isString(),
      check("list").exists().isArray({ min: 1 }),
      check("list.*.username").exists().isString(),
      check("list.*.url").exists().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  publishMultimedia() {
    return [
      check("provider_id").exists().isMongoId(),
      check("username").exists().isString(),
      check("list").exists().isArray({ min: 1 }),
      check("list.*.url").exists().isString(),
      check("list.*.url_cover").optional().isString(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  createItem() {
    return [
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
  updateItem() {
    return [
      check("_id").exists().isMongoId(),
      (req, res, next) => {
        validateResult(req, res, next);
      },
    ];
  }
}
