app/routes/providers/show/contacts/index.js
import { hash } from 'rsvp';
import Route from '@ember/routing/route';
import { assign } from '@ember/polyfills';
import { inject as service } from '@ember/service';
export default Route.extend({
can: service(),
features: service(),
router: service(),
store: service(),
model(params) {
let providerId = null;
let consortiumId = null;
let model = this.modelFor('providers/show');
if (model.memberType === 'consortium') {
consortiumId = model.get('id').toLowerCase();
} else {
providerId = model.get('id').toLowerCase();
}
params = assign(params, {
page: {
number: params.page,
size: params.size
},
'provider-id': providerId,
'consortium-id': consortiumId
});
let ret = hash({
provider: this.modelFor('providers/show'),
contacts: this.store
.query('contact', params)
.then(function (result) {
return result;
})
.catch(function (reason) {
console.debug(reason);
return null;
})
});
return ret.then(function (ret) {
// Workaround - going back to settings tab, contacts disappear.
ret.provider.contacts = ret.contacts;
return ret;
});
},
queryParams: {
page: {
refreshModel: true
},
size: {
refreshModel: true
},
'role-name': {
refreshModel: true
}
},
afterModel() {
if (this.can.cannot('read provider', this.modelFor('providers/show'))) {
this.router.transitionTo('index');
}
}
});