blob: 4ded0ed962a75e6763e252762859eb4fb73931f3 [file] [log] [blame]
/********************************************************************************
* Copyright (c) 2015-2020 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
********************************************************************************/
import {Injectable} from '@angular/core';
import {Http, Response, Headers, RequestOptions} from '@angular/http';
import {catchError, map} from 'rxjs/operators';
import {HttpErrorHandler} from '../core/http-error-handler';
import {PropertyService} from '../core/property.service';
import { TRANSLATE } from '../core/mdm-core.module';
@Injectable()
export class FilereleaseService {
url: string;
stateMap = new Array();
formatMap = new Array();
month = new Array();
constructor(private http: Http,
private httpErrorHandler: HttpErrorHandler,
private prop: PropertyService) {
this.url = prop.getUrl('mdm/filereleases');
this.formatMap['PAK2RAW'] = TRANSLATE('filerelease.filerelease.format-pak2raw');
this.formatMap['PAK2ATFX'] = TRANSLATE('filerelease.filerelease.format-pak2atfx');
this.stateMap['RELEASE_ORDERED'] = TRANSLATE('filerelease.filerelease.state-release-ordered');
this.stateMap['RELEASE_APPROVED'] = TRANSLATE('filerelease.filerelease.state-release-approved');
this.stateMap['RELEASE_RELEASED'] = TRANSLATE('filerelease.filerelease.state-release-released');
this.stateMap['RELEASE_EXPIRED'] = TRANSLATE('filerelease.filerelease.state-release-expired');
this.stateMap['RELEASE_PROGRESSING_ERROR'] = TRANSLATE('filerelease.filerelease.state-release-processing-error');
this.stateMap['RELEASE_PROGRESSING'] = TRANSLATE('filerelease.filerelease.state-release-in-process');
this.stateMap['RELEASE_REJECTED'] = TRANSLATE('filerelease.filerelease.state-release-declined');
this.month[0] = '1';
this.month[1] = '2';
this.month[2] = '3';
this.month[3] = '4';
this.month[4] = '5';
this.month[5] = '6';
this.month[6] = '7';
this.month[7] = '8';
this.month[8] = '9';
this.month[9] = '10';
this.month[10] = '11';
this.month[11] = '12';
}
readAll() {
return this.read('');
}
readIncomming() {
return this.read('?direction=incomming');
}
readOutgoging() {
return this.read('?direction=outgoing');
}
create(release: Release) {
let body = JSON.stringify(release);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.url, body, options).pipe(
map(this.extractData),
catchError(this.httpErrorHandler.handleError));
}
delete(release: Release) {
return this.http.delete(this.url + '/' + release.identifier).pipe(
catchError(this.httpErrorHandler.handleError));
}
approve(release: Release) {
release.state = 'RELEASE_APPROVED';
return this.update(release).pipe(
catchError(this.httpErrorHandler.handleError));
}
reject(release: Release) {
release.state = 'RELEASE_REJECTED';
return this.update(release).pipe(
catchError(this.httpErrorHandler.handleError));
}
formatDate(date) {
let d = new Date(date);
let day = d.getDate();
let month = this.month[d.getMonth()];
let year = d.getFullYear();
let hours = (d.getHours() < 10 ? '0' : '') + d.getHours();
let min = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes();
let sec = (d.getSeconds() < 10 ? '0' : '') + d.getSeconds();
return day + '.' + month + '.' + year + ' ' + hours + ':' + min + ':' + sec;
}
private read(query: string) {
return this.http.get(this.url + query).pipe(
map(res => <Release[]> res.json().data),
catchError(this.httpErrorHandler.handleError));
}
private update(release: Release) {
let body = JSON.stringify(release);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.url + '/' + release.identifier, body, options).pipe(
map(this.extractData),
catchError(this.httpErrorHandler.handleError));
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
}
export class Release {
identifier: string;
state: string;
name: string;
sourceName: string;
typeName: string;
id: string;
sender: string;
receiver: string;
orderMessage: string;
rejectMessage: string;
errorMessage: string;
format: string;
fileLink: string;
validity: number;
expire: number;
}