import Ember from 'ember';
import ElevatedAccess from '../../../../mixins/elevated-access';

const { Route } = Ember;

export default Route.extend(ElevatedAccess, {
  // Required for ElevatedAccess mixin
  fallbackRouteBefore: 'protected.strains.index',
  fallbackRouteAfter: 'protected.strains.show',

  model: function() {
    return Ember.RSVP.hash({
      strain: this.store.createRecord('strain'),
      species: this.store.findAll('species'), // Need for dropdown
    });
  },

  // Overriding afterModel because of RSVP hash
  afterModel: function(models) {
    if (!models.strain.get('isNew') && !models.strain.get('canEdit')) {
      this.transitionTo(this.get('fallbackRouteAfter'), models.strain.get('id'));
    }
  },

  // Setting up controller because of RSVP hash
  setupController: function(controller, models) {
    controller.set('model', models.strain);
    controller.set('speciesList', models.species);
  },

  actions: {
    // Overriding willTransition because of RSVP hash
    willTransition: function(/*transition*/) {
      const controller = this.get('controller');
      const model = controller.get('model');

      if (model.get('isNew')) {
        model.destroyRecord();
      }
    },
  },
});