import CustomWizard from '../models/custom-wizard';
import { ajax } from 'discourse/lib/ajax';
import DiscourseRoute from "discourse/routes/discourse";
import I18n from "I18n";
import { selectKitContent } from '../lib/wizard';

export default DiscourseRoute.extend({
  model(params) {
    if (params.wizardId === 'create') {
      return { create: true };
    } else {
      return ajax(`/admin/wizards/wizard/${params.wizardId}`);
    }
  },
  
  afterModel(model) {
    if (model.none) {
      return this.transitionTo('adminWizardsWizard');
    }
  },

  setupController(controller, model) {
    const parentModel = this.modelFor('adminWizardsWizard');
    const wizard = CustomWizard.create((!model || model.create) ? {} : model);
    const fieldTypes = Object.keys(parentModel.field_types).map(type => {
      return {
        id: type,
        name: I18n.t(`admin.wizard.field.type.${type}`)
      };
    })
              
    let props = {
      wizardList: parentModel.wizard_list,
      fieldTypes,
      userFields: parentModel.userFields,
      customFields: selectKitContent(parentModel.custom_fields.map(f => f.name)),
      apis: parentModel.apis,
      themes: parentModel.themes,
      wizard,
      currentStep: wizard.steps[0],
      currentAction: wizard.actions[0],
      creating: model.create
    };
    
    controller.setProperties(props);
  }
});