Project

General

Profile

1 49060 argiro.kok
/**
2
 * Created by stefanos on 28/4/2017.
3
 */
4
import { Component, ViewChild, Input, Output, EventEmitter, OnInit } from '@angular/core';
5
import { ModalDirective } from 'ngx-bootstrap/modal';
6 51057 argiro.kok
import { ActivatedRoute } from "@angular/router";
7 49060 argiro.kok
import { FormGroup } from "@angular/forms";
8
import { FAQService } from "../services/faq.service";
9
import { Topic } from "../domain/topic";
10
import { Question } from "../domain/question";
11
import { HelpContentService } from "../services/help-content.service";
12
import { Page } from "../domain/page";
13 50117 konstantin
import { Entity } from "../domain/entity";
14 50183 konstantin
import { Community } from "../domain/community";
15 50607 konstantin
import { DivId } from "../domain/divId";
16 51057 argiro.kok
import { EnvProperties } from '../openaireLibrary/utils/properties/env-properties';
17 49060 argiro.kok
18
@Component({
19
    selector: 'modal-form',
20
    templateUrl: './modal-form.component.html'
21
})
22
export class ModalFormComponent {
23
24 51057 argiro.kok
    constructor(private route: ActivatedRoute, private _faqService : FAQService, private _helpService: HelpContentService){
25 49060 argiro.kok
    }
26
27
    @ViewChild('autoShownModal')
28
    public autoShownModal:ModalDirective;
29
30
    @Input()
31
    public isModalShown:boolean = false;
32
33
    @Input()
34
    public saveText : string;
35
36
    @Input()
37
    public titleText : string;
38
39
    @Input()
40
    public formGroup : FormGroup;
41
42
    @Input()
43
    public type : string = 'topic';
44
45
    public errorMessage : string = null;
46
47
    @Output() emmitObject: EventEmitter<any> = new EventEmitter();
48
49
    @Output() emmitError: EventEmitter<any> = new EventEmitter();
50 51057 argiro.kok
    public properties:EnvProperties = null;
51 49060 argiro.kok
52 51057 argiro.kok
    ngOnInit() {
53
54
        this.route.data
55
          .subscribe((data: { envSpecific: EnvProperties }) => {
56
             this.properties = data.envSpecific;
57
          });
58
    }
59
60 49060 argiro.kok
    public showModal():void {
61
        this.isModalShown = true;
62
    }
63
64
    public hideModal():void {
65
        this.autoShownModal.hide();
66
    }
67
68
    public onHidden():void {
69
        this.isModalShown = false;
70
        this.emmitError.emit(null);
71
        this.errorMessage = null;
72
    }
73 50117 konstantin
74 49060 argiro.kok
    public saveCustom(obj : any) {
75 50607 konstantin
          if(!this.formGroup.valid) {
76
              this.errorMessage = "Please fill in all required fields marked with *"
77
          } else {
78 49060 argiro.kok
79 50607 konstantin
              if (this.type == 'topic') {
80
                  this._faqService.saveTopic(<Topic> obj).subscribe(
81 50117 konstantin
                      data => this.emmitObject.emit(data),
82
                      error => this.emmitError.emit(error)
83
                  );
84 50607 konstantin
              } else if (this.type == 'question') {
85
                  this._faqService.saveQuestion(<Question> obj).subscribe(
86 50117 konstantin
                      data => this.emmitObject.emit(data),
87
                      error => this.emmitError.emit(error)
88
                  );
89 50607 konstantin
              } else if (this.type == 'community') {
90
                  if(this.saveText == 'Update') {
91 51057 argiro.kok
                    this._helpService.updateCommunity(<Community> obj, this.properties.adminToolsAPIURL).subscribe(
92 50607 konstantin
                       data => this.emmitObject.emit(data),
93
                       error => this.emmitError.emit(error)
94
                    );
95
                    console.info(<Community> obj);
96
97
                  } else if(this.saveText == 'Save') {
98 51057 argiro.kok
                    this._helpService.saveCommunity(<Community> obj, this.properties.adminToolsAPIURL).subscribe(
99 50607 konstantin
                       data => this.emmitObject.emit(data),
100
                       error => this.emmitError.emit(error)
101
                    );
102
                    console.info(<Community> obj);
103
                  }
104
              } else if (this.type == 'page') {
105
                  if(this.saveText == 'Update') {
106 51057 argiro.kok
                    this._helpService.updatePage(<Page> obj, this.properties.adminToolsAPIURL).subscribe(
107 50607 konstantin
                        data => this.emmitObject.emit(data),
108
                        error => this.emmitError.emit(error)
109
                    );
110
                  } else if(this.saveText == 'Save') {
111 51057 argiro.kok
                    this._helpService.savePage(<Page> obj, this.properties.adminToolsAPIURL).subscribe(
112 50607 konstantin
                        data => this.emmitObject.emit(data),
113
                        error => this.emmitError.emit(error)
114
                    );
115
                  }
116
              }  else if (this.type == 'entity') {
117
                  if(this.saveText == 'Update') {
118 51057 argiro.kok
                    this._helpService.updateEntity(<Entity> obj, this.properties.adminToolsAPIURL).subscribe(
119 50607 konstantin
                        data => this.emmitObject.emit(data),
120
                        error => this.emmitError.emit(error)
121
                    );
122
                  } else if(this.saveText == 'Save') {
123 51057 argiro.kok
                    this._helpService.saveEntity(<Entity> obj, this.properties.adminToolsAPIURL).subscribe(
124 50607 konstantin
                        data => this.emmitObject.emit(data),
125
                        error => this.emmitError.emit(error)
126
                    );
127
                  }
128
              } else if (this.type == 'divId') {
129
                  if(this.saveText == 'Update') {
130 51057 argiro.kok
                    this._helpService.updateDivId(<DivId> obj, this.properties.adminToolsAPIURL).subscribe(
131 50607 konstantin
                        data => this.emmitObject.emit(data),
132
                        error => this.emmitError.emit(error)
133
                    );
134
                  } else if(this.saveText == 'Save') {
135 51057 argiro.kok
                    this._helpService.saveDivId(<DivId> obj, this.properties.adminToolsAPIURL).subscribe(
136 50607 konstantin
                        data => this.emmitObject.emit(data),
137
                        error => this.emmitError.emit(error)
138
                    );
139
                  }
140
              }
141 50971 konstantin
              this.hideModal();
142 49060 argiro.kok
            }
143
    }
144
}