@@ -12,6 +12,9 @@ import LocationUpdateRequest from './../model/LocationUpdateRequest';
1212import LocationSLA from '../model/LocationSLA' ;
1313import LocationClosureResponse from '../model/LocationClosureResponse' ;
1414import LocationClosedDay from '../model/LocationClosedDay' ;
15+ import LocationSLAOperatingDay from '../model/LocationSLAOperatingDay' ;
16+ import LocationClosureRequest from '../model/LocationClosureRequest' ;
17+ import LocationSLAUpdateRequest from '../model/LocationSLAUpdateRequest' ;
1518
1619export default class LocationsService extends RestService {
1720
@@ -44,7 +47,22 @@ export default class LocationsService extends RestService {
4447 } ) ;
4548 return deferred . promise as any ;
4649 }
47-
50+ public updateSla ( locationId : string , sla : LocationSLAUpdateRequest ) : Promise < LocationSLA > {
51+ return new Promise ( ( resolve ) => {
52+ const requestUrl = `/${ Version . V1 } ${ Resource . LOCATIONS } /${ locationId } /sla` ;
53+ const options = {
54+ data : sla
55+ } ;
56+ this . client . put ( requestUrl , options , ( error , response , body ) => {
57+ const requestResponse : RequestCallbackParams = {
58+ error,
59+ response,
60+ body
61+ } ;
62+ resolve ( this . mapLocationSLAResponse ( requestUrl , requestResponse , this . EXPECTED_GET_OR_UPDATE_STATUS ) ) ;
63+ } ) ;
64+ } ) ;
65+ }
4866 public get ( locationId : string ) : Promise < Location > {
4967 const deferred = Q . defer < Location > ( ) ;
5068 const requestUrl = `/${ Version . V1 } ${ Resource . LOCATIONS } /${ locationId } ` ;
@@ -68,13 +86,34 @@ export default class LocationsService extends RestService {
6886 }
6987
7088 public getSla ( locationId : string ) : Promise < LocationSLA > {
71- const deferred = Q . defer < LocationSLA > ( ) ;
72- const requestUrl = `/${ Version . V1 } ${ Resource . LOCATIONS } /${ locationId } /sla` ;
73- this . client . get ( requestUrl , { } , ( error , response , body ) =>
74- this . mapResponseToPromise ( requestUrl , deferred , error , response , body , this . EXPECTED_GET_OR_UPDATE_STATUS ) ) ;
75- return deferred . promise as any ;
89+ return new Promise ( ( resolve ) => {
90+ const requestUrl = `/${ Version . V1 } ${ Resource . LOCATIONS } /${ locationId } /sla` ;
91+ this . client . get ( requestUrl , { } , ( error , response , body ) => {
92+ const requestResponse : RequestCallbackParams = {
93+ error,
94+ response,
95+ body
96+ } ;
97+ resolve ( this . mapLocationSLAResponse ( requestUrl , requestResponse , this . EXPECTED_GET_OR_UPDATE_STATUS ) ) ;
98+ } ) ;
99+ } ) ;
100+ }
101+ public updateClosures ( locationId : string , closedDates : LocationClosureRequest ) : Promise < LocationClosedDay [ ] > {
102+ return new Promise ( ( resolve ) => {
103+ const requestUrl = `/${ Version . V1 } ${ Resource . LOCATIONS } /${ locationId } /closures` ;
104+ const options = {
105+ data : closedDates
106+ } ;
107+ this . client . put ( requestUrl , options , ( error , response , body ) => {
108+ const requestResponse : RequestCallbackParams = {
109+ error,
110+ response,
111+ body
112+ } ;
113+ resolve ( this . mapLocationClosuresResponse ( requestUrl , requestResponse , this . EXPECTED_GET_OR_UPDATE_STATUS ) ) ;
114+ } ) ;
115+ } ) ;
76116 }
77-
78117 public getClosures ( locationId : string ) : Promise < LocationClosedDay [ ] > {
79118 return new Promise ( ( resolve ) => {
80119 const requestUrl = `/${ Version . V1 } ${ Resource . LOCATIONS } /${ locationId } /closures` ;
@@ -108,7 +147,25 @@ export default class LocationsService extends RestService {
108147 }
109148 } ) ;
110149 }
111-
150+ private mapLocationSLAResponse (
151+ requestUrl : string ,
152+ requestCallbackParams : RequestCallbackParams ,
153+ expectedStatusCode : number
154+ ) : Promise < LocationSLA > {
155+ return new Promise ( ( resolve , reject ) => {
156+ if ( requestCallbackParams . error ) {
157+ reject ( requestCallbackParams . error ) ;
158+ } else if ( requestCallbackParams . response . status === expectedStatusCode ) {
159+ const data : LocationSLA = requestCallbackParams . body as LocationSLA ;
160+ resolve ( this . formatLocationSLA ( data ) ) ;
161+ } else {
162+ const channelApeErrorResponse =
163+ GenerateApiError ( requestUrl , requestCallbackParams . response , requestCallbackParams . body ,
164+ this . EXPECTED_GET_OR_UPDATE_STATUS ) ;
165+ reject ( channelApeErrorResponse ) ;
166+ }
167+ } ) ;
168+ }
112169 private mapLocationClosuresResponse (
113170 requestUrl : string ,
114171 requestCallbackParams : RequestCallbackParams ,
@@ -140,4 +197,16 @@ export default class LocationsService extends RestService {
140197 locationClosedDay . updatedAt = new Date ( locationClosedDay . updatedAt ) ;
141198 return locationClosedDay as LocationClosedDay ;
142199 }
200+ private formatLocationSLA ( locationSla : LocationSLA ) : LocationSLA {
201+ locationSla . createdAt = new Date ( locationSla . createdAt ) ;
202+ locationSla . updatedAt = new Date ( locationSla . updatedAt ) ;
203+ locationSla . operatingDays = locationSla . operatingDays . map ( operatingDay =>
204+ this . locationSLAOperatingDay ( operatingDay ) ) ;
205+ return locationSla as LocationSLA ;
206+ }
207+ private locationSLAOperatingDay ( locationSLAOperatingDay : LocationSLAOperatingDay ) : LocationSLAOperatingDay {
208+ locationSLAOperatingDay . createdAt = new Date ( locationSLAOperatingDay . createdAt ) ;
209+ locationSLAOperatingDay . updatedAt = new Date ( locationSLAOperatingDay . updatedAt ) ;
210+ return locationSLAOperatingDay as LocationSLAOperatingDay ;
211+ }
143212}
0 commit comments