Rev 2 | Rev 17 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// DataService.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/27/22.//import Foundationimport SwiftyJSONclass DataService{private let database = Database.sharedInstanceprivate var appData = AppData.sharedInstancefunc complete(topicModel : TopicModel, capsuleModel : CapsuleModel){let now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICElet dateOn = dateFormatter.string(from: now)let userUuid = appData.userUuidvar json : [String: Any]var sync : SyncModelvar userLog : UserLogModellet db = database.open()let syncDao = SyncDao(db : db)let progressDao = ProgressDao(db : db)let userLogDao = UserLogDao(db : db)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 = progressTopic.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);}database.close()}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){let db = database.open()let slideDao = SlideDao(db: db)let capsuleDao = CapsuleDao(db: db)let topicDao = TopicDao(db: db)let syncDao = SyncDao(db: db)let progressDao = ProgressDao(db: db)let userLogDao = UserLogDao(db: db)var updateCapsuleAndTopics = falselet now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICElet dateOn = dateFormatter.string(from: now)let capsule = capsuleDao.selectByUuid(uuid: slide.capsuleUuid)let topic = topicDao.selectByUuid(uuid: slide.topicUuid)let userUuid = appData.userUuidvar json : [String: Any]var sync : SyncModelvar userLog : UserLogModelvar 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)updateCapsuleAndTopics = true} else {if progressCapsule.completed == 1 && appData.capsuleUuidActive != appData.capsuleUuidOld {updateCapsuleAndTopics = 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 updateCapsuleAndTopics {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 && appData.capsuleUuidActive != appData.capsuleUuidOld {progressCapsule.returningAfterCompleted = progressCapsule.returningAfterCompleted + 1}progressDao.update(record: progressCapsule)}appData.capsuleUuidOld = appData.capsuleUuidActiveappData.save()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);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 = progressTopic.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);}if slide.completed == 1 {print("Notification: \(Constants.NOTIFICATION_NAME_COMPLETED_SLIDE) ")NotificationCenter.default.post(name:Constants.NOTIFICATION_NAME_COMPLETED_SLIDE, object: nil, userInfo: ["slideUuid": slide.uuid])}if ( updateCapsuleAndTopics ) {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])}database.close()}public func syncFromServer(json : JSON?, refresh : Bool = false) -> Bool{let db = database.open()let companyDao = CompanyDao(db: db)let topicDao = TopicDao(db: db)let capsuleDao = CapsuleDao(db: db)let slideDao = SlideDao(db: db)let quizDao = QuizDao(db: db)let questionDao = QuestionDao(db: db)let answerDao = AnswerDao(db: db)let userLogDao = UserLogDao(db: db)let progressDao = ProgressDao(db: db)let userExtendedDao = UserExtendedDao(db: db)let userNotificationDao = UserNotificationDao(db: db)answerDao.removeAll()questionDao.removeAll()quizDao.removeAll()slideDao.removeAll()capsuleDao.removeAll()topicDao.removeAll()companyDao.removeAll()userExtendedDao.removeAll()//userLogDao.removeAll()//progressDao.removeAll()//userNotificationDao.removeAll()var companyModel : CompanyModellet now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATETIME_SERVICElet dateOn = dateFormatter.string(from: now)if json?["data"]["max_date_changes"] != "" {let maxDateChanges = json?["data"]["max_date_changes"].string ?? ""//print("maxDateChanges : \(maxDateChanges)")appData.maxDateChanges = maxDateChanges}if !refresh && json?["data"]["device"] != "" {let deviceAes = json?["data"]["device"]["aes"].string ?? ""let devicePassword = json?["data"]["device"]["password"].string ?? ""//print("deviceAes: \(deviceAes)")// print("devicePassword: \(devicePassword)")appData.deviceAes = deviceAesappData.devicePassword = 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)")appData.userUuid = userUuidappData.userFirstname = userFirstNameappData.userLastname = userLastNameappData.userEmail = userEmailappData.userImage = userImage}appData.lastCheckChanges = dateOnappData.topicUuidActive = ""appData.capsuleUuidActive = ""appData.capsuleUuidOld = ""appData.slideUuidActive = ""appData.save()userLogDao.removeAllUserUuidNotEqual(userUuid: appData.userUuid)progressDao.removeAllUserUuidNotEqual(userUuid: appData.userUuid)userNotificationDao.removeAllUserUuidNotEqual(userUuid: appData.userUuid)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 ?? "") ?? 1topicModel.addedOn = topic.1["added_on"].string ?? ""topicModel.updatedOn = topic.1["updated_on"].string ?? ""// print("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 ?? "") ?? 1capsuleModel.linkComments = capsule.1["link_comments"].string ?? ""capsuleModel.linkCommentAdd = capsule.1["link_comment_add"].string ?? ""capsuleModel.totalComments = Int(capsule.1["total_comments"].string ?? "") ?? 0capsuleModel.totalRating = Decimal(Double(capsule.1["total_rating"].string ?? "") ?? 0)capsuleModel.addedOn = capsule.1["added_on"].string ?? ""capsuleModel.updatedOn = capsule.1["updated_on"].string ?? ""//print("capsuletopicUuid: \(capsuleModel.topicUuid)")//print("capsuleUuid: \(capsuleModel.uuid)")//print("capsuleName: \(capsuleModel.name)")//print("capsuleDescription: \(capsuleModel.description)")//print("capsuleImage: \(capsuleModel.image)")//print("capsulePosition: \(capsuleModel.position)")//print("capsuleLinkComments: \(capsuleModel.linkComments)")//print("capsuleLinkCommentAdd: \(capsuleModel.linkCommentAdd)")//print("capsuleTotalComments: \(capsuleModel.totalComments)")//print("capsuleTotalRating: \(capsuleModel.totalRating)")// 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 ?? ""slideModel.addedOn = slide.1["added_on"].string ?? ""slideModel.updatedOn = slide.1["updated_on"].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 ?? "") ?? 0quizModel.addedOn = quiz.1["added_on"].string ?? ""quizModel.updatedOn = quiz.1["updated_on"].string ?? ""//print("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 ?? "") ?? 0questionModel.addedOn = question.1["added_on"].string ?? ""questionModel.updatedOn = question.1["updated_on"].string ?? ""//print("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 ?? "") ?? 0answerModel.addedOn = answer.1["added_on"].string ?? ""answerModel.updatedOn = answer.1["updated_on"].string ?? ""//print("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)}}}database.close()return true;}}