Toggle navigation
Toggle navigation
This project
Loading...
Sign in
open-source
/
warply_sdk_framework
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Authored by
Manos Chorianopoulos
2025-09-04 17:58:38 +0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
2781961eb961108f34a07d0ce8b8f43cb6a7f64e
2781961e
1 parent
dd5beaa0
update ProfileModel
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
281 additions
and
0 deletions
SwiftWarplyFramework/SwiftWarplyFramework/models/ProfileModel.swift
SwiftWarplyFramework/SwiftWarplyFramework/models/QuestionnaireAnswerModel.swift
SwiftWarplyFramework/SwiftWarplyFramework/models/ProfileModel.swift
View file @
2781961
...
...
@@ -39,6 +39,23 @@ public class ProfileModel: NSObject {
private
var
uuid
:
String
?
private
var
verified
:
Bool
?
// NEW: Missing API Response Fields
private
var
user_segments
:
[
String
]?
private
var
eligibility_type
:
String
?
private
var
favorite_couponsets
:
[
String
]?
private
var
user_id
:
String
?
private
var
is_eligible
:
Bool
?
private
var
questionnaire
:
[
String
:
Any
]?
private
var
user_answers
:
[
QuestionnaireAnswerModel
]?
private
var
questionnaire_answers
:
[
QuestionnaireAnswerModel
]?
// Enhanced profile_metadata fields
private
var
username
:
String
?
private
var
contract_accounts
:
[
String
]?
private
var
master_id
:
String
?
private
var
questionnaire_v2
:
[
String
:
Any
]?
private
var
answered_count
:
Int
?
// optin
private
var
optin_newsletter
:
Bool
?
private
var
optin_sms
:
Bool
?
...
...
@@ -83,6 +100,23 @@ public class ProfileModel: NSObject {
self
.
uuid
=
""
self
.
verified
=
false
// NEW: Missing API Response Fields
self
.
user_segments
=
[]
self
.
eligibility_type
=
""
self
.
favorite_couponsets
=
[]
self
.
user_id
=
""
self
.
is_eligible
=
false
self
.
questionnaire
=
[
String
:
Any
]()
self
.
user_answers
=
[]
self
.
questionnaire_answers
=
[]
// Enhanced profile_metadata fields
self
.
username
=
""
self
.
contract_accounts
=
[]
self
.
master_id
=
""
self
.
questionnaire_v2
=
[
String
:
Any
]()
self
.
answered_count
=
0
// optin
self
.
optin_newsletter
=
false
self
.
optin_sms
=
false
...
...
@@ -126,6 +160,28 @@ public class ProfileModel: NSObject {
self
.
uuid
=
dictionary
[
"uuid"
]
as?
String
?
??
""
self
.
verified
=
dictionary
[
"verified"
]
as?
Bool
?
??
false
// NEW: Missing API Response Fields
self
.
user_segments
=
dictionary
[
"user_segments"
]
as?
[
String
]
??
[]
self
.
eligibility_type
=
dictionary
[
"eligibility_type"
]
as?
String
??
""
self
.
favorite_couponsets
=
dictionary
[
"favorite_couponsets"
]
as?
[
String
]
??
[]
self
.
user_id
=
dictionary
[
"user_id"
]
as?
String
??
""
self
.
is_eligible
=
dictionary
[
"is_eligible"
]
as?
Bool
??
false
self
.
questionnaire
=
dictionary
[
"questionnaire"
]
as?
[
String
:
Any
]
??
[
String
:
Any
]()
// Parse user_answers array
if
let
userAnswersArray
=
dictionary
[
"user_answers"
]
as?
[[
String
:
Any
]]
{
self
.
user_answers
=
userAnswersArray
.
map
{
QuestionnaireAnswerModel
(
dictionary
:
$0
)
}
}
else
{
self
.
user_answers
=
[]
}
// Parse questionnaire_answers array
if
let
questionnaireAnswersArray
=
dictionary
[
"questionnaire_answers"
]
as?
[[
String
:
Any
]]
{
self
.
questionnaire_answers
=
questionnaireAnswersArray
.
map
{
QuestionnaireAnswerModel
(
dictionary
:
$0
)
}
}
else
{
self
.
questionnaire_answers
=
[]
}
// optin
let
optin
=
dictionary
[
"optin"
]
as?
[
String
:
Any
]?
??
[
""
:
""
]
self
.
optin_newsletter
=
optin
?[
"newsletter"
]
as?
Bool
?
??
false
...
...
@@ -149,12 +205,26 @@ public class ProfileModel: NSObject {
self
.
msisdnList
=
(
tempMsisdnList
??
[])
.
filter
{
$0
!=
""
}
self
.
answered
=
profile_metadata_parsed
[
"answered"
]
as?
Bool
?
??
false
self
.
nonTelco
=
profile_metadata_parsed
[
"nonTelco"
]
as?
Bool
?
??
false
// Enhanced profile_metadata fields
self
.
username
=
profile_metadata_parsed
[
"username"
]
as?
String
?
??
""
self
.
contract_accounts
=
profile_metadata_parsed
[
"contract_accounts"
]
as?
[
String
]
??
[]
self
.
master_id
=
profile_metadata_parsed
[
"master_id"
]
as?
String
?
??
""
self
.
questionnaire_v2
=
profile_metadata_parsed
[
"questionnaire_v2"
]
as?
[
String
:
Any
]
??
[
String
:
Any
]()
self
.
answered_count
=
profile_metadata_parsed
[
"answered_count"
]
as?
Int
?
??
0
}
else
{
self
.
profile_metadata
=
[
String
:
Any
]()
self
.
badge
=
""
self
.
msisdnList
=
[]
self
.
answered
=
false
self
.
nonTelco
=
false
// Enhanced profile_metadata fields defaults
self
.
username
=
""
self
.
contract_accounts
=
[]
self
.
master_id
=
""
self
.
questionnaire_v2
=
[
String
:
Any
]()
self
.
answered_count
=
0
print
(
"bad json"
)
}
}
catch
let
error
as
NSError
{
...
...
@@ -163,6 +233,13 @@ public class ProfileModel: NSObject {
self
.
msisdnList
=
[]
self
.
answered
=
false
self
.
nonTelco
=
false
// Enhanced profile_metadata fields defaults
self
.
username
=
""
self
.
contract_accounts
=
[]
self
.
master_id
=
""
self
.
questionnaire_v2
=
[
String
:
Any
]()
self
.
answered_count
=
0
print
(
error
)
}
...
...
@@ -172,6 +249,13 @@ public class ProfileModel: NSObject {
self
.
msisdnList
=
[]
self
.
answered
=
false
self
.
nonTelco
=
false
// Enhanced profile_metadata fields defaults
self
.
username
=
""
self
.
contract_accounts
=
[]
self
.
master_id
=
""
self
.
questionnaire_v2
=
[
String
:
Any
]()
self
.
answered_count
=
0
}
}
else
{
...
...
@@ -180,6 +264,13 @@ public class ProfileModel: NSObject {
self
.
msisdnList
=
[]
self
.
answered
=
false
self
.
nonTelco
=
false
// Enhanced profile_metadata fields defaults
self
.
username
=
""
self
.
contract_accounts
=
[]
self
.
master_id
=
""
self
.
questionnaire_v2
=
[
String
:
Any
]()
self
.
answered_count
=
0
}
}
...
...
@@ -364,6 +455,73 @@ public class ProfileModel: NSObject {
set
(
newValue
)
{
self
.
nonTelco
=
newValue
}
}
// MARK: - NEW Public Accessors for Missing API Response Fields
public
var
_user_segments
:
[
String
]
{
get
{
return
self
.
user_segments
??
[]
}
set
(
newValue
)
{
self
.
user_segments
=
newValue
}
}
public
var
_eligibility_type
:
String
{
get
{
return
self
.
eligibility_type
??
""
}
set
(
newValue
)
{
self
.
eligibility_type
=
newValue
}
}
public
var
_favorite_couponsets
:
[
String
]
{
get
{
return
self
.
favorite_couponsets
??
[]
}
set
(
newValue
)
{
self
.
favorite_couponsets
=
newValue
}
}
public
var
_user_id
:
String
{
get
{
return
self
.
user_id
??
""
}
set
(
newValue
)
{
self
.
user_id
=
newValue
}
}
public
var
_is_eligible
:
Bool
{
get
{
return
self
.
is_eligible
??
false
}
set
(
newValue
)
{
self
.
is_eligible
=
newValue
}
}
public
var
_questionnaire
:
[
String
:
Any
]
{
get
{
return
self
.
questionnaire
??
[
String
:
Any
]()
}
set
(
newValue
)
{
self
.
questionnaire
=
newValue
}
}
public
var
_user_answers
:
[
QuestionnaireAnswerModel
]
{
get
{
return
self
.
user_answers
??
[]
}
set
(
newValue
)
{
self
.
user_answers
=
newValue
}
}
public
var
_questionnaire_answers
:
[
QuestionnaireAnswerModel
]
{
get
{
return
self
.
questionnaire_answers
??
[]
}
set
(
newValue
)
{
self
.
questionnaire_answers
=
newValue
}
}
// MARK: - Enhanced profile_metadata Public Accessors
public
var
_username
:
String
{
get
{
return
self
.
username
??
""
}
set
(
newValue
)
{
self
.
username
=
newValue
}
}
public
var
_contract_accounts
:
[
String
]
{
get
{
return
self
.
contract_accounts
??
[]
}
set
(
newValue
)
{
self
.
contract_accounts
=
newValue
}
}
public
var
_master_id
:
String
{
get
{
return
self
.
master_id
??
""
}
set
(
newValue
)
{
self
.
master_id
=
newValue
}
}
public
var
_questionnaire_v2
:
[
String
:
Any
]
{
get
{
return
self
.
questionnaire_v2
??
[
String
:
Any
]()
}
set
(
newValue
)
{
self
.
questionnaire_v2
=
newValue
}
}
public
var
_answered_count
:
Int
{
get
{
return
self
.
answered_count
??
0
}
set
(
newValue
)
{
self
.
answered_count
=
newValue
}
}
// MARK: - Computed Properties
public
var
fullName
:
String
{
let
first
=
firstname
??
""
...
...
SwiftWarplyFramework/SwiftWarplyFramework/models/QuestionnaireAnswerModel.swift
0 → 100644
View file @
2781961
//
// QuestionnaireAnswerModel.swift
// SwiftWarplyFramework
//
// Created by Warply on 04/09/2025.
//
import
Foundation
@objc
public
class
QuestionnaireAnswerModel
:
NSObject
{
// MARK: - Private Properties
private
var
_question_id
:
String
?
private
var
_question_text
:
String
?
private
var
_answer
:
Any
?
// Can be String or [String]
private
var
_answer_id
:
String
?
private
var
_answer_text
:
String
?
// MARK: - Public Accessors
@objc
public
var
question_id
:
String
{
get
{
return
_question_id
??
""
}
set
{
_question_id
=
newValue
}
}
@objc
public
var
question_text
:
String
{
get
{
return
_question_text
??
""
}
set
{
_question_text
=
newValue
}
}
@objc
public
var
answer_id
:
String
{
get
{
return
_answer_id
??
""
}
set
{
_answer_id
=
newValue
}
}
@objc
public
var
answer_text
:
String
{
get
{
return
_answer_text
??
""
}
set
{
_answer_text
=
newValue
}
}
// MARK: - Answer Handling (Mixed Types)
@objc
public
var
answerAsString
:
String
{
if
let
stringAnswer
=
_answer
as?
String
{
return
stringAnswer
}
else
if
let
arrayAnswer
=
_answer
as?
[
String
]
{
return
arrayAnswer
.
joined
(
separator
:
", "
)
}
return
""
}
@objc
public
var
answerAsArray
:
[
String
]
{
if
let
arrayAnswer
=
_answer
as?
[
String
]
{
return
arrayAnswer
}
else
if
let
stringAnswer
=
_answer
as?
String
{
return
[
stringAnswer
]
}
return
[]
}
@objc
public
var
rawAnswer
:
Any
?
{
return
_answer
}
// MARK: - Initializers
@objc
public
override
init
()
{
super
.
init
()
}
@objc
public
init
(
dictionary
:
[
String
:
Any
])
{
super
.
init
()
if
let
questionId
=
dictionary
[
"question_id"
]
as?
String
{
self
.
_question_id
=
questionId
}
if
let
questionText
=
dictionary
[
"question_text"
]
as?
String
{
self
.
_question_text
=
questionText
}
if
let
answerId
=
dictionary
[
"answer_id"
]
as?
String
{
self
.
_answer_id
=
answerId
}
if
let
answerText
=
dictionary
[
"answer_text"
]
as?
String
{
self
.
_answer_text
=
answerText
}
// Handle mixed answer types (String or [String])
if
let
answer
=
dictionary
[
"answer"
]
{
self
.
_answer
=
answer
}
}
// MARK: - Utility Methods
@objc
public
func
toDictionary
()
->
[
String
:
Any
]
{
var
dict
:
[
String
:
Any
]
=
[:]
if
let
questionId
=
_question_id
{
dict
[
"question_id"
]
=
questionId
}
if
let
questionText
=
_question_text
{
dict
[
"question_text"
]
=
questionText
}
if
let
answerId
=
_answer_id
{
dict
[
"answer_id"
]
=
answerId
}
if
let
answerText
=
_answer_text
{
dict
[
"answer_text"
]
=
answerText
}
if
let
answer
=
_answer
{
dict
[
"answer"
]
=
answer
}
return
dict
}
@objc
public
var
description
:
String
{
return
"QuestionnaireAnswerModel(question_id:
\(
question_id
)
, question_text:
\(
question_text
)
, answer:
\(
answerAsString
)
, answer_id:
\(
answer_id
)
, answer_text:
\(
answer_text
)
)"
}
}
Please
register
or
login
to post a comment