import { CloudObject } from '../ncloud'; import * as Parse from 'parse'; export enum TaskStatus { InProgress = 'inProgress', Completed = 'completed', Overdue = 'overdue' } export class Task extends CloudObject { title: string = ''; content: string = ''; completed: boolean = false; startTime?: Date; endTime?: Date; userId?: string; constructor() { super('Task'); } static async create(data: Partial): Promise { const task = new Task(); Object.assign(task, data); await task.saveTask(); return task; } static fromParseObject(parseObject: Parse.Object): Task { const task = new Task(); task.setParseObject(parseObject); return task; } override setParseObject(parseObject: Parse.Object) { super.setParseObject(parseObject); this.title = parseObject.get('title') || ''; this.content = parseObject.get('content') || ''; this.completed = parseObject.get('completed') || false; this.startTime = parseObject.get('startTime'); this.endTime = parseObject.get('endTime'); this.userId = parseObject.get('userId'); } async saveTask(): Promise { await this.save(); } async delete(): Promise { await this.destroy(); } getStatus(): TaskStatus { if (this.completed) { return TaskStatus.Completed; } if (this.endTime && new Date() > this.endTime) { return TaskStatus.Overdue; } return TaskStatus.InProgress; } }