diff options
Diffstat (limited to 'catalog-ui/src/app/services/user-resource-service.ts')
-rw-r--r-- | catalog-ui/src/app/services/user-resource-service.ts | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/catalog-ui/src/app/services/user-resource-service.ts b/catalog-ui/src/app/services/user-resource-service.ts new file mode 100644 index 0000000000..b881e3a98a --- /dev/null +++ b/catalog-ui/src/app/services/user-resource-service.ts @@ -0,0 +1,103 @@ +'use strict'; +import {IUserProperties} from "../models/user"; +import {ICookie, IAppConfigurtaion} from "../models/app-config"; +import {CookieService} from "./cookie-service"; + +// Define an interface of the object you want to use, providing it's properties +export interface IUserResource extends IUserProperties,ng.resource.IResource<IUserResource> { + +} + +// Define your resource, adding the signature of the custom actions +export interface IUserResourceClass extends ng.resource.IResourceClass<IUserResource> { + authorize():IUserResource; + getLoggedinUser():IUserResource; + setLoggedinUser(user:IUserResource):void; + getAllUsers(success?:Function, error?:Function):Array<IUserResource>; + createUser(IResourceResource, success?:Function, error?:Function):void; + editUserRole(IResourceResource, success?:Function, error?:Function):void; + deleteUser(IResourceResource, success?:Function, error?:Function):void; +} + +export class UserResourceService { + + public static getResource = ($resource:ng.resource.IResourceService, + sdcConfig:IAppConfigurtaion, + cookieService:CookieService):IUserResourceClass => { + + let url:string = sdcConfig.api.root + sdcConfig.api.GET_user; + let authorizeUrl:string = sdcConfig.api.root + sdcConfig.api.GET_user_authorize; + let authorizeActionHeaders:any = {}; + let cookie:ICookie = sdcConfig.cookie; + authorizeActionHeaders[cookie.userFirstName] = cookieService.getFirstName(); + authorizeActionHeaders[cookie.userLastName] = cookieService.getLastName(); + authorizeActionHeaders[cookie.userEmail] = cookieService.getEmail(); + authorizeActionHeaders[cookie.userIdSuffix] = cookieService.getUserId(); + + // Define your custom actions here as IActionDescriptor + let authorizeAction:ng.resource.IActionDescriptor = { + method: 'GET', + isArray: false, + url: authorizeUrl, + headers: authorizeActionHeaders + }; + + let getAllUsers:ng.resource.IActionDescriptor = { + method: 'GET', + isArray: true, + url: sdcConfig.api.root + sdcConfig.api.GET_all_users + }; + + let editUserRole:ng.resource.IActionDescriptor = { + method: 'POST', + isArray: false, + url: sdcConfig.api.root + sdcConfig.api.POST_edit_user_role, + transformRequest: (data, headers)=> { + data.payloadData = undefined; + data.payloadName = undefined; + return JSON.stringify(data); + } + }; + + let deleteUser:ng.resource.IActionDescriptor = { + method: 'DELETE', + isArray: false, + url: sdcConfig.api.root + sdcConfig.api.DELETE_delete_user + }; + + let createUser:ng.resource.IActionDescriptor = { + method: 'POST', + isArray: false, + url: sdcConfig.api.root + sdcConfig.api.POST_create_user, + transformRequest: (data, headers)=> { + data.payloadData = undefined; + data.payloadName = undefined; + return JSON.stringify(data); + } + }; + let userResource:IUserResourceClass = <IUserResourceClass>$resource( + url, + {id: '@id'}, + { + authorize: authorizeAction, + getAllUsers: getAllUsers, + createUser: createUser, + editUserRole: editUserRole, + deleteUser: deleteUser + } + ); + + let _loggedinUser:IUserResource; + + userResource.getLoggedinUser = () => { + return _loggedinUser; + }; + + userResource.setLoggedinUser = (loggedinUser:IUserResource) => { + _loggedinUser = loggedinUser; + }; + + return userResource; + } +} +UserResourceService.getResource.$inject = ['$resource', 'sdcConfig', 'Sdc.Services.CookieService']; |