diff --git a/app/app/models/user.js b/app/app/models/user.js new file mode 100644 index 00000000..95357bd0 --- /dev/null +++ b/app/app/models/user.js @@ -0,0 +1,44 @@ +import Model from 'ember-data/model'; +import attr from 'ember-data/attr'; +import Ember from 'ember'; +// import { belongsTo, hasMany } from 'ember-data/relationships'; + +export default Model.extend({ + firstname: attr('string'), + lastname: attr('string'), + email: attr('string'), + initials: attr('string'), + active: attr('boolean', { defaultValue: false }), + editor: attr('boolean', { defaultValue: false }), + admin: attr('boolean', { defaultValue: false }), + accounts: attr(), + created: attr(), + revised: attr(), + + fullname: Ember.computed('firstname', 'lastname', function () { + return `${this.get('firstname')} ${this.get('lastname')}`; + }), + + generateInitials() { + let first = this.get('firstname').trim(); + let last = this.get('lastname').trim(); + this.set('initials', first.substr(0, 1) + last.substr(0, 1)); + }, + // + // copy() { + // let copy = UserModel.create(); + // copy.id = this.id; + // copy.created = this.created; + // copy.revised = this.revised; + // copy.firstname = this.firstname; + // copy.lastname = this.lastname; + // copy.email = this.email; + // copy.initials = this.initials; + // copy.active = this.active; + // copy.editor = this.editor; + // copy.admin = this.admin; + // copy.accounts = this.accounts; + // + // return copy; + // } +}); diff --git a/app/app/serializers/user.js b/app/app/serializers/user.js new file mode 100644 index 00000000..05b576e6 --- /dev/null +++ b/app/app/serializers/user.js @@ -0,0 +1,11 @@ +import JSONAPISerializer from 'ember-data/serializers/json-api'; + +export default JSONAPISerializer.extend({ + normalize(modelClass, resourceHash) { + return { + id: resourceHash.id, + type: modelClass.modelName, + attributes: resourceHash + }; + } +}); diff --git a/app/app/services/user.js b/app/app/services/user.js index 28df54e9..f9afd0d7 100644 --- a/app/app/services/user.js +++ b/app/app/services/user.js @@ -10,21 +10,22 @@ // https://documize.com import Ember from 'ember'; -import models from '../utils/model'; +// import models from '../utils/model'; export default Ember.Service.extend({ sessionService: Ember.inject.service('session'), ajax: Ember.inject.service(), + store: Ember.inject.service(), // Adds a new user. add(user) { - return this.get('ajax').request(`users`, { type: 'POST', data: JSON.stringify(user), contentType: 'json' - }).then(function (response) { - return models.UserModel.create(response); + }).then((response) => { + let user = this.get('store').normalize('user', response); + return this.get('store').push({ data: user }); }); }, @@ -35,15 +36,17 @@ export default Ember.Service.extend({ return this.get('ajax').request(url, { type: 'GET' }).then((response) => { - return models.UserModel.create(response); + let user = this.get('store').normalize('user', response); + return this.get('store').push({ data: user }); }); }, // Returns all users for organization. getAll() { return this.get('ajax').request(`users`).then((response) => { - return response.map(function (obj) { - return models.UserModel.create(obj); + return response.map((obj) => { + let user = this.get('store').normalize('user', obj); + return this.get('store').push({ data: user }); }); }); }, @@ -56,8 +59,9 @@ export default Ember.Service.extend({ method: "GET" }).then((response) => { let data = []; - _.each(response, function (obj) { - data.pushObject(models.UserModel.create(obj)); + _.each(response, (obj) => { + let user = this.get('store').normalize('user', obj); + data.pushObject(this.get('store').push({ data: user })); }); return data; @@ -91,6 +95,9 @@ export default Ember.Service.extend({ return this.get('ajax').request(url, { method: 'DELETE' + }).then(() => { + let user = this.get('store').peekRecord('user', `${userId}`); + return user.deleteRecord(); }); },