AutorÃa | Ultima modificación | Ver Log |
//// DataService.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/27/22.//import Foundationimport SwiftyJSONclass DataService{func completeCapsule(topicModel : TopicModel, capsuleModel : CapsuleModel){let now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICElet dateOn = dateFormatter.string(from: now)let preference = Preference.sharedInstancelet userUuid = preference.userUuidvar json : [String: Any]var sync : SyncModelvar userLog : UserLogModellet syncDao = SyncDao()let progressDao = ProgressDao()let userLogDao = UserLogDao()var progressCapsule = progressDao.selectByCapsuleUuidAndUserUuid(capsuleUuid: capsuleModel.uuid, userUuid: userUuid)if progressCapsule.id > 0 && progressCapsule.progress >= 100 {progressCapsule.completed = 1progressCapsule.updatedOn = dateOnprogressDao.update(record: progressCapsule)json = progressCapsule.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_PROGRESSsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);userLog = UserLogModel()userLog.userUuid = userUuiduserLog.companyUuid = topicModel.companyUuiduserLog.topicUuid = topicModel.uuiduserLog.capsuleUuid = capsuleModel.uuiduserLog.activity = Constants.USER_LOG_ACTIVITY_COMPLETED_CAPSULEuserLog.addedOn = dateOnuserLogDao.insert(record: userLog)json = userLog.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_USER_LOGsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);}}func completeTopic(topicModel : TopicModel, capsuleModel : CapsuleModel){let now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICElet dateOn = dateFormatter.string(from: now)let preference = Preference.sharedInstancelet userUuid = preference.userUuidvar json : [String: Any]var sync : SyncModelvar userLog : UserLogModellet syncDao = SyncDao()let progressDao = ProgressDao()let userLogDao = UserLogDao()var progressCapsule = progressDao.selectByCapsuleUuidAndUserUuid(capsuleUuid: capsuleModel.uuid, userUuid: userUuid)if progressCapsule.id > 0 && progressCapsule.progress >= 100 {progressCapsule.completed = 1progressCapsule.updatedOn = dateOnprogressDao.update(record: progressCapsule)json = progressCapsule.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_PROGRESSsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);userLog = UserLogModel()userLog.userUuid = userUuiduserLog.companyUuid = topicModel.companyUuiduserLog.topicUuid = topicModel.uuiduserLog.capsuleUuid = capsuleModel.uuiduserLog.activity = Constants.USER_LOG_ACTIVITY_COMPLETED_CAPSULEuserLog.addedOn = dateOnuserLogDao.insert(record: userLog)json = userLog.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_USER_LOGsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);}var progressTopic = progressDao.selectByTopicUuidAndUserUuid(topicUuid: topicModel.uuid, userUuid: userUuid)if progressTopic.id > 0 && progressTopic.progress >= 100 {progressTopic.completed = 1progressTopic.updatedOn = dateOnprogressDao.update(record: progressTopic)json = progressCapsule.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_PROGRESSsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);userLog = UserLogModel()userLog.userUuid = userUuiduserLog.companyUuid = topicModel.companyUuiduserLog.topicUuid = topicModel.uuiduserLog.activity = Constants.USER_LOG_ACTIVITY_COMPLETED_TOPICuserLog.addedOn = dateOnuserLogDao.insert(record: userLog)json = userLog.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_USER_LOGsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);}}func incompleteSlide (slide: SlideModel){print("Notification: \(Constants.NOTIFICATION_NAME_INCOMPLETED_SLIDE) ")NotificationCenter.default.post(name:Constants.NOTIFICATION_NAME_INCOMPLETED_SLIDE,object: nil, userInfo: ["slideUuid": slide.uuid])}func completeSlide( slide : SlideModel){var changeProgress = falselet now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICElet dateOn = dateFormatter.string(from: now)let slideDao = SlideDao()let capsuleDao = CapsuleDao()let capsule = capsuleDao.selectByUuid(uuid: slide.capsuleUuid)let topicDao = TopicDao()let topic = topicDao.selectByUuid(uuid: slide.topicUuid)let preference = Preference.sharedInstancelet userUuid = preference.userUuidvar json : [String: Any]var sync : SyncModelvar userLog : UserLogModellet syncDao = SyncDao()let progressDao = ProgressDao()let userLogDao = UserLogDao()var progressSlide = progressDao.selectBySlideUuidAndUserUuid(slideUuid: slide.uuid, userUuid: userUuid)var progressCapsule = progressDao.selectByCapsuleUuidAndUserUuid(capsuleUuid: slide.capsuleUuid, userUuid: userUuid)var progressTopic = progressDao.selectByTopicUuidAndUserUuid(topicUuid: slide.topicUuid, userUuid: userUuid)if progressTopic.id == 0 {userLog = UserLogModel()userLog.userUuid = userUuiduserLog.companyUuid = topic.companyUuiduserLog.topicUuid = topic.uuiduserLog.activity = Constants.USER_LOG_ACTIVITY_START_TOPICuserLog.addedOn = dateOnuserLogDao.insert(record: userLog)json = userLog.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_USER_LOGsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);}if progressCapsule.id == 0 {userLog = UserLogModel()userLog.userUuid = userUuiduserLog.companyUuid = topic.companyUuiduserLog.topicUuid = topic.uuiduserLog.capsuleUuid = capsule.uuiduserLog.activity = Constants.USER_LOG_ACTIVITY_START_CAPSULEuserLog.addedOn = dateOnuserLogDao.insert(record: userLog)json = userLog.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_USER_LOGsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);}if progressSlide.id == 0 {progressSlide.userUuid = userUuidprogressSlide.companyUuid = topic.companyUuidprogressSlide.topicUuid = topic.uuidprogressSlide.capsuleUuid = capsule.uuidprogressSlide.slideUuid = slide.uuidprogressSlide.viewSlides = 0progressSlide.totalSlides = 0progressSlide.progress = 0progressSlide.type = Constants.PROGRESS_TYPE_SLIDEprogressSlide.returning = 0progressSlide.returningAfterCompleted = 0progressSlide.completed = 1progressSlide.addedOn = dateOnprogressSlide.updatedOn = dateOnprogressDao.insert(record: progressSlide)changeProgress = true} else {if progressCapsule.id > 0 && progressCapsule.completed == 1 {progressSlide.returningAfterCompleted = progressSlide.returningAfterCompleted + 1progressSlide.updatedOn = dateOnprogressDao.update(record: progressSlide)}}json = progressSlide.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_PROGRESSsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);userLog = UserLogModel()userLog.userUuid = userUuiduserLog.companyUuid = topic.companyUuiduserLog.topicUuid = topic.uuiduserLog.capsuleUuid = capsule.uuiduserLog.slideUuid = slide.uuiduserLog.activity = slide.type == Constants.SLIDE_TYPE_QUIZ ? Constants.USER_LOG_ACTIVITY_APPROVED_TEST : Constants.USER_LOG_ACTIVITY_VIEW_SLIDEuserLog.addedOn = dateOnuserLogDao.insert(record: userLog)json = userLog.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_USER_LOGsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);if changeProgress {var totalSlides = slideDao.getCountByCapsuleUuid(capsuleUuid: slide.capsuleUuid)var totalViews = progressDao.getCountSlideCompletedByCapsuleUuidAndUserUuid(capsuleUuid: slide.capsuleUuid, userUuid: userUuid)var progress = totalSlides > 0 ? ((totalViews * 100) / totalSlides) : 0if progressCapsule.id == 0 {progressCapsule = ProgressModel()progressCapsule.userUuid = userUuidprogressCapsule.companyUuid = topic.companyUuidprogressCapsule.topicUuid = slide.topicUuidprogressCapsule.capsuleUuid = slide.capsuleUuidprogressCapsule.type = Constants.PROGRESS_TYPE_CAPSULEprogressCapsule.addedOn = dateOnprogressCapsule.updatedOn = dateOnprogressCapsule.viewSlides = totalViewsprogressCapsule.totalSlides = totalSlidesprogressCapsule.progress = Double(progress)progressDao.insert(record: progressCapsule)} else {progressCapsule.updatedOn = dateOnprogressCapsule.viewSlides = totalViewsprogressCapsule.totalSlides = totalSlidesprogressCapsule.progress = Double(progress)if progressCapsule.completed == 1 && slide.capsuleUuid != preference.capsuleUuidOld {progressCapsule.returningAfterCompleted = progressCapsule.returningAfterCompleted + 1progressDao.update(record: progressCapsule)let preference = Preference.sharedInstancepreference.capsuleUuidOld = slide.capsuleUuidpreference.save()} else {progressDao.update(record: progressCapsule)}}json = progressSlide.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_PROGRESSsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);totalSlides = slideDao.getCountByTopicUuid(topicUuid: slide.topicUuid)totalViews = progressDao.getCountSlideCompletedByTopicUuidAndUserUuid(topicUuid: slide.topicUuid, userUuid: userUuid)progress = totalSlides > 0 ? ((totalViews * 100) / totalSlides) : 0if progressTopic.id == 0 {progressTopic = ProgressModel()progressTopic.userUuid = userUuidprogressTopic.companyUuid = topic.companyUuidprogressTopic.topicUuid = slide.topicUuidprogressTopic.type = Constants.PROGRESS_TYPE_TOPICprogressTopic.addedOn = dateOnprogressTopic.updatedOn = dateOnprogressTopic.viewSlides = totalViewsprogressTopic.totalSlides = totalSlidesprogressTopic.progress = Double(progress)progressDao.insert(record: progressTopic)} else {progressTopic.updatedOn = dateOnprogressTopic.viewSlides = totalViewsprogressTopic.totalSlides = totalSlidesprogressTopic.progress = Double(progress)progressDao.update(record: progressTopic)}json = progressSlide.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_MICROLEARNING_PROGRESSsync = SyncModel();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}syncDao.insert(record : sync);}print("Notification: \(Constants.NOTIFICATION_NAME_COMPLETED_SLIDE) ")NotificationCenter.default.post(name:Constants.NOTIFICATION_NAME_COMPLETED_SLIDE,object: nil, userInfo: ["slideUuid": slide.uuid])if (changeProgress) {print("Notification: \(Constants.NOTIFICATION_NAME_CHANGE_PERCENTAJE_COMPLETED_CAPSULE) ")NotificationCenter.default.post(name: Constants.NOTIFICATION_NAME_CHANGE_PERCENTAJE_COMPLETED_CAPSULE, object: nil, userInfo:["capsuleUuid": slide.capsuleUuid])print("Notification: \(Constants.NOTIFICATION_NAME_CHANGE_PERCENTAJE_COMPLETED_TOPIC) ")NotificationCenter.default.post(name: Constants.NOTIFICATION_NAME_CHANGE_PERCENTAJE_COMPLETED_TOPIC, object: nil, userInfo:["topicUuid": slide.topicUuid])}}public func syncFromServer(json : JSON?) -> Bool{let preference = Preference.sharedInstancelet companyDao = CompanyDao()let topicDao = TopicDao()let capsuleDao = CapsuleDao()let slideDao = SlideDao()let quizDao = QuizDao()let questionDao = QuestionDao()let answerDao = AnswerDao()let userLogDao = UserLogDao()let progressDao = ProgressDao()let userExtendedDao = UserExtendedDao()answerDao.removeAll()questionDao.removeAll()quizDao.removeAll()slideDao.removeAll()capsuleDao.removeAll()topicDao.removeAll()companyDao.removeAll()userLogDao.removeAll()progressDao.removeAll()userExtendedDao.removeAll()var companyModel : CompanyModellet now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICEif(json?["data"]["max_date_changes"] != "") {let maxDateChanges = json?["data"]["max_date_changes"].string ?? ""print("maxDateChanges : \(maxDateChanges)")preference.maxDateChanges = maxDateChanges}if(json?["data"]["device"] != "") {let deviceAes = json?["data"]["device"]["aes"].string ?? ""let devicePassword = json?["data"]["device"]["password"].string ?? ""print("deviceAes: \(deviceAes)")print("devicePassword: \(devicePassword)")preference.aes = deviceAespreference.password = devicePassword}if(json?["data"]["user"] != "") {let userUuid = json?["data"]["user"]["uuid"].string ?? ""let userFirstName = json?["data"]["user"]["first_name"].string ?? ""let userLastName = json?["data"]["user"]["last_name"].string ?? ""let userEmail = json?["data"]["user"]["email"].string ?? ""let userImage = json?["data"]["user"]["image"].string ?? ""print("userUuid : \(userUuid)")print("userFirstName : \(userFirstName)")print("userLastName: \(userLastName)")print("userEmail : \(userEmail)")print("userImage : \(userImage)")preference.userUuid = userUuidpreference.firstName = userFirstNamepreference.lastName = userLastNamepreference.email = userEmailpreference.image = userImage}preference.topicUuidActive = Constants.PREFERENCE_EMPTY_IDpreference.capsuleUuidActive = Constants.PREFERENCE_EMPTY_IDpreference.slideUuidActive = Constants.PREFERENCE_EMPTY_IDpreference.save()if json?["data"]["topics"] != "" {var topicModel : TopicModelvar capsuleModel : CapsuleModelvar slideModel : SlideModelfor topic in json!["data"]["topics"]{companyModel = CompanyModel()companyModel.uuid = topic.1["company_uuid"].string ?? ""companyModel.name = topic.1["company_name"].string ?? ""companyModel.image = topic.1["company_image"].string ?? ""print("companyUuid : \(companyModel.uuid)")print("companyName : \(companyModel.name)")print("companyImage : \(companyModel.image)")let company = companyDao.selectByUuid(uuid: companyModel.uuid)if(company.uuid.isEmpty) {companyDao.insert(company: companyModel)} else {companyDao.update(company: companyModel)}topicModel = TopicModel()topicModel.companyUuid = companyModel.uuidtopicModel.uuid = topic.1["uuid"].string ?? ""topicModel.name = topic.1["name"].string ?? ""topicModel.description = topic.1["description"].string ?? ""topicModel.image = topic.1["image"].string ?? ""topicModel.position = Int(topic.1["position"].string ?? "") ?? 1print("topiccompanyUuid: \(topicModel.companyUuid)")print("topicUuid: \(topicModel.uuid)")print("topicName: \(topicModel.name)")print("topicDescription: \(topicModel.description)")print("topicImage: \(topicModel.image)")print("topicPosition: \(topicModel.position)")// Insert Topics in DBtopicDao.insert(topic: topicModel)for capsule in topic.1["capsules"]{capsuleModel = CapsuleModel()capsuleModel.topicUuid = topicModel.uuidcapsuleModel.uuid = capsule.1["uuid"].string ?? ""capsuleModel.name = capsule.1["name"].string ?? ""capsuleModel.description = capsule.1["description"].string ?? ""capsuleModel.image = capsule.1["image"].string ?? ""capsuleModel.position = Int(capsule.1["position"].string ?? "") ?? 1print("capsuletopicUuid: \(capsuleModel.topicUuid)")print("capsuleUuid: \(capsuleModel.uuid)")print("capsuleName: \(capsuleModel.name)")print("capsuleDescription: \(capsuleModel.description)")print("capsuleImage: \(capsuleModel.image)")print("capsulePosition: \(capsuleModel.position)")// Insert Capsules in DBcapsuleDao.insert(capsule: capsuleModel)for slide in capsule.1["slides"]{slideModel = SlideModel()slideModel.topicUuid = capsuleModel.topicUuidslideModel.capsuleUuid = capsuleModel.uuidslideModel.uuid = slide.1["uuid"].string ?? ""slideModel.quizUuid = slide.1["quiz_uuid"].string ?? ""slideModel.name = slide.1["name"].string ?? ""slideModel.description = slide.1["description"].string ?? ""slideModel.position = Int(slide.1["position"].string ?? "") ?? 1slideModel.background = slide.1["background"].string ?? ""slideModel.file = slide.1["file"].string ?? ""slideModel.type = slide.1["type"].string ?? ""print("slidetopicUuid: \(slideModel.topicUuid)")print("slidecapsuleUuid: \(slideModel.capsuleUuid)")print("slideUuid: \(slideModel.uuid)")print("slideQuizUuid: \(slideModel.quizUuid)")print("slideName: \(slideModel.name)")print("slideDescription: \(slideModel.description)")print("slidePosition: \(slideModel.position)")print("slideBackground: \(slideModel.background)")print("slideFile: \(slideModel.file)")print("slideTye: \(slideModel.type)")// Insert Slides in DBslideDao.insert(slide: slideModel)}}}}if json?["data"]["quizzes"] != "" {var quizModel : QuizModelvar questionModel : QuestionModelvar answerModel : AnswerModelfor quiz in json!["data"]["quizzes"]{companyModel = CompanyModel()companyModel.uuid = quiz.1["company_uuid"].string ?? ""companyModel.name = quiz.1["company_name"].string ?? ""companyModel.image = quiz.1["company_image"].string ?? ""print("companyUuid : \(companyModel.uuid)")print("companyName : \(companyModel.name)")print("companyImage : \(companyModel.image)")let company = companyDao.selectByUuid(uuid: companyModel.uuid)if(company.uuid.isEmpty) {companyDao.insert(company: companyModel)} else {companyDao.update(company: companyModel)}quizModel = QuizModel()quizModel.companyUuid = company.uuidquizModel.uuid = quiz.1["uuid"].string ?? ""quizModel.name = quiz.1["name"].string ?? ""quizModel.text = quiz.1["text"].string ?? ""quizModel.failed = quiz.1["failed"].string ?? ""quizModel.points = Int(quiz.1["points"].string ?? "") ?? 0quizModel.minimumPointsRequired = Int(quiz.1["minimum_points_required"].string ?? "") ?? 0quizModel.maxTime = Int(quiz.1["max_time"].string ?? "") ?? 0print("quizcompanyUuid: \(quizModel.companyUuid)")print("quizUuid: \(quizModel.uuid)")print("quizName: \(quizModel.name)")print("quizText: \(quizModel.text)")print("quizFailed: \(quizModel.failed)")print("quizPoints: \(quizModel.points)")print("quizMinimumPointsRequired: \(quizModel.minimumPointsRequired)")print("quizMaxTime: \(quizModel.maxTime)")quizDao.insert(quiz: quizModel)for question in quiz.1["questions"]{questionModel = QuestionModel()questionModel.quizUuid = quizModel.uuidquestionModel.uuid = question.1["uuid"].string ?? ""questionModel.text = question.1["text"].string ?? ""questionModel.type = question.1["type"].string ?? ""questionModel.points = Int(question.1["points"].string ?? "") ?? 0questionModel.max_length = Int(question.1["maxlength"].string ?? "") ?? 0print("questionQuizUuid: \(questionModel.quizUuid)")print("questionId: \(questionModel.uuid)")print("questionText: \(questionModel.text)")print("questionType: \(questionModel.type)")print("questionPoints: \(questionModel.points)")print("questionMaxLength: \(questionModel.max_length)")questionDao.insert(question: questionModel)for answer in question.1["answers"]{answerModel = AnswerModel()answerModel.questionUuid = questionModel.uuidanswerModel.uuid = answer.1["uuid"].string ?? ""answerModel.text = answer.1["text"].string ?? ""answerModel.correct = Int(answer.1["correct"].string ?? "") ?? 0answerModel.points = Int(answer.1["points"].string ?? "") ?? 0print("answerQuestionUuid: \(answerModel.questionUuid)")print("answerId: \(answerModel.uuid)")print("answerText: \(answerModel.text)")print("answerCorrect: \(answerModel.correct)")answerDao.insert(answer: answerModel)}}}}if json?["data"]["userlog"] != "" {var userLogModel : UserLogModelfor userlog in json!["data"]["userlog"]{userLogModel = UserLogModel()userLogModel.companyUuid = userlog.1["company_uuid"].string ?? ""userLogModel.userUuid = userlog.1["user_uuid"].string ?? ""userLogModel.topicUuid = userlog.1["topic_uuid"].string ?? ""userLogModel.capsuleUuid = userlog.1["capsule_uuid"].string ?? ""userLogModel.slideUuid = userlog.1["slide_uuid"].string ?? ""userLogModel.activity = userlog.1["activity"].string ?? ""userLogModel.addedOn = userlog.1["added_on"].string ?? ""userLogDao.insert(record: userLogModel)}}if json?["data"]["extended"] != "" {var userExtendedModel : UserExtendedModelfor userExtended in json!["data"]["extended"]{companyModel = CompanyModel()companyModel.uuid = userExtended.1["company_uuid"].string ?? ""companyModel.name = userExtended.1["company_name"].string ?? ""companyModel.image = userExtended.1["company_image"].string ?? ""print("companyUuid : \(companyModel.uuid)")print("companyName : \(companyModel.name)")print("companyImage : \(companyModel.image)")let company = companyDao.selectByUuid(uuid: companyModel.uuid)if(company.uuid.isEmpty) {companyDao.insert(company: companyModel)} else {companyDao.update(company: companyModel)}for detail in userExtended.1["details"]{userExtendedModel = UserExtendedModel()userExtendedModel.companyUuid = companyModel.uuiduserExtendedModel.uuid = detail.1["uuid"].string ?? ""userExtendedModel.label = detail.1["label"].string ?? ""userExtendedModel.value = detail.1["value"].string ?? ""userExtendedDao.insert(record: userExtendedModel)}}}if json?["data"]["progress"] != "" {var progressModel : ProgressModelfor progress in json!["data"]["progress"] {let userUuid = progress.1["user_uuid"].string ?? ""let topicUuid = progress.1["topic_uuid"].string ?? ""let capsuleUuid = progress.1["capsule_uuid"].string ?? ""let slideUuid = progress.1["slide_uuid"].string ?? ""let type = progress.1["type"].string ?? ""switch type {case Constants.PROGRESS_TYPE_TOPIC:progressModel = progressDao.selectByTopicUuidAndUserUuid(topicUuid: topicUuid, userUuid: userUuid)breakcase Constants.PROGRESS_TYPE_CAPSULE:progressModel = progressDao.selectByCapsuleUuidAndUserUuid(capsuleUuid: capsuleUuid, userUuid: userUuid)breakcase Constants.PROGRESS_TYPE_SLIDE:progressModel = progressDao.selectBySlideUuidAndUserUuid(slideUuid: slideUuid, userUuid: userUuid)breakdefault:continue}if progressModel.id == 0 {progressModel = ProgressModel()progressModel.userUuid = userUuidprogressModel.topicUuid = topicUuidprogressModel.capsuleUuid = capsuleUuidprogressModel.slideUuid = slideUuidprogressModel.type = typeprogressModel.companyUuid = progress.1["company_uuid"].string ?? ""progressModel.progress = Double(progress.1["progress"].string ?? "") ?? 0.0progressModel.totalSlides = Int(progress.1["total_slides"].string ?? "") ?? 0progressModel.viewSlides = Int(progress.1["view_slides"].string ?? "") ?? 0progressModel.returning = Int(progress.1["returning"].string ?? "") ?? 0progressModel.returningAfterCompleted = Int(progress.1["returning_after_completed"].string ?? "") ?? 0progressModel.completed = Int(progress.1["completed"].string ?? "") ?? 0progressModel.addedOn = progress.1["added_on"].string ?? ""progressModel.updatedOn = progress.1["updated_on"].string ?? ""progressDao.insert(record: progressModel)}}}/*let now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICElet dateOn = dateFormatter.string(from: now)userUuid = preference.string(forKey: Constants.PREFERENCE_FIELD_USER_UUID) ?? ""var userLog = UserLogModel()userLog.userUuid = userUuiduserLog.companyUuid = ""userLog.topicUuid = ""userLog.capsuleUuid = ""userLog.slideUuid = ""userLog.activity = Constants.USER_LOG_ACTIVITY_SIGNIN;userLog.addedOn = dateOnuserLogDao.insert(record : userLog);var json = userLog.toJson()json[Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME] = Constants.SYNC_ADAPTER_DATA_TYPE_USER_LOGvar sync = SyncModel()sync.type = Constants.SYNC_ADAPTER_TYPE_SYNCif let theJSONData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted),let data = String(data: theJSONData, encoding: String.Encoding.ascii) {sync.data = data}let syncDao = SyncDao()syncDao.insert(record : sync)*/return true;}}