@@ -174,4 +174,115 @@ - (dispatch_queue_t)methodQueue
174174
175175}
176176
177+ RCT_EXPORT_METHOD (getTicketForm:(NSDictionary *)params featureFlags:(NSString *)flags successCallback:(RCTResponseSenderBlock)successCallback errorCallback:(RCTResponseSenderBlock)errorCallback) {
178+ // Android handled feature flags value in this API. iOS need to handle this
179+ [ZohoDeskPortalSDKTicket getForm: params headers: nil onCompletion: ^(TicketForm * _Nullable ticketForm, NSError * _Nullable error) {
180+ if (error) {
181+ errorCallback (@[@{@" error" : error.localizedDescription }]);
182+ return ;
183+ }
184+
185+ if (ticketForm) {
186+ // Convert the TicketForm object to NSDictionary
187+ NSDictionary *formDict = [RNZohoDeskPortalSDK dictionaryFromTicketForm: ticketForm];
188+ successCallback (@[formDict]);
189+ } else {
190+ errorCallback (@[@{@" error" : @" No ticket form available" }]);
191+ }
192+ }];
193+ }
194+
195+ RCT_EXPORT_METHOD (getTicketFields:(NSDictionary *)params featureFlags:(NSString *)flags successCallback:(RCTResponseSenderBlock)successCallback errorCallback:(RCTResponseSenderBlock)errorCallback) {
196+ // Android handle feature flags value in this API. iOS need to handle this
197+ [ZohoDeskPortalSDKTicket getFields: params onCompletion: ^(NSArray <ZDTicketField *> * _Nullable ticketFields, NSError * _Nullable error) {
198+ if (error) {
199+ errorCallback (@[@{@" error" : error.localizedDescription }]);
200+ return ;
201+ }
202+
203+ if (ticketFields) {
204+ NSArray *fieldsDictArray = [RNZohoDeskPortalSDK dictionaryFromTicketFieldArray: ticketFields];
205+ NSDictionary *fieldData = @{@" data" : fieldsDictArray};
206+ successCallback (@[fieldData]);
207+ } else {
208+ errorCallback (@[@{@" error" : @" No ticket fields available" }]);
209+ }
210+ }];
211+ }
212+
213+ // Convert TicketForm to NSDictionary
214+ + (NSDictionary *)dictionaryFromTicketForm : (TicketForm *)ticketForm {
215+ NSMutableArray *sectionsArray = [NSMutableArray array ];
216+
217+ for (FormSection *section in ticketForm.sections ) {
218+ NSDictionary *sectionDict = @{
219+ @" sectionName" : section.sectionName ,
220+ @" fields" : [self dictionaryFromTicketFieldArray: section.fields]
221+ };
222+ [sectionsArray addObject: sectionDict];
223+ }
224+
225+ NSDictionary *sections = @{@" sections" : sectionsArray};
226+
227+ return @{@" form" : sections};
228+ }
229+
230+ // Convert TicketField array to NSDictionary
231+ + (NSArray <NSDictionary *> *)dictionaryFromTicketFieldArray : (NSArray <ZDTicketField *> *)fields {
232+ NSMutableArray *fieldsArray = [NSMutableArray array ];
233+
234+ for (ZDTicketField *field in fields) {
235+ NSDictionary *fieldDict = @{
236+ @" displayLabel" : field.displayLabel ?: [NSNull null ],
237+ @" i18NLabel" : field.i18NLabel ?: [NSNull null ],
238+ @" apiName" : field.apiName ?: [NSNull null ],
239+ @" id" : field.id ?: [NSNull null ],
240+ @" name" : field.name ?: [NSNull null ],
241+ @" type" : field.type ,
242+ @" isMandatory" : @(field.isMandatory ),
243+ @" allowedValues" : field.allowedValues ?: [NSNull null ],
244+ @" dependency" : field.dependency ?: [NSNull null ],
245+ @" defaultValue" : field.defaultValue ?: [NSNull null ],
246+ @" toolTip" : field.toolTip ?: [NSNull null ],
247+ @" toolTipType" : field.toolTipType ?: [NSNull null ],
248+ @" sortBy" : field.sortBy ?: [NSNull null ],
249+ @" statusMapping" : [self dictionaryFromStatusMapping: field.statusMapping] ?: [NSNull null ],
250+ @" restoreOnReplyValues" : field.restoreOnReplyValues ?: [NSNull null ],
251+ @" roundingOption" : field.roundingOption ?: [NSNull null ],
252+ @" fieldName" : field.fieldName ?: [NSNull null ],
253+ @" uploadAttachment" : field.uploadAttachment ?: [NSNull null ],
254+ @" captchaURL" : field.captchaURL ?: [NSNull null ],
255+ @" isPHI" : @(field.isPHI ),
256+ @" isEncryptedField" : @(field.isEncryptedField ),
257+ @" isNested" : @(field.isNested ),
258+ @" isVisible" : @(field.isVisible ),
259+ @" maxLength" : @(field.maxLength ),
260+ @" precison" : @(field.precison ),
261+ @" decimals" : @(field.decimals ),
262+ @" isReadOnly" : @(field.isReadOnly ),
263+ @" isCustomField" : @(field.isCustomField )
264+ };
265+ [fieldsArray addObject: fieldDict];
266+ }
267+
268+ return fieldsArray;
269+ }
270+
271+ // Convert StatusMap array to NSDictionary
272+ + (NSArray <NSDictionary *> *)dictionaryFromStatusMapping : (NSArray <StatusMap *> *)statusMapping {
273+ NSMutableArray *statusArray = [NSMutableArray array ];
274+
275+ for (StatusMap *status in statusMapping) {
276+ NSDictionary *statusDict = @{
277+ @" mappingValue" : status.mappingValue ?: [NSNull null ],
278+ @" name" : status.name ?: [NSNull null ]
279+ };
280+ [statusArray addObject: statusDict];
281+ }
282+
283+ return statusArray;
284+ }
285+
286+
287+
177288@end
0 commit comments