Professional Documents
Culture Documents
// HomePageVC.swift
// matrimonyy
//
// Created by iOS Developer on 24/02/21.
// Copyright © 2021 iOS Developer. All rights reserved.
//
import UIKit
import MarqueeLabel
import Popover
import SwiftyJSON
import Photos
import mesibo
import MesiboUI
import MesiboCall
import CoreLocation
class HomePageVC: CommonApiCall, UITabBarDelegate{
@IBOutlet weak var homePageCollectionView: UICollectionView!
@IBOutlet weak var searchCollectionView: UICollectionView!
@IBOutlet weak var scrollButton: UIButton!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var moveToTopButton: UIButton!
let objMesiboHelperVC = MesiboHelperVC()
let refreshControl = UIRefreshControl()
var scrollid = 0
var selectedTab = 0
var popover: Popover!
var isDataLoaded = true
var sortBy = 0
var selectedConnectMemberID = -1
var selectSearchPopoverOption = -1
var isVerifedButtonClick = 0
var isSelfie, isBCG, isSocially: Bool?
var memberVerifiedOptions = [[String:String]]()
let objHomePageDefaultMembersParameters = HomePageDefaultMembersParameters()
let objHomePageSearchTabParameters = HomePageSearchTabParameters()
let objHomePageMembersModel = HomePageMembersModel()
let objMemberInfoParameters = MemberInfoParameters()
var autoScrollCount = 0
var timer = Timer()
func cellIntialisation(){
homePageCollectionView.register(UINib(nibName:
CellIdentifier.HomeUserDetailsCollectionViewCell, bundle: nil),
forCellWithReuseIdentifier: CellIdentifier.HomeUserDetailsCollectionViewCell)
searchCollectionView.register(UINib(nibName:
CellIdentifier.HomeSearchOptionCollectionViewCell, bundle: nil),
forCellWithReuseIdentifier: CellIdentifier.HomeSearchOptionCollectionViewCell)
}
view.selfieVerifiedButton.addTarget(self,action:#selector(didTapFilterOptionButton)
, for: .touchUpInside)
view.bcgVerifiedButton.addTarget(self,action:#selector(didTapFilterOptionButton),
for: .touchUpInside)
view.sociallyConnectedButton.addTarget(self,action:#selector(didTapFilterOptionButt
on), for: .touchUpInside)
view.latestFirstButton.addTarget(self,action:#selector(didTapFilterOptionButton),
for: .touchUpInside)
view.recentFirstButton.addTarget(self,action:#selector(didTapFilterOptionButton),
for: .touchUpInside)
view.nearbyLocationButton.addTarget(self,action:#selector(didTapFilterOptionButton)
, for: .touchUpInside)
if isSelfie != nil{
if isSelfie!{
view.selfieVerifiedButton.setImage(#imageLiteral(resourceName:
"checkSelected"), for: .normal)
}else{
view.selfieVerifiedButton.setImage(#imageLiteral(resourceName:
"checkDefault"), for: .normal)
}
}
if isBCG != nil{
if isBCG!{
view.bcgVerifiedButton.setImage(#imageLiteral(resourceName:
"checkSelected"), for: .normal)
}else{
view.bcgVerifiedButton.setImage(#imageLiteral(resourceName:
"checkDefault"), for: .normal)
}
}
if isSocially != nil{
if isSocially!{
view.sociallyConnectedButton.setImage(#imageLiteral(resourceName:
"checkSelected"), for: .normal)
}else{
view.sociallyConnectedButton.setImage(#imageLiteral(resourceName:
"checkDefault"), for: .normal)
}
}
reloadHomePageCollectionView(objHomePageDefaultMembersParameters.tempUserDetailList
s.count)
}
// popover.didDismissHandler = {
// print("didDismissHandler")
// }
popover.show(view, fromView: sender as! UIButton)
}
reloadHomePageCollectionView(objHomePageDefaultMembersParameters.tempUserDetailList
s.count)
break
case CommanApiCallIdentifier.ignoreMember:
DatabaseManager.getDBInstance().deleteHomePageMembersById(objHomePageDefaultMembers
Parameters.tempUserDetailLists[Index].memberID ?? 0)
objHomePageDefaultMembersParameters.tempUserDetailLists.remove(at:
Index)
reloadHomePageCollectionView(objHomePageDefaultMembersParameters.tempUserDetailList
s.count)
break
default:
break
}
}
cell.optionButtonAction.addTarget(self,action:#selector(didTapSearchOptionButton),
for: .touchUpInside)
cell.optionButtonAction.tag = indexPath.row
if selectedTab == indexPath.row{
cell.backView.backgroundColor = UIColor.init(hex:
hexColorConstants.purple)
cell.titleLabel.textColor = .white
}else{
cell.backView.backgroundColor = .white
cell.titleLabel.textColor = .black
}
return cell
}else if collectionView == homePageCollectionView{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier:
CellIdentifier.HomeUserDetailsCollectionViewCell, for: indexPath) as!
HomeUserDetailsCollectionViewCell
MarqueeLabel.controllerViewDidAppear(self)
let object =
objHomePageDefaultMembersParameters.tempUserDetailLists[indexPath.row]
cell.object = object
cell.sortBy = sortBy
cell.doInit()
cell.connectUserButton.tag = indexPath.row
cell.verifedOptionButton.tag = indexPath.row
cell.connectUserButton.addTarget(self,action:#selector(didTapConnectUserButton),
for: .touchUpInside)
cell.verifedOptionButton.addTarget(self,action:#selector(didTapVerifiedOptionButton
), for: .touchUpInside)
cell.sendInterestButton.addTarget(self,action:#selector(didTapSendIntrestButton),
for: .touchUpInside)
cell.favButton.addTarget(self,action:#selector(didTapSendFaveButton),
for: .touchUpInside)
cell.ignorButton.addTarget(self,action:#selector(didTapIgnorButton),
for: .touchUpInside)
cell.sendInterestButton.tag = indexPath.row
cell.favButton.tag = indexPath.row
cell.ignorButton.tag = indexPath.row
cell.profileImageButton.tag = indexPath.row
cell.profileImageButton.addTarget(self,action:#selector(didTapProfileButton),
for: .touchUpInside)
cell.mapButton.addTarget(self,action:#selector(didTapMapButton),
for: .touchUpInside)
return cell
}else{
return UICollectionViewCell()
}
}
getTabSelectedMemberList(objHomePageSearchTabParameters.tabDetailLists[indexPath.ro
w].searchProfileId ?? 0)
}else if collectionView == homePageCollectionView{
if Util.userDefault.bool(forKey: UserDefaultIdentifier.isPaid){
let vc = UIStoryboard.init(name: "Main", bundle:
Bundle.main).instantiateViewController(withIdentifier:
StoryboardIdentifier.UserDetailProfileVC) as? UserDetailProfileVC
vc?.isHome = true
vc?.toMemberId =
objHomePageDefaultMembersParameters.tempUserDetailLists[indexPath.row].memberID ??
0
navigationController?.pushViewController(vc!, animated: true)
}else{
let vc = UIStoryboard.init(name: "Main", bundle:
Bundle.main).instantiateViewController(withIdentifier:
StoryboardIdentifier.SubscriptionPlanVC) as? SubscriptionPlanVC
navigationController?.pushViewController(vc!, animated: true)
}
}
}
if 0 != dbList.count{
if isDataLoaded{
isDataLoaded = false
getMoreMemberProfileList(dbList.sample(5))
}
}
}
}
func fetchWeatherData() {
DispatchQueue.main.async {
print("Refresh View")
self.getDefaultSearchList()
self.refreshControl.endRefreshing()
}
}
self.objHomePageDefaultMembersParameters.tempUserDetailLists[sender.tag].isShortlis
ted = true
sender.setImage(#imageLiteral(resourceName: "like_color"), for:
.normal)
}
}) { (error) in
print(error)
}
}
self.objHomePageDefaultMembersParameters.getResponse(memberProfiles! as NSArray)
self.isDataLoaded = true
self.homePageCollectionView.reloadData()
}
}) { (error) in
print(error)
}
}
}
}) { (error) in
print(error)
}
}
func getDefaultSearchList(){
let url = MySingleton.sharedInstance.baseURL + ApiConstant.GetDefaultSearch
+ "?memberid=\(memberID)&pageIndex=1&pageSize=5"
let parameters = ["":""]
print(url)
selectSearchPopoverOption = sender.tag
view.defaultButton.tag = 0
view.deleteButton.tag = 2
view.editButton.tag = 1
objHomePageDefaultMembersParameters.tempUserDetailLists.append(contentsOf: array)
DispatchQueue.main.async {
self.homePageCollectionView.reloadData()
}
break
case 1:
sortBy = 2
popover.dismiss()
let array =
objHomePageDefaultMembersParameters.tempUserDetailLists.sorted(by:
{ ($0.lastLogin ?? "").compare($1.lastLogin ?? "") == .orderedDescending })
objHomePageDefaultMembersParameters.tempUserDetailLists.removeAll()
objHomePageDefaultMembersParameters.tempUserDetailLists.append(contentsOf: array)
DispatchQueue.main.async {
self.homePageCollectionView.reloadData()
}
break
case 2:
sortBy = 3
popover.dismiss()
let array =
objHomePageDefaultMembersParameters.tempUserDetailLists.sorted(by:
{ $0.distenceInKm ?? 0.0 < $1.distenceInKm ?? 0.0 })
objHomePageDefaultMembersParameters.tempUserDetailLists.removeAll()
objHomePageDefaultMembersParameters.tempUserDetailLists.append(contentsOf: array)
DispatchQueue.main.async {
self.homePageCollectionView.reloadData()
}
break
case 3:
if !(isSelfie ?? false){
isSelfie = true
sender.setImage(#imageLiteral(resourceName: "checkSelected"),
for: .normal)
}else{
isSelfie = false
sender.setImage(#imageLiteral(resourceName: "checkDefault"),
for: .normal)
}
break
case 4:
if !(isBCG ?? false){
sender.setImage(#imageLiteral(resourceName: "checkSelected"),
for: .normal)
isBCG = true
}else{
sender.setImage(#imageLiteral(resourceName: "checkDefault"),
for: .normal)
isBCG = false
}
break
case 5:
if !(isSocially ?? false){
isSocially = true
sender.setImage(#imageLiteral(resourceName: "checkSelected"),
for: .normal)
}else{
sender.setImage(#imageLiteral(resourceName: "checkDefault"),
for: .normal)
isSocially = false
}
break
default:
break
}
}
cell.button.addTarget(self,action:#selector(didTapVerifiedButtonButton), for:
.touchUpInside)
cell.button.setImage(UIImage(named: dictionary["image"] ?? ""), for:
.normal)
cell.button.tag = indexPath.row
cell.button.contentHorizontalAlignment = .right
cell.button.cornerRadius = 25
cell.contentView.backgroundColor = .clear
cell.selectionStyle = .none
return cell
}else if isVerifedButtonClick == 2{
let cell = tableView.dequeueReusableCell(withIdentifier:
CellIdentifier.ConnectUsersPopoverButtonTableViewCell, for: indexPath) as!
ConnectUsersPopoverButtonTableViewCell
cell.button.addTarget(self,action:#selector(didTapButton), for:
.touchUpInside)
cell.button.setImage(ListIdentifires.HomePageUserConnectOptionIcon[indexPath.row],
for: .normal)
cell.buttonWidth.constant = 50
cell.button.tag = indexPath.row
cell.contentView.backgroundColor = .clear
cell.button.contentHorizontalAlignment = .center
cell.selectionStyle = .none
return cell
}else{
return UITableViewCell()
}
}
case 1:
contact.givenName = (object.firstName ?? "") + (object.lastName ??
"")
callNumberShowAPI(object.memberID ?? 0)
break
case 2:
if object.isSocialConnectVerified ?? false{
popover.dismiss()
let vc = UIStoryboard.init(name: "Main", bundle:
Bundle.main).instantiateViewController(withIdentifier:
StoryboardIdentifier.SociallyConnectedPopupVC) as? SociallyConnectedPopupVC
vc?.toMemberId = object.memberID ?? 0
vc?.urlImage = object.profilePic ?? ""
navigationController?.present(vc!, animated: true, completion:
nil)
}else{
showToast(message: AlertIdentifier.notConnectSocially)
}
break
case 3:
popover.dismiss()
let vc = UIStoryboard.init(name: "Main", bundle:
Bundle.main).instantiateViewController(withIdentifier:
StoryboardIdentifier.SelectSMSVC) as? SelectSMSVC
vc?.toMemberId = object.memberID ?? 0
navigationController?.present(vc!, animated: true, completion: nil)
break
case 4:
callEmailShowAPI(object.memberID ?? 0)
break
default:
break
}
}else{
popover.dismiss()
let vc = UIStoryboard.init(name: "Main", bundle:
Bundle.main).instantiateViewController(withIdentifier:
StoryboardIdentifier.SubscriptionPlanVC) as? SubscriptionPlanVC
navigationController?.pushViewController(vc!, animated: true)
}
}
getDefaultTabMemberList(objHomePageSearchTabParameters.tabDetailLists[selectSearchP
opoverOption].searchProfileId ?? 0)
break
case 1:
popover.dismiss()
let vc = UIStoryboard.init(name: "Main", bundle:
Bundle.main).instantiateViewController(withIdentifier:
StoryboardIdentifier.CustomeSearchVC) as? CustomeSearchVC
vc?.searchProfileId =
objHomePageSearchTabParameters.tabDetailLists[selectSearchPopoverOption].searchProf
ileId ?? 0
navigationController?.pushViewController(vc!, animated: true)
break
case 2:
callDeleteTabMemberList(objHomePageSearchTabParameters.tabDetailLists[selectSearchP
opoverOption].searchProfileId ?? 0)
break
default:
break
}
}
func startMesibo(){
Mesibo.getInstance()!.addListener(self)
Mesibo.getInstance()!.setSecureConnection(true)
Mesibo.getInstance()!.setAccessToken(objMemberInfoParameters.mesiboToken)
Mesibo.getInstance()!.setDatabase("mesibo.db", resetTables: 0)
Mesibo.getInstance()!.start()
}
if uvc?.isBeingPresented ?? false {
return
}
if parent == nil {
parent = self
}
}
//
func mesibo_(on message: MesiboMessage?) {
}
// mMessageStatus.text = str
func checkCameraAccess() {
let status = AVCaptureDevice.authorizationStatus(for: .video)
switch status {
case .authorized:
checkMicPermission(true)
print("request .authorised")
break
//handle authorized status
case .denied, .restricted :
print(" .denied, .restricted")
deniedAlert()
// Show Message to give permission in Settings
break
//handle denied status
case .notDetermined:
// ask for permissions
AVCaptureDevice.requestAccess(for: .video) { success in
DispatchQueue.main.async {
if success {
self.checkMicPermission(true)
print("Permission granted, proceed")
} else {
self.deniedAlert()
print("Permission denied")
}
}
}
@unknown default:
fatalError()
}
}
func deniedAlert(){
let alertController = UIAlertController(title: "Please Allow Access",
message: AlertIdentifier.deniedAlert, preferredStyle: .alert)
alertController.view.tintColor = UIColor.init(hex:
hexColorConstants.purple)
let settingsAction = UIAlertAction(title: "Settings", style: .default)
{ (alertAction) in
if type == 0 {
let button = UIButton(type: .custom)
button.setImage(#imageLiteral(resourceName:
"locationverified"), for: .normal)
button.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
button.tag = 0
return btns