import { Client, CmdContext, Command } from '../class';

import Profile_Bio from './profile_bio';
import Profile_GitHub from './profile_github';
import Profile_Gitlab from './profile_gitlab';

export default class Profile extends Command {
  constructor(client: Client) {
    super(client);
    this.name = 'profile';
    this.description = 'Manages your profile on CR.';
    this.usage = `${this.client.config.prefix}profile <bio/github/gitlab> <new value>\n*Provide no value in subcommand to clear data.*`;
    this.permissions = 0;
    this.enabled = true;
    this.subcmds = [Profile_Bio, Profile_GitHub, Profile_Gitlab];
  }

  public async run(ctx: CmdContext) {
    if (!await this.client.db.mongo.Member.exists({ userID: ctx.message.author.id })) {
      await this.client.db.mongo.Member.create({ userID: ctx.message.author.id });
    }

    this.error(ctx.message.channel, `Please specify a valid option to change. Choose from \`github\`, \`bio\` and \`gitlab\`. You can view your profile with \`${this.client.config.prefix}whois\`.`);
  }
}
