ministry.home.ts 5.57 KB
Newer Older
1
import { Router, Params} from '@angular/router';
2
import { OnInit, OnDestroy, Component} from '@angular/core';
3 4
import { LoginInfoActions } from '../actions/logininfo.actions';
import { ILoginInfo } from '../store/logininfo/logininfo.types';
5
import { NgRedux, select } from '@angular-redux/store';
6
import { BehaviorSubject, Subscription } from 'rxjs/Rx';
7 8 9
import { IAppState } from '../store/store';
import { HelperDataService } from '../services/helper-data-service';
import {Http, Response, RequestOptions} from '@angular/http';
10
import { LOGININFO_INITIAL_STATE } from "../store/logininfo/logininfo.initial-state";
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
import {
    FormBuilder,
    FormGroup,
    FormControl,
    FormArray,
    Validators
} from '@angular/forms';

import { API_ENDPOINT } from '../app.settings';

@Component({
    selector: 'ministry-home',
    template: `
  <div>
       <form novalidate [formGroup]="userDataGroup"  #form>
26 27 28
            <div
              class = "loading" *ngIf="validLogin === -1" >
            </div>
29 30 31 32 33 34 35 36 37 38 39 40 41
            <div class="form-group">
                <label for="minedu_username">Όνομα διαχειριστή</label><input class="form-control" type="text" formControlName="minedu_username">
            </div>
            <div class="alert alert-danger" *ngIf="userDataGroup.get('minedu_username').touched && userDataGroup.get('minedu_username').hasError('required')">
                Το πεδίο δεν μπορεί να αφεθεί κενό!
            </div>

            <div class="form-group">
                <label for="minedu_userpassword">Κωδικός πρόσβασης</label><input class="form-control" type="password" formControlName="minedu_userpassword">
            </div>
            <div class="alert alert-danger" *ngIf="userDataGroup.get('minedu_userpassword').touched && userDataGroup.get('minedu_userpassword').hasError('required')">
                Το πεδίο δεν μπορεί να αφεθεί κενό!
            </div>
42 43 44
            <div class="alert alert-danger" *ngIf="!validLogin">
                Λάθος όνομα χρήστη / κωδικός. Παρακαλώ προσπαθήστε ξανά.
            </div>
45 46

            <div *ngFor="let loginInfoToken$ of loginInfo$ | async; let i=index"></div>
47 48 49 50 51 52 53
              <div class="row" style="min-height: 300px; margin-top: 100px;">
              <!--<div *ngIf="!mineduUsername" class="col-md-8 offset-md-4">-->
              <div class="col-md-8 offset-md-4">
                    <button type="submit" class="btn-primary btn-lg" (click)="submitCredentials()" [disabled]="userDataGroup.invalid">
                    Είσοδος<span class="glyphicon glyphicon-menu-right"></span>
                    </button>
                </div>
54
            </div>
55

56 57 58 59 60
     </form>
  </div>
  `
})

61
export default class MinistryHome implements OnInit, OnDestroy {
62 63 64
    public userDataGroup: FormGroup;
    private authRole: string;
    private mineduUsername: string;
65 66
    //private mineduPassword: string;
    //private cuName: string;
67
    private validLogin: number;
68 69
    private loginInfo$: BehaviorSubject<ILoginInfo>;
    private loginInfoSub: Subscription;
70 71 72 73 74 75 76 77 78 79 80
    private apiEndPoint = API_ENDPOINT;

    constructor(private fb: FormBuilder,
        private _ata: LoginInfoActions,
        private _ngRedux: NgRedux<IAppState>,
        private _hds: HelperDataService,
        private http: Http,
        private router: Router
    ) {

        this.mineduUsername = '';
81
        //this.mineduPassword = '';
82
        this.authRole = '';
83
        //this.cuName = '';
84 85 86
        //this.validLogin = true;
        this.validLogin = 1;

87 88

        this.userDataGroup = this.fb.group({
89 90
          minedu_username: ['', [Validators.required]],
          minedu_userpassword: ['', [Validators.required]],
91 92
          cu_name: [''],
          auth_role: [''],
93
        });
94
        this.loginInfo$ = new BehaviorSubject(LOGININFO_INITIAL_STATE);
95 96 97
    };

    ngOnInit() {
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
        this.loginInfoSub = this._ngRedux.select('loginInfo')
            .subscribe(loginInfo => {
                let linfo = <ILoginInfo>loginInfo;
                if (linfo.size > 0) {
                    linfo.reduce(({}, loginInfoToken) => {
                        this.mineduUsername = loginInfoToken.minedu_username;
                        //this.mineduPassword = loginInfoToken.minedu_userpassword;
                        if (this.mineduUsername && this.mineduUsername.length > 0)
                            this.router.navigate(['/ministry/minister-settings']);
                        return loginInfoToken;
                    }, {});
                }
                this.loginInfo$.next(linfo);
            }, error => {console.log("error selecting loginInfo");});

    }
114

115 116
    ngOnDestroy() {
        if (this.loginInfoSub) this.loginInfoSub.unsubscribe();
117 118 119
    }

    submitCredentials() {
120
        this.validLogin = -1;
121 122
        let success = true;
        this._hds.sendMinisrtyCredentials(this.userDataGroup.value['minedu_username'],this.userDataGroup.value['minedu_userpassword'])
123
          .catch(err => {console.log(err); success = false; this.validLogin = 0; })
124 125 126
          .then(msg => {
            if (success)  {
              this.authRole = 'supervisor';
127
              this._hds.setMineduCurrentUser(this.userDataGroup.value['minedu_username'], this.userDataGroup.value['minedu_userpassword'],   this.authRole);
128

129
              this.validLogin = 1;
130 131
              this.userDataGroup.value['cu_name'] = this.userDataGroup.value['minedu_username'];
              this.userDataGroup.value['auth_role'] = 'supervisor';
132 133 134 135 136 137 138 139
              this._ata.saveMinEduloginInfo([this.userDataGroup.value]);
          }
          });
        }



}