34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Organization = void 0;
|
|
const AggregateRoot_1 = require("../../../../shared/domain/AggregateRoot");
|
|
const UniqueId_1 = require("../../../../shared/domain/UniqueId");
|
|
const OrgCreated_1 = require("../events/OrgCreated");
|
|
class Organization extends AggregateRoot_1.AggregateRoot {
|
|
static create(props, id) {
|
|
const orgId = id ?? UniqueId_1.UniqueId.create();
|
|
const org = new Organization({
|
|
...props,
|
|
createdAt: new Date(),
|
|
}, orgId);
|
|
org.addDomainEvent(new OrgCreated_1.OrgCreated(orgId.toString(), {
|
|
name: props.name,
|
|
slug: props.slug,
|
|
}));
|
|
return org;
|
|
}
|
|
static reconstitute(props, id) {
|
|
return new Organization(props, id);
|
|
}
|
|
static slugify(name) {
|
|
return name
|
|
.toLowerCase()
|
|
.replace(/[^a-z0-9]+/g, '-')
|
|
.replace(/^-|-$/g, '');
|
|
}
|
|
get name() { return this.props.name; }
|
|
get slug() { return this.props.slug; }
|
|
get createdAt() { return this.props.createdAt; }
|
|
}
|
|
exports.Organization = Organization;
|