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 = new User(), public slug: string = '', public title: string = '', public description?: string, public creatorPseudo?: string, public creatorEmail?: string, public allowSeveralHours?: boolean, public archiveNumberOfDays?: number, public configuration: PollConfiguration = new PollConfiguration(), public comments: Comment[] = [], public choices: Choice[] = [], public dateChoices: Choice[] = [], // sets of days as strings, config to set identical time for days in a special days poll public timeChoices: Choice[] = [] // ranges of time expressed as strings ) {} 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; // }) ); } }