@@ -58,4 +58,194 @@ public class SettingsController {
5858 }
5959 }
6060 }
61+
62+ // update fcm
63+ public func updateFCMToken( sub: String , fcmId: String , properties: Dictionary < String , String > , callback: @escaping ( Result < UpdateFCMTokenResponseEntity > ) -> Void ) {
64+ // null check
65+ if properties [ " DomainURL " ] == " " || properties [ " DomainURL " ] == nil {
66+ let error = WebAuthError . shared. propertyMissingException ( )
67+ // log error
68+ let loggerMessage = " Read properties failure : " + " Error Code - " + String( describing: error. errorCode) + " , Error Message - " + error. errorMessage + " , Status Code - " + String( describing: error. statusCode)
69+ logw ( loggerMessage, cname: " cidaas-sdk-error-log " )
70+
71+ DispatchQueue . main. async {
72+ callback ( Result . failure ( error: error) )
73+ }
74+ return
75+ }
76+
77+ // validating fields
78+ if ( sub == " " || fcmId == " " ) {
79+ let error = WebAuthError . shared. propertyMissingException ( )
80+ error. errorMessage = " sub or fcmId must not be empty "
81+ DispatchQueue . main. async {
82+ callback ( Result . failure ( error: error) )
83+ }
84+ return
85+ }
86+
87+ AccessTokenController . shared. getAccessToken ( sub: sub) {
88+ switch $0 {
89+ case . failure( let error) :
90+ DispatchQueue . main. async {
91+ callback ( Result . failure ( error: error) )
92+ }
93+ break
94+ case . success( let tokenResponse) :
95+ // call updateFCMToken
96+ SettingsService . shared. updateFCMToken ( accessToken: tokenResponse. data. access_token, fcmId: fcmId, properties: properties) {
97+ switch $0 {
98+ case . failure( let error) :
99+ // log error
100+ let loggerMessage = " Update FCM service failure : " + " Error Code - " + String( describing: error. errorCode) + " , Error Message - " + error. errorMessage + " , Status Code - " + String( describing: error. statusCode)
101+ logw ( loggerMessage, cname: " cidaas-sdk-error-log " )
102+
103+ // return failure callback
104+ DispatchQueue . main. async {
105+ callback ( Result . failure ( error: error) )
106+ }
107+ return
108+ case . success( let serviceResponse) :
109+ // log success
110+ let loggerMessage = " Update FCM service success : " + " Status code - " + String( describing: serviceResponse. status)
111+ logw ( loggerMessage, cname: " cidaas-sdk-success-log " )
112+
113+ // return callback
114+ DispatchQueue . main. async {
115+ callback ( Result . success ( result: serviceResponse) )
116+ }
117+ }
118+ }
119+ break
120+ }
121+ }
122+ }
123+
124+ // get pending notification list
125+ public func getPendingNotification( sub: String , properties: Dictionary < String , String > , callback: @escaping ( Result < PendingNotificationListResponseEntity > ) -> Void ) {
126+ // null check
127+ if properties [ " DomainURL " ] == " " || properties [ " DomainURL " ] == nil {
128+ let error = WebAuthError . shared. propertyMissingException ( )
129+ // log error
130+ let loggerMessage = " Read properties failure : " + " Error Code - " + String( describing: error. errorCode) + " , Error Message - " + error. errorMessage + " , Status Code - " + String( describing: error. statusCode)
131+ logw ( loggerMessage, cname: " cidaas-sdk-error-log " )
132+
133+ DispatchQueue . main. async {
134+ callback ( Result . failure ( error: error) )
135+ }
136+ return
137+ }
138+
139+ // validating fields
140+ if ( sub == " " ) {
141+ let error = WebAuthError . shared. propertyMissingException ( )
142+ error. errorMessage = " sub must not be empty "
143+ DispatchQueue . main. async {
144+ callback ( Result . failure ( error: error) )
145+ }
146+ return
147+ }
148+
149+ AccessTokenController . shared. getAccessToken ( sub: sub) {
150+ switch $0 {
151+ case . failure( let error) :
152+ DispatchQueue . main. async {
153+ callback ( Result . failure ( error: error) )
154+ }
155+ break
156+ case . success( let tokenResponse) :
157+ // getting userDeviceId
158+ let userDeviceId = DBHelper . shared. getUserDeviceId ( key: properties [ " DomainURL " ] ?? " OAuthUserDeviceId " )
159+
160+ // call getPendingNotificationList
161+ SettingsService . shared. getPendingNotificationList ( accessToken: tokenResponse. data. access_token, userDeviceId: userDeviceId, properties: properties) {
162+ switch $0 {
163+ case . failure( let error) :
164+ // log error
165+ let loggerMessage = " Get pending notification service failure : " + " Error Code - " + String( describing: error. errorCode) + " , Error Message - " + error. errorMessage + " , Status Code - " + String( describing: error. statusCode)
166+ logw ( loggerMessage, cname: " cidaas-sdk-error-log " )
167+
168+ // return failure callback
169+ DispatchQueue . main. async {
170+ callback ( Result . failure ( error: error) )
171+ }
172+ return
173+ case . success( let serviceResponse) :
174+ // log success
175+ let loggerMessage = " Get pending notification service success : " + " Status code - " + String( describing: serviceResponse. status)
176+ logw ( loggerMessage, cname: " cidaas-sdk-success-log " )
177+
178+ // return callback
179+ DispatchQueue . main. async {
180+ callback ( Result . success ( result: serviceResponse) )
181+ }
182+ }
183+ }
184+ break
185+ }
186+ }
187+ }
188+
189+ // deny notification request
190+ public func denyNotificationRequest( sub: String , statusId: String , rejectReason: String , properties: Dictionary < String , String > , callback: @escaping ( Result < DenyNotificationResponseEntity > ) -> Void ) {
191+ // null check
192+ if properties [ " DomainURL " ] == " " || properties [ " DomainURL " ] == nil {
193+ let error = WebAuthError . shared. propertyMissingException ( )
194+ // log error
195+ let loggerMessage = " Read properties failure : " + " Error Code - " + String( describing: error. errorCode) + " , Error Message - " + error. errorMessage + " , Status Code - " + String( describing: error. statusCode)
196+ logw ( loggerMessage, cname: " cidaas-sdk-error-log " )
197+
198+ DispatchQueue . main. async {
199+ callback ( Result . failure ( error: error) )
200+ }
201+ return
202+ }
203+
204+ // validating fields
205+ if ( sub == " " ) {
206+ let error = WebAuthError . shared. propertyMissingException ( )
207+ error. errorMessage = " sub must not be empty "
208+ DispatchQueue . main. async {
209+ callback ( Result . failure ( error: error) )
210+ }
211+ return
212+ }
213+
214+ AccessTokenController . shared. getAccessToken ( sub: sub) {
215+ switch $0 {
216+ case . failure( let error) :
217+ DispatchQueue . main. async {
218+ callback ( Result . failure ( error: error) )
219+ }
220+ break
221+ case . success( let tokenResponse) :
222+
223+ // call denyNotificationRequest
224+ SettingsService . shared. denyNotificationRequest ( accessToken: tokenResponse. data. access_token, statusId: statusId, rejectReason: rejectReason, properties: properties) {
225+ switch $0 {
226+ case . failure( let error) :
227+ // log error
228+ let loggerMessage = " Deny notification service failure : " + " Error Code - " + String( describing: error. errorCode) + " , Error Message - " + error. errorMessage + " , Status Code - " + String( describing: error. statusCode)
229+ logw ( loggerMessage, cname: " cidaas-sdk-error-log " )
230+
231+ // return failure callback
232+ DispatchQueue . main. async {
233+ callback ( Result . failure ( error: error) )
234+ }
235+ return
236+ case . success( let serviceResponse) :
237+ // log success
238+ let loggerMessage = " Deny notification service success : " + " Status code - " + String( describing: serviceResponse. status)
239+ logw ( loggerMessage, cname: " cidaas-sdk-success-log " )
240+
241+ // return callback
242+ DispatchQueue . main. async {
243+ callback ( Result . success ( result: serviceResponse) )
244+ }
245+ }
246+ }
247+ break
248+ }
249+ }
250+ }
61251}
0 commit comments