Advertisement
cristo1985

InteressiMeetUPVC

Jul 8th, 2023
1,245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 7.20 KB | None | 0 0
  1. //
  2. //  InteressiMeetUpVC.swift
  3. //  Konnecta
  4. //
  5. //  Created by Cristian Capannini on 06/07/23.
  6. //
  7.  
  8. import UIKit
  9.  
  10. protocol InteressiMeetUpVCDelegate: AnyObject { // class deprecated serve o non serve??!!
  11.     func closingInteressiMeetUpVC()
  12. }
  13.  
  14.  
  15. class InteressiMeetUpVC: UIViewController {
  16.  
  17.     weak var delegate: InteressiMeetUpVCDelegate?
  18.    
  19.     @IBOutlet weak var aggiungiInteressiButton: UIButton!
  20.     @IBOutlet weak var tableView: UITableView!
  21.    
  22.     let appDelegate = UIApplication.shared.delegate as! AppDelegate
  23.    
  24.    
  25.    
  26.     var checkboxData: [Bool] = []
  27.    
  28.     var feedbackArrayRec: [Interessi]?
  29.  
  30.     lazy var refreshControl: UIRefreshControl = {
  31.         let refreshControl = UIRefreshControl()
  32.         refreshControl.addTarget(self, action: #selector(ChatVC.handleRefresh(_:)), for: UIControl.Event.valueChanged)
  33.         refreshControl.tintColor = UIColor.darkGray
  34.        
  35.         return refreshControl
  36.     }()
  37.  
  38.    
  39.    
  40.     override func viewDidLoad() {
  41.         super.viewDidLoad()
  42.  
  43.         /*tableView.tableFooterView = UIView(frame: .zero)
  44.         tableView.register(UINib(nibName: "InteresseCell2", bundle: nil), forCellReuseIdentifier:  "InteresseCell2")
  45.         tableView.estimatedRowHeight = 60.0
  46.         tableView.dataSource = self
  47.         tableView.delegate = self*/
  48.        
  49.         let object = getData()
  50.        
  51.         self.feedbackArrayRec = object?.interessi
  52.        
  53.         self.tableView?.register(UINib.init(nibName: "TopTitleHeader", bundle: nil), forHeaderFooterViewReuseIdentifier: "TopTitleHeader")
  54.         self.tableView?.register(UINib.init(nibName: "InteresseCell2", bundle: nil), forCellReuseIdentifier: "InteresseCell2")
  55.        
  56.         self.tableView?.reloadData()
  57.        
  58.         //getData()
  59.        
  60.     }
  61.    
  62.    
  63.     @IBAction func aggiungiInteressiButtonPressed(_ sender: Any) {
  64.        
  65.         /*var interessiSelezionati: [Interesse] = []
  66.         for (index, item) in checkboxData.enumerated() {
  67.             if item {
  68.                 print("InteressiMeetUpVC aggiungiButtonPressed aggiungo l'interesse: \(self.allInteressiInSection[index].descrizione)")
  69.                
  70.                 interessiSelezionati.append(self.allInteressiInSection[index])
  71.             }
  72.         }
  73.        
  74.         if interessiSelezionati.count > 10 { // 8
  75.            
  76.             DispatchQueue.main.async {
  77.                 let alert = UIAlertController(title: "", message: "E' possibile selezionare al massimo 10 interessi.", preferredStyle: .alert)
  78.                
  79.                 let okAlert = UIAlertAction(title: "Ok", style: .default, handler: nil)
  80.                 //okAlert.setValue(accentColor, forKey: "titleTextColor")
  81.                 alert.addAction(okAlert)
  82.                 self.present(alert, animated: true)
  83.             }
  84.            
  85.            
  86.         } else {
  87.            
  88.            
  89.            
  90.         }
  91.         */
  92.        
  93.         self.dismiss(animated: true, completion: nil)
  94.     }
  95.    
  96.    
  97.  
  98.    
  99. }
  100.  
  101. extension InteressiMeetUpVC:UITableViewDelegate{
  102.    
  103.     func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  104.        
  105.         return 44.0
  106.     }
  107.    
  108.     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{
  109.        
  110.         let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "TopTitleHeader") as? TopTitleHeader
  111.        
  112.         let contnetView = self.feedbackArrayRec?[section].categoria
  113.         headerView?.setContent(content: contnetView)
  114.         return  headerView
  115.     }
  116.    
  117.     func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  118.         return 54.0
  119.     }
  120.    
  121.     func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
  122.         return .leastNonzeroMagnitude
  123.     }
  124. }
  125.  
  126.  
  127. extension InteressiMeetUpVC: UITableViewDataSource{
  128.    
  129.     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
  130.         return self.feedbackArrayRec?[section].elenco.count ?? 0
  131.     }
  132.    
  133.     func numberOfSections(in tableView: UITableView) -> Int {
  134.         return self.feedbackArrayRec?.count ?? 0
  135.     }
  136.    
  137.     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  138.        
  139.         let cell = tableView.dequeueReusableCell(withIdentifier: "InteresseCell2", for: indexPath) as! InteresseCell2
  140.        
  141.         let objectValue = self.feedbackArrayRec?[indexPath.section].elenco[indexPath.row]
  142.         cell.setContentValue(contnet: objectValue)
  143.         return cell
  144.     }
  145. }
  146.  
  147. func getData() -> EventsRecords?
  148. {
  149.     var tmpRec: EventsRecords?
  150.    
  151.     var dataAsString: String = String()
  152.    
  153.     print("InteressiMeetUpVC getData")
  154.    
  155.    /* DispatchQueue.main.async {
  156.         self.refreshControl.endRefreshing()
  157.     }
  158.     */
  159.    
  160.     let getListaInteressiString = "\(Constants.GET_LISTA_INTERESSI_URL)"
  161.     let interessiURL: URL = URL(string: getListaInteressiString)!
  162.      
  163.     var request = URLRequest(url: interessiURL)
  164.     request.httpMethod = "POST"
  165.    
  166.     let headers = ["Content-Type": "application/x-www-form-urlencoded"]
  167.     request.allHTTPHeaderFields = headers
  168.    
  169.     let parameters: [String: Any] = [
  170.         "user_id": UserDefaults.standard.string(forKey: "user_id") ?? "-1",
  171.         "email": UserDefaults.standard.string(forKey: "email") ?? "utente@ospite.it",
  172.         "r": "" // mettere il campo search ma è
  173.     ]
  174.    
  175.     request.httpBody = parameters.percentEncoded()
  176.    
  177.     let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
  178.         guard let data = data else {
  179.             print("InteressiRegistrazioneVC getData error: \(String(describing: error))")
  180.             DispatchQueue.main.async {
  181.                 //self.hideLoading()
  182.                 //self.isLoading = false
  183.             }
  184.             return
  185.         }
  186.        
  187.         if let httpResponse = response as? HTTPURLResponse {
  188.             print("InteressiMeetUpVC getData status code: \(httpResponse.statusCode)")
  189.             if httpResponse.statusCode == 200 {
  190.                
  191.             } else {
  192.                
  193.             }
  194.         }
  195.        
  196.         // converting data to string
  197.        
  198.         dataAsString = String.init(data: data, encoding: String.Encoding.utf8)!
  199.             print("InteressiMeetUpVC getData dataAsString: \(dataAsString)")
  200.        
  201.    
  202.    
  203.     //if let path = Bundle.main.path(forResource: dataAsString, ofType: "json")
  204.     //{
  205.         do {
  206.             let jsonData = Data(dataAsString.utf8)
  207.             let decoder = JSONDecoder()
  208.             do {
  209.                 let people = try decoder.decode(EventsRecords.self, from: jsonData)
  210.                 tmpRec = people
  211.             } catch {
  212.                 print(error)
  213.             }
  214.         }
  215.        
  216.    // }
  217.        
  218.     }
  219.     task.resume()
  220.    
  221.     return tmpRec
  222. }
  223.  
  224. struct EventsRecords: Codable {
  225.     let success: Int?
  226.     let interessi: [Interessi]?
  227. }
  228.  
  229. // MARK: - Interessi
  230. struct Interessi: Codable {
  231.     let cid, categoria: String?
  232.     let elenco: [Elenco]
  233. }
  234.  
  235. // MARK: - Elenco
  236. struct Elenco: Codable {
  237.     let id, cid, descrizione: String?
  238. }
  239.  
  240.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement