// // PengisianSurveyVC.swift // Sirani // // Created by Anhar Solehudin on 14/04/19. // Copyright © 2019 Anhar Solehudin. All rights reserved. // import UIKit class PengisianSurveyVC: UIViewController { // Outlets @IBOutlet weak var lblPertanyaan: UILabel! @IBOutlet weak var rbAnswer1: UIButton! @IBOutlet weak var btnAnswer1: UIButton! @IBOutlet weak var rbAnswer2: UIButton! @IBOutlet weak var btnAnswer2: UIButton! @IBOutlet weak var rbAnswer3: UIButton! @IBOutlet weak var btnAnswer3: UIButton! @IBOutlet weak var rbAnswer4: UIButton! @IBOutlet weak var btnAnswer4: UIButton! @IBOutlet weak var rbAnswer5: UIButton! @IBOutlet weak var btnAnswer5: UIButton! @IBOutlet weak var progressLayout: UIView! @IBOutlet weak var progress: UIActivityIndicatorView! // String Message private let alertNoConnectionTitle = "Informasi" private let alertNoConnectionMsg = "Sepertinya Anda sedang tidak tersambung pada koneksi internet" private let alertNoConnectionActionYes = "OK" private let saveFailedMsg = "Mengirim jawaban gagal, silahkan ulangi kembali" // Initialize private var presenter: PengisianSurveyPresenter! private var answers: [SurveyList] = [SurveyList]() private var selected_pertanyaan_id = 0 private var selected_answer_id = 0 // Others private var loading = false // View Lifecycles override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } override func viewDidLoad() { super.viewDidLoad() presenter = PengisianSurveyPresenter(siraniApiServices: SiraniApiServices()) } override func viewWillAppear(_ animated: Bool) { presenter.attachView(view: self) } override func viewDidAppear(_ animated: Bool) { loadPertanyaan() } override func viewDidDisappear(_ animated: Bool) { presenter.detachView() } // private functions private func loadPertanyaan() { if !loading { if ConnectionHelper.isConnectedToNetwork() { presenter.loadPertanyaan() presenter.loadListJawaban() } else { showNoConnection() } } } private func selectanswer1() { selected_pertanyaan_id = answers[0].survey_id selected_answer_id = answers[0].id_jawaban rbAnswer1.setImage(UIImage(named: "checked-rb"), for: .normal) rbAnswer2.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer3.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer4.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer5.setImage(UIImage(named: "unchecked-rb"), for: .normal) } private func selectanswer2() { selected_pertanyaan_id = answers[1].survey_id selected_answer_id = answers[1].id_jawaban rbAnswer1.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer2.setImage(UIImage(named: "checked-rb"), for: .normal) rbAnswer3.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer4.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer5.setImage(UIImage(named: "unchecked-rb"), for: .normal) } private func selectanswer3() { selected_pertanyaan_id = answers[2].survey_id selected_answer_id = answers[2].id_jawaban rbAnswer1.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer2.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer3.setImage(UIImage(named: "checked-rb"), for: .normal) rbAnswer4.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer5.setImage(UIImage(named: "unchecked-rb"), for: .normal) } private func selectanswer4() { selected_pertanyaan_id = answers[3].survey_id selected_answer_id = answers[3].id_jawaban rbAnswer1.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer2.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer3.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer4.setImage(UIImage(named: "checked-rb"), for: .normal) rbAnswer5.setImage(UIImage(named: "unchecked-rb"), for: .normal) } private func selectanswer5() { selected_pertanyaan_id = answers[4].survey_id selected_answer_id = answers[4].id_jawaban rbAnswer1.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer2.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer3.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer4.setImage(UIImage(named: "unchecked-rb"), for: .normal) rbAnswer5.setImage(UIImage(named: "checked-rb"), for: .normal) } private func saveAnswer() { if !loading { if ConnectionHelper.isConnectedToNetwork() { if selected_answer_id > 0 { presenter.saveAnswer(survey_id: selected_pertanyaan_id, jawaban: selected_answer_id) } } else { showNoConnection() } } } // actions @IBAction func onBtnBackTap(_ sender: Any) { performSegue(withIdentifier: "unwindPengisianSurveyToHomeSegueId", sender: self) } @IBAction func onRbAnswer1Tap(_ sender: Any) { selectanswer1() } @IBAction func onBtnAnswer1Tap(_ sender: Any) { selectanswer1() } @IBAction func onRbAnswer2Tap(_ sender: Any) { selectanswer2() } @IBAction func onBtnAnswer2Tap(_ sender: Any) { selectanswer2() } @IBAction func onRbAnswer3Tap(_ sender: Any) { selectanswer3() } @IBAction func onBtnAnswer3Tap(_ sender: Any) { selectanswer3() } @IBAction func onRbAnswer4Tap(_ sender: Any) { selectanswer4() } @IBAction func onBtnAnswer4Tap(_ sender: Any) { selectanswer4() } @IBAction func onRbAnswer5Tap(_ sender: Any) { selectanswer5() } @IBAction func onBtnAnswer5Tap(_ sender: Any) { selectanswer5() } @IBAction func onBtnSimpanTap(_ sender: Any) { saveAnswer() } } extension PengisianSurveyVC: PengisianSurveyViewDelegate { func showNoConnection() { let alertNoConnection = UIAlertController( title: alertNoConnectionTitle, message: alertNoConnectionMsg, preferredStyle: .alert ) alertNoConnection.addAction( UIAlertAction(title: alertNoConnectionActionYes, style: .default, handler: nil) ) self.present(alertNoConnection, animated: true, completion: nil) } func showLoading() { loading = true progress.startAnimating() progressLayout.show() } func hideLoading() { loading = false progress.stopAnimating() progressLayout.hide() } func setPertanyaan(pertanyaan: String) { lblPertanyaan.text = pertanyaan } func setJawabanList(jawabanList: [SurveyList]) { answers.removeAll() if jawabanList.count > 0 { answers.append(jawabanList[0]) answers.append(jawabanList[1]) answers.append(jawabanList[2]) answers.append(jawabanList[3]) answers.append(jawabanList[4]) btnAnswer1.setTitle(jawabanList[0].nama_jawaban, for: .normal) btnAnswer2.setTitle(jawabanList[1].nama_jawaban, for: .normal) btnAnswer3.setTitle(jawabanList[2].nama_jawaban, for: .normal) btnAnswer4.setTitle(jawabanList[3].nama_jawaban, for: .normal) btnAnswer5.setTitle(jawabanList[4].nama_jawaban, for: .normal) } else { btnAnswer1.setTitle("", for: .normal) btnAnswer2.setTitle("", for: .normal) btnAnswer3.setTitle("", for: .normal) btnAnswer4.setTitle("", for: .normal) btnAnswer5.setTitle("", for: .normal) } } func onSaveSuccess(msg: String) { let alertNoConnection = UIAlertController( title: alertNoConnectionTitle, message: msg, preferredStyle: .alert ) alertNoConnection.addAction( UIAlertAction(title: alertNoConnectionActionYes, style: .default, handler: nil) ) self.present(alertNoConnection, animated: true, completion: nil) } func onSaveFailed() { let alertNoConnection = UIAlertController( title: alertNoConnectionTitle, message: saveFailedMsg, preferredStyle: .alert ) alertNoConnection.addAction( UIAlertAction(title: alertNoConnectionActionYes, style: .default, handler: nil) ) self.present(alertNoConnection, animated: true, completion: nil) } }