Project

General

Profile

1
/**
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
import { ActivatedRoute } from "@angular/router";
7
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
import { Entity } from "../domain/entity";
14
import { Community } from "../domain/community";
15
import { DivId } from "../domain/divId";
16
import { EnvProperties } from '../openaireLibrary/utils/properties/env-properties';
17

    
18
@Component({
19
    selector: 'modal-form',
20
    templateUrl: './modal-form.component.html'
21
})
22
export class ModalFormComponent {
23

    
24
    constructor(private route: ActivatedRoute, private _faqService : FAQService, private _helpService: HelpContentService){
25
    }
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
    public properties:EnvProperties = null;
51

    
52
    ngOnInit() {
53

    
54
        this.route.data
55
          .subscribe((data: { envSpecific: EnvProperties }) => {
56
             this.properties = data.envSpecific;
57
          });
58
    }
59

    
60
    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

    
74
    public saveCustom(obj : any) {
75
          if(!this.formGroup.valid) {
76
              this.errorMessage = "Please fill in all required fields marked with *"
77
          } else {
78

    
79
              if (this.type == 'topic') {
80
                  this._faqService.saveTopic(<Topic> obj).subscribe(
81
                      data => this.emmitObject.emit(data),
82
                      error => this.emmitError.emit(error)
83
                  );
84
              } else if (this.type == 'question') {
85
                  this._faqService.saveQuestion(<Question> obj).subscribe(
86
                      data => this.emmitObject.emit(data),
87
                      error => this.emmitError.emit(error)
88
                  );
89
              } else if (this.type == 'community') {
90
                  if(this.saveText == 'Update') {
91
                    this._helpService.updateCommunity(<Community> obj, this.properties.adminToolsAPIURL).subscribe(
92
                       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
                    this._helpService.saveCommunity(<Community> obj, this.properties.adminToolsAPIURL).subscribe(
99
                       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
                    this._helpService.updatePage(<Page> obj, this.properties.adminToolsAPIURL).subscribe(
107
                        data => this.emmitObject.emit(data),
108
                        error => this.emmitError.emit(error)
109
                    );
110
                  } else if(this.saveText == 'Save') {
111
                    this._helpService.savePage(<Page> obj, this.properties.adminToolsAPIURL).subscribe(
112
                        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
                    this._helpService.updateEntity(<Entity> obj, this.properties.adminToolsAPIURL).subscribe(
119
                        data => this.emmitObject.emit(data),
120
                        error => this.emmitError.emit(error)
121
                    );
122
                  } else if(this.saveText == 'Save') {
123
                    this._helpService.saveEntity(<Entity> obj, this.properties.adminToolsAPIURL).subscribe(
124
                        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
                    this._helpService.updateDivId(<DivId> obj, this.properties.adminToolsAPIURL).subscribe(
131
                        data => this.emmitObject.emit(data),
132
                        error => this.emmitError.emit(error)
133
                    );
134
                  } else if(this.saveText == 'Save') {
135
                    this._helpService.saveDivId(<DivId> obj, this.properties.adminToolsAPIURL).subscribe(
136
                        data => this.emmitObject.emit(data),
137
                        error => this.emmitError.emit(error)
138
                    );
139
                  }
140
              }
141
              this.hideModal();
142
            }
143
    }
144
}
(4-4/4)