1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-22 14:49:42 +02:00

Create user model and push user data into store

This commit is contained in:
zinyando 2016-08-08 18:39:28 +02:00
parent 44716e8b9e
commit a78a73d552
3 changed files with 71 additions and 9 deletions

44
app/app/models/user.js Normal file
View file

@ -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;
// }
});

View file

@ -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
};
}
});

View file

@ -10,21 +10,22 @@
// https://documize.com // https://documize.com
import Ember from 'ember'; import Ember from 'ember';
import models from '../utils/model'; // import models from '../utils/model';
export default Ember.Service.extend({ export default Ember.Service.extend({
sessionService: Ember.inject.service('session'), sessionService: Ember.inject.service('session'),
ajax: Ember.inject.service(), ajax: Ember.inject.service(),
store: Ember.inject.service(),
// Adds a new user. // Adds a new user.
add(user) { add(user) {
return this.get('ajax').request(`users`, { return this.get('ajax').request(`users`, {
type: 'POST', type: 'POST',
data: JSON.stringify(user), data: JSON.stringify(user),
contentType: 'json' contentType: 'json'
}).then(function (response) { }).then((response) => {
return models.UserModel.create(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, { return this.get('ajax').request(url, {
type: 'GET' type: 'GET'
}).then((response) => { }).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. // Returns all users for organization.
getAll() { getAll() {
return this.get('ajax').request(`users`).then((response) => { return this.get('ajax').request(`users`).then((response) => {
return response.map(function (obj) { return response.map((obj) => {
return models.UserModel.create(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" method: "GET"
}).then((response) => { }).then((response) => {
let data = []; let data = [];
_.each(response, function (obj) { _.each(response, (obj) => {
data.pushObject(models.UserModel.create(obj)); let user = this.get('store').normalize('user', obj);
data.pushObject(this.get('store').push({ data: user }));
}); });
return data; return data;
@ -91,6 +95,9 @@ export default Ember.Service.extend({
return this.get('ajax').request(url, { return this.get('ajax').request(url, {
method: 'DELETE' method: 'DELETE'
}).then(() => {
let user = this.get('store').peekRecord('user', `${userId}`);
return user.deleteRecord();
}); });
}, },