import { Message } from '../../model/Message'; import { Contact } from '../../model/Contact'; import { InputType } from '../../model/Input'; import { InputSet } from '../../model/InputSet'; import { Button } from '../../model/input/Button'; import { ComboBox } from '../../model/input/ComboBox'; import { DatePicker } from '../../model/input/DatePicker'; import { DateTimePicker } from '../../model/input/DateTimePicker'; import { Delete } from '../../model/input/Delete'; import { EditText } from '../../model/input/EditText'; import { Hidden } from '../../model/input/Hidden'; import { Modify } from '../../model/input/Modify'; import { Selector } from '../../model/input/Selector'; import { Send } from '../../model/input/Send'; import { WebView } from '../../model/input/WebView'; export class InputSetMapper { toInputSet(input_set: any): InputSet { let inputs = []; input_set.input.forEach((input) => { switch (input.type) { case InputType.Button: inputs.push(this.mapButton(input)) break; case InputType.ComboBox: inputs.push(this.mapComboBox(input)) break; case InputType.DatePicker: inputs.push(this.mapDatePicker(input)) break; case InputType.DateTimePicker: inputs.push(this.mapDatePicker(input)) break; case InputType.Delete: inputs.push(this.mapDelete(input)) break; case InputType.EditText: inputs.push(this.mapEditText(input)) break; case InputType.Hidden: inputs.push(this.mapHidden(input)) break; case InputType.Modify: inputs.push(this.mapModify(input)) break; case InputType.Selector: inputs.push(this.mapSelector(input)) break; case InputType.Send: inputs.push(this.mapSend(input)) break; case InputType.WebView: inputs.push(this.mapWebView(input)) break; default: } }) let inputSet = new InputSet(input_set.id, inputs) .setType(input_set.type) .setMethod(input_set.method) .setRegex(input_set.regex); return inputSet; } private mapButton(button): Button { return new Button(button.value) .setImportance(button.importance) } private mapComboBox(comboBox): ComboBox { let options = {} let attributes = this.attributesToJSON(comboBox.attributes); return new ComboBox(comboBox.name, comboBox.options) .setImportance(comboBox.importance) .setValue(comboBox.value) } private mapDatePicker(datePicker): DatePicker { return new DatePicker(datePicker.name) .setImportance(datePicker.importance) .setValue(datePicker.value) .setMaxDate(datePicker.attributes.max_date) .setMinDate(datePicker.attributes.min_date) .setDefaultDate(datePicker.attributes.default_date) } private mapDateTimePicker(dateTimePicker): DateTimePicker { return new DateTimePicker(dateTimePicker.name) .setImportance(dateTimePicker.importance) .setValue(dateTimePicker.value) .setMaxDate(dateTimePicker.attributes.max_date) .setMinDate(dateTimePicker.attributes.min_date) .setMaxTime(dateTimePicker.attributes.max_time) .setMinTime(dateTimePicker.attributes.min_time) .setDefaultDate(dateTimePicker.attributes.default_date) } private mapDelete(del): Delete { return new Delete(del.name, del.attributes.messageId) } private mapEditText(editText): EditText { return new EditText(editText.name) .setImportance(editText.importance) .setValue(editText.value) .setDefaultValue(editText.attributes.default) .setPlaceholder(editText.attributes.placeholder) .setValidation(editText.attributes.validation) } private mapHidden(hidden): Hidden { return new Hidden(hidden.name, hidden.value) } private mapModify(modify): Modify { return new Modify(modify.name, modify.attributes.messageId, modify.attributes.content) } private mapSelector(selector): Selector { let options = {} let attributes = this.attributesToJSON(selector.attributes); return new Selector(selector.name, selector.options) .setImportance(selector.importance) .setValue(selector.value) } private mapSend(send): Send { return new Send(send.value, send.attributes.to, send.attributes.subject, send.attributes.content); } private mapWebView(webView): WebView { return new WebView(webView.name, webView.value) } private attributesToJSON(attributes: string) { return JSON.parse(attributes) } }