import { ajax } from 'discourse/lib/ajax';
import Badge from 'discourse/models/badge';
import showModal from 'discourse/lib/show-modal';

export default Ember.Route.extend({
  serialize(m) {
    return {badge_id: Em.get(m, 'id') || 'new'};
  },

  model(params) {
    if (params.badge_id === "new") {
      return Badge.create({
        name: I18n.t('admin.badges.new_badge')
      });
    }
    return this.modelFor('adminBadges').findBy('id', parseInt(params.badge_id));
  },

  actions: {
    saveError(e) {
      let msg = I18n.t("generic_error");
      if (e.responseJSON && e.responseJSON.errors) {
        msg = I18n.t("generic_error_with_reason", {error: e.responseJSON.errors.join('. ')});
      }
      bootbox.alert(msg);
    },

    editGroupings() {
      const model = this.controllerFor('admin-badges').get('badgeGroupings');
      showModal('admin-edit-badge-groupings', { model, admin: true });
    },

    preview(badge, explain) {
      badge.set('preview_loading', true);
      ajax('/admin/badges/preview.json', {
        method: 'post',
        data: {
          sql: badge.get('query'),
          target_posts: !!badge.get('target_posts'),
          trigger: badge.get('trigger'),
          explain
        }
      }).then(function(model) {
        badge.set('preview_loading', false);
        showModal('admin-badge-preview', { model, admin: true });
      }).catch(function(error) {
        badge.set('preview_loading', false);
        Em.Logger.error(error);
        bootbox.alert("Network error");
      });
    }
  }

});