import { environment } from 'src/environments/environment'; import { Choice } from './choice.model'; import { Comment } from './comment.model'; import { PollConfiguration } from './configuration.model'; import { User } from './user.model'; export class Poll { constructor( public owner: User, public slug: string, public title: string, public description?: string, public configuration: PollConfiguration = new PollConfiguration(), public comments: Comment[] = [], public choices: Choice[] = [] ) {} public getAdministrationUrl(): string { return `${environment.api.baseHref}/administration/polls/${this.slug}`; } public getParticipationUrl(): string { return `${environment.api.baseHref}/participation/polls/${this.slug}`; } public static adaptFromLocalJsonServer( item: Pick ): Poll { return new Poll( new User(item.owner.pseudo, item.owner.email, undefined), item.slug, item.title, item.description, item.configuration, item.comments .map( (c: Pick) => new Comment(c.author, c.content, new Date(c.dateCreated)) ) .sort(Comment.sortChronologically), item.choices.map((c: Pick) => { const choice = new Choice(c.label, c.imageUrl, new Map(c.participants)); choice.participants.forEach((value, key) => { choice.participants.set(key, new Set(value)); }); choice.updateCounts(); return choice; }) ); } }