Files
Eventment/app/domain/Profile.js
2019-08-08 16:18:08 -04:00

60 lines
1.4 KiB
JavaScript

import { List, Record } from 'immutable';
export default class Profile extends Record({
addresses: new List(),
avatar: null,
email: null,
firstName: null,
generatedNomDeBid: false,
hasLinkedApple: false,
hasLinkedFacebook: false,
hasLinkedGoogle: false,
hasLocalAccount: false,
id: null,
isAllowedToBid: false,
isOrganizationEmployee: false,
isVerified: false,
lastName: null,
nomDeBid: null,
organizationIdentifier: null,
paymentToken: null,
phones: new List(),
}) {
get canBid() {
return this.isAllowedToBid && this.paymentToken !== null;
}
get fullName() {
return `${this.firstName} ${this.lastName}`;
}
get initials() {
const firstInitial = this.firstName ? this.firstName.substring(0, 1) : null;
const lastInitial = this.firstName ? this.firstName.substring(0, 1) : null;
if (!firstInitial && !lastInitial) {
return null;
}
return `${firstInitial || ''}${lastInitial || ''}`;
}
get isRegisteredAccount() {
return (
this.hasLinkedApple ||
this.hasLinkedFacebook ||
this.hasLinkedGoogle ||
this.hasLocalAccount
);
}
}
Profile.fromJS = (data = {}) => {
return new Profile({
id: data._id,
...data,
addresses: new List(data.addresses),
phones: new List(data.phones),
});
};