import UserField from 'admin/models/user-field';
import BufferedContent from 'discourse/mixins/buffered-content';

export default Ember.ObjectController.extend(BufferedContent, {
  needs: ['admin-user-fields'],
  editing: Ember.computed.empty('id'),

  fieldName: function() {
    return UserField.fieldTypeById(this.get('field_type')).get('name');
  }.property('field_type'),

  flags: function() {
    var ret = [];
    if (this.get('editable')) {
      ret.push(I18n.t('admin.user_fields.editable.enabled'));
    }
    if (this.get('required')) {
      ret.push(I18n.t('admin.user_fields.required.enabled'));
    }
    if (this.get('show_on_profile')) {
      ret.push(I18n.t('admin.user_fields.show_on_profile.enabled'));
    }

    return ret.join(', ');
  }.property('editable', 'required', 'show_on_profile'),

  actions: {
    save: function() {
      var self = this;

      var attrs = this.get('buffered').getProperties('name', 'description', 'field_type', 'editable', 'required', 'show_on_profile');

      this.get('model').save(attrs).then(function(res) {
        self.set('model.id', res.user_field.id);
        self.set('editing', false);
        self.commitBuffer();
      }).catch(function(e) {
        var 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);
      });
    },

    edit: function() {
      this.set('editing', true);
    },

    destroy: function() {
      this.get('controllers.admin-user-fields').send('destroy', this.get('model'));
    },

    cancel: function() {
      var id = this.get('id');
      if (Ember.isEmpty(id)) {
        this.get('controllers.admin-user-fields').send('destroy', this.get('model'));
      } else {
        this.rollbackBuffer();
        this.set('editing', false);
      }
    }
  }
});
