You are on page 1of 3

//

// SupportVC.swift
// matrimonyy
//
// Created by iOS Developer on 13/04/21.
// Copyright © 2021 iOS Developer. All rights reserved.
//

import UIKit

class SupportTeamChatVC: UIViewController, UITextViewDelegate {


@IBOutlet weak var listTableView: UITableView!
@IBOutlet weak var ansTextView: UITextView!
@IBOutlet weak var closeButton: UIButton!
@IBOutlet weak var sendBarView: UIView!
@IBOutlet weak var sendBarViewHeight: NSLayoutConstraint!
let memberID = Util.userDefault.integer(forKey: UserDefaultIdentifier.memberid)
let token = Util.userDefault.string(forKey: UserDefaultIdentifier.token) ?? ""
var issueID:Int?

let objIssuesListParameters = IssuesListParameters()


override func viewDidLoad() {
super.viewDidLoad()
navigationBarColor()
setBackButton(false)
setNavigationBarTitle("Chat Support", isblackcolor: true)
ansTextView.delegate = self
listTableView.register(UINib(nibName:
CellIdentifier.SupportTeamChatTableViewCell, bundle: nil), forCellReuseIdentifier:
CellIdentifier.SupportTeamChatTableViewCell)
}

override func viewWillAppear(_ animated: Bool) {


super.viewWillAppear(animated)
self.getIssueDetails()
}

@IBAction func sendButtonAction(_ sender: Any) {


if ansTextView.text != ""{
callUpdateIssueAPI()
}
}

@IBAction func closeTicketButtonAction(_ sender: Any) {


let alert = UIAlertController(title: "", message:
AlertIdentifier.closeSupportChat, preferredStyle: .alert)
alert.view.tintColor = UIColor.init(hex: hexColorConstants.purple)
alert.addAction(UIAlertAction(title: "Yes", style: .default, handler:
{ action in
self.callCloseIssueAPI()
}))
alert.addAction(UIAlertAction(title: "No", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}

extension SupportTeamChatVC: UITableViewDataSource, UITableViewDelegate{

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath)


-> CGFloat {
return UITableView.automaticDimension
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) ->


Int {
return objIssuesListParameters.IssueList.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->


UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier:
CellIdentifier.SupportTeamChatTableViewCell, for: indexPath) as!
SupportTeamChatTableViewCell
let object = objIssuesListParameters.IssueList[indexPath.row]
cell.updateUI(object)
return cell
}

//MARK:- Api Calls


extension SupportTeamChatVC{

func callUpdateIssueAPI(){
let ans = ansTextView.text!.addingPercentEncoding(withAllowedCharacters:
.urlQueryAllowed) ?? ""
let url = MySingleton.sharedInstance.baseURL + ApiConstant.UpdateIssue +
"/\(memberID)?IssueID=\(issueID ?? 0)&Description=\(ans)"
let parameters = ["":""]
print(url)

requestPOSTURL(url, VC: self, params:parameters as [String : AnyObject],


isShowProgressBar: false, token: token ,success:{ (data)in
print(data)
self.ansTextView.text = ""
self.getIssueDetails()
}) { (error) in
print(error)
}
}

func callCloseIssueAPI(){
let url = MySingleton.sharedInstance.baseURL + ApiConstant.CloseIssue + "/\
(memberID)?IssueID=\(issueID ?? 0)"
let parameters = ["":""]
print(url)

requestPOSTURL(url, VC: self, params:parameters as [String : AnyObject],


isShowProgressBar: true, token: token ,success:{ (data)in
print(data)
self.navigationController?.popViewController(animated: true)
}) { (error) in
print(error)
}
}
func getIssueDetails(){
let url = MySingleton.sharedInstance.baseURL + ApiConstant.GetIssueDetails
+ "/\(memberID)?IssueID=\(issueID ?? 0)"
let parameters = ["":""]
print(url)

requestGETURL(url, VC: self, params:parameters as [String : AnyObject],


isShowProgressBar: false, token: token ,success:{ (data)in
print(data)
let list = data["data"].arrayObject
if list?.count != 0{
self.objIssuesListParameters.IssueList.removeAll()
self.objIssuesListParameters.getResponse(list! as NSArray)
self.checkStatus()
}
}) { (error) in
print(error)
}
}

func checkStatus(){
let object = objIssuesListParameters.IssueList[0]

let dateFormatter = DateFormatter()


dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
dateFormatter.locale = Locale(identifier: "en_us")
let fromDate = dateFormatter.date(from: object.lastUpdateDT ?? "")
let numOfDays = fromDate?.daysBetweenDate(toDate: Date()) ?? 0
if numOfDays > 6{
closeButton.isHidden = true
sendBarView.isHidden = true
sendBarViewHeight.constant = 0
sendBarViewHeight.priority = UILayoutPriority(rawValue: 1000)
}else{
closeButton.isHidden = false
let isClosed = object.updatedBy == "M" ? true : false
if isClosed{
sendBarView.isHidden = true
sendBarViewHeight.constant = 0
sendBarViewHeight.priority = UILayoutPriority(rawValue: 1000)
}else{
sendBarView.isHidden = false
sendBarViewHeight.constant = 40
sendBarViewHeight.priority = UILayoutPriority(rawValue: 500)
}
}

objIssuesListParameters.IssueList.reverse()
listTableView.reloadData()
listTableView.scrollToRow(at: IndexPath(row:
(objIssuesListParameters.IssueList.count-1), section: 0), at: .bottom, animated:
true)
}

You might also like