import { Observable } from 'rxjs/Rx'; import { Injectable } from '@angular/core'; import { Http, RequestOptions } from '@angular/http'; import { SeCurisResourceServices } from './base'; var lic_example = { id: 101, activation_code: 'f3e2d27e-7f81-4ac7-87ba-b9e38b4fdbb8', code: 'CITR01-436-1', code_suffix: 1, created_by_id: '_client', creation_timestamp: 1445898088000, email: 'GQuercia@trican.ca', expiration_date: 1487523828000, full_name: 'George Quercia', licenseData: '{"appCode":"CICS","appName":"CurisIntegrity","licenseCode":"CITR01-436-1","activationCode":"f3e2d27e-7f81-4ac7-87ba-b9e38b4fdbb8","expirationDate":1487523828416,"arch":"amd64","osName":"Windows 7","macAddresses":["C4-D9-87-5D-53-72","C4-D9-87-5D-53-76","FC-15-B4-EB-70-F9"],"crcLogo":"10f6379e0e1c00ebc403160307e3c5d0aba0727c9cae0bf1ac7cd19d84fdc80f","metadata":{"a2Mode":"false","datasetPrefix":"TR","extendedMode":"false","maxConcurrentInstances":"-1","maxInstances":"3","maxUsers":"0","maxWellLifeLines":"50","timeThreshold":"0"},"signature":"cjyLYFyhXpWWsMNnG6ER9mtCREgw02aQDnXPSQQWZtiLWbu/GyHZzK+1msLhwuKMGYG6I90s5wp82HVIqhIheHOsov3JfnHgNtYzf3BdkqUinwPFuDqPqkXz5Sjb6bouWkmvTI1TN/s4U2DJOXVnYN4FnYl0/dBTcU9RP4NZlQxMu6oFuRrZSMfdMCxEJYZAU62SWgTSurkdmHhFgwRjIwsOXRWHYsr6vGT//yILI7UvMGbMc6dRCGwyJLPNi4nXwF9PRMLinB7fYK8HxKylTJx2O7bvWCZd6EOdwi6gRI/0HhOqZ7E4DzBDrqEnsHeuH4L47DfRdIMGDnA492F+mg=="}', modification_timestamp: 1484931828000, pack_code: 'CITR01', pack_id: 12, request_data: '{"appCode":"CICS","activationCode":"f3e2d27e-7f81-4ac7-87ba-b9e38b4fdbb8","arch":"amd64","osName":"Windows 7","macAddresses":["C4-D9-87-5D-53-72","C4-D9-87-5D-53-76","FC-15-B4-EB-70-F9"],"crcLogo":"10f6379e0e1c00ebc403160307e3c5d0aba0727c9cae0bf1ac7cd19d84fdc80f"}', status: 'AC' } export const PACK_STATUS = { CREATED: 'CR', ACTIVE: 'AC', ONHOLD: 'OH', EXPIRED: 'EX', CANCELLED: 'CA' } export const LIC_STATUS = { CREATED: 'CR', ACTIVE: 'AC', REQUESTED: 'RE', PREACTIVE: 'PA', EXPIRED: 'EX', BLOCKED: 'BL', CANCELLED: 'CA' } export const LIC_STATUSES = { 'CR': 'Created', 'AC': 'Active', 'PA': 'Pre-active', 'RE': 'Requested', 'EX': 'Expired', 'BL': 'Blocked', 'CA': 'Cancelled' }; /** * These transitions could be get from server, class License.Status, but * we copy them for simplicity, this info won't change easily */ export const LIC_ACTIONS_BY_STATUS = { edit: [LIC_STATUS.REQUESTED, LIC_STATUS.CREATED, LIC_STATUS.EXPIRED, LIC_STATUS.PREACTIVE, LIC_STATUS.ACTIVE, LIC_STATUS.CANCELLED, LIC_STATUS.BLOCKED], add_request: [LIC_STATUS.CREATED], activate: [LIC_STATUS.CREATED, LIC_STATUS.REQUESTED, LIC_STATUS.PREACTIVE], send: [LIC_STATUS.ACTIVE, LIC_STATUS.PREACTIVE], download: [LIC_STATUS.ACTIVE, LIC_STATUS.PREACTIVE], block: [LIC_STATUS.CANCELLED], unblock: [LIC_STATUS.BLOCKED], cancel: [LIC_STATUS.REQUESTED, LIC_STATUS.EXPIRED, LIC_STATUS.PREACTIVE, LIC_STATUS.ACTIVE], 'delete': [LIC_STATUS.CREATED, LIC_STATUS.CANCELLED, LIC_STATUS.BLOCKED] } @Injectable() export class LicensesService extends SeCurisResourceServices { constructor(http: Http) { super(http, 'license'); } public getByPack(packId: number) { let url = `${this.resource}?packId=${packId}`; return this.http.get(url).map(response => response.json()); } public activate(id: number) { return super.action(id, "activate"); } public cancel(id: number) { return super.action(id, "cancel"); } public putonhold(id: number) { return super.action(id, "putonhold"); } public isActionAvailable(action:string, lic:any) { var validStatuses = LIC_ACTIONS_BY_STATUS[action]; return lic && validStatuses && validStatuses.indexOf(lic.status) !== -1; } }