import { InstructionExecutor } from './InstructionExecutor'; import { NSIThematicHeading, NSIInstructionPriority, NSIInstructionDifficulty, UserBean } from 'oasi-nsi-rest'; import { OrderDocument, OrderDocumentUser } from 'orders-rest'; import * as _ from 'lodash'; export class NewOrderModel { creator: InstructionExecutor = null; beginDate: Date = new Date(); theme: NSIThematicHeading = null; content: string = ''; description: string = ''; priority: string = ''; difficulty: string = ''; private: boolean = false; planDate: Date = null; executor: UserBean = null; coExecutor: UserBean[] = []; isValid(): boolean { return (this.creator && this.beginDate && this.content && this.planDate && this.executor && this.priority && this.difficulty) ? true : false; } upatedocumentFromModel(document: OrderDocument , priority: NSIInstructionPriority[], difficulty: NSIInstructionDifficulty[]) { if (this.creator) { document.instruction.creator.login = this.creator.creator.accountName; document.instruction.creator.fioFull = this.creator.creator.displayName; document.instruction.creator.post = this.creator.creator.post; } document.instruction.beginDate = this.beginDate; if (this.theme) { document.instruction.theme.code = this.theme.code; document.instruction.theme.name = this.theme.name; } document.instruction.content = this.content; document.instruction.description = this.description; if (this.priority) { let p = _.find(priority, p => { return p.code === this.priority; }); document.instruction.priority.code = p.code; document.instruction.priority.color = p.color; document.instruction.priority.name = p.name; } if (this.difficulty) { let d = _.find(difficulty, p => { return p.code === this.difficulty; }); document.instruction.difficulty.code = d.code; document.instruction.difficulty.color = d.color; document.instruction.difficulty.name = d.name; } document.instruction.private = this.private; document.instruction.planDate = this.planDate; if (this.executor) { document.instruction.executor.login = this.executor.accountName; document.instruction.executor.fioFull = this.executor.displayName; document.instruction.executor.post = this.executor.post; } if (this.coExecutor && this.coExecutor.length) { document.instruction.coExecutor = _.map(this.coExecutor, e => { let result = new OrderDocumentUser(); result.login = e.accountName; result.fioFull = e.displayName; result.post = e.post; return result; }); } } }