Commit 3bff6dba by Anand.suthar

Implement audio in chat

parent 1a3bb3d0
......@@ -87,6 +87,7 @@
B098116C212C524900BD7407 /* DrawTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = B098116B212C524900BD7407 /* DrawTextField.swift */; };
B09A64BF20F7877E00222611 /* NavigationBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B09A64BE20F7877E00222611 /* NavigationBarView.swift */; };
B0A0827920EF924100F78AEC /* UserSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0A0827820EF924100F78AEC /* UserSettings.swift */; };
B0A1F215213AB9F600E17558 /* UploadAudio.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0A1F214213AB9F600E17558 /* UploadAudio.swift */; };
B0B57165212BFE3700593801 /* ScienceOfNamingContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B57164212BFE3700593801 /* ScienceOfNamingContainerViewController.swift */; };
B0B5716F212BFE4E00593801 /* IndividualNamingServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B5716E212BFE4D00593801 /* IndividualNamingServiceViewController.swift */; };
B0B57171212BFE6100593801 /* IndividualReNamingServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B57170212BFE6100593801 /* IndividualReNamingServiceViewController.swift */; };
......@@ -619,6 +620,7 @@
B098116B212C524900BD7407 /* DrawTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DrawTextField.swift; sourceTree = "<group>"; };
B09A64BE20F7877E00222611 /* NavigationBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarView.swift; sourceTree = "<group>"; };
B0A0827820EF924100F78AEC /* UserSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSettings.swift; sourceTree = "<group>"; };
B0A1F214213AB9F600E17558 /* UploadAudio.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadAudio.swift; sourceTree = "<group>"; };
B0B57164212BFE3700593801 /* ScienceOfNamingContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScienceOfNamingContainerViewController.swift; sourceTree = "<group>"; };
B0B5716E212BFE4D00593801 /* IndividualNamingServiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IndividualNamingServiceViewController.swift; sourceTree = "<group>"; };
B0B57170212BFE6100593801 /* IndividualReNamingServiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IndividualReNamingServiceViewController.swift; sourceTree = "<group>"; };
......@@ -1005,14 +1007,15 @@
isa = PBXGroup;
children = (
B0BD88CC212EE7AC00188279 /* Notifications */,
B04824602128342100B088C0 /* UpdateOrder.swift */,
B091CD672119A43F00E270BF /* FireBaseChat */,
B038371420F37F2F00B68870 /* Appointment */,
B0F371E320EFB08D000F92D2 /* Home */,
B08BEE7920F0933600E972D3 /* Me */,
B04824602128342100B088C0 /* UpdateOrder.swift */,
B01B217B20EF87E9002AC8D5 /* User.swift */,
B01B217620EF878A002AC8D5 /* UserExt.swift */,
B0A0827820EF924100F78AEC /* UserSettings.swift */,
B0A1F214213AB9F600E17558 /* UploadAudio.swift */,
);
path = Model;
sourceTree = "<group>";
......@@ -2582,6 +2585,7 @@
EC04CFD32052CF2A00B425BB /* PasswordToggleVisibilityView.swift in Sources */,
EC04CE1A2052CDA300B425BB /* SellerDashBoardController.swift in Sources */,
B024388B20B53D5D007D12AE /* HomePageViewController.swift in Sources */,
B0A1F215213AB9F600E17558 /* UploadAudio.swift in Sources */,
EC04CEDF2052CE6700B425BB /* MyOrderTableViewCell.swift in Sources */,
EC04CFBA2052CF2A00B425BB /* CHILayer.swift in Sources */,
EC04CDAD2052CD3500B425BB /* SellerListViewCell.swift in Sources */,
......
......@@ -10,7 +10,7 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Model/Appointment/EditResult.swift"
timestampString = "556699185.727886"
timestampString = "557500375.461725"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "74"
......@@ -26,7 +26,7 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Model/Appointment/EditResult.swift"
timestampString = "556699185.7279789"
timestampString = "557500375.461798"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "51"
......@@ -106,12 +106,28 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Model/UserExt.swift"
timestampString = "557228254.156836"
timestampString = "557488994.463275"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "236"
endingLineNumber = "236"
landmarkName = "callAPI(oldPassword:newPassword:success:failure:)"
startingLineNumber = "242"
endingLineNumber = "242"
landmarkName = "changePassword(oldPassword:newPassword:success:failure:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Model/UserExt.swift"
timestampString = "557488994.463385"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "244"
endingLineNumber = "244"
landmarkName = "changePassword(oldPassword:newPassword:success:failure:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
......@@ -122,13 +138,13 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Controller/Me/ChangePasswordViewController.swift"
timestampString = "557228596.9233069"
timestampString = "557239644.4572099"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
endingLineNumber = "32"
landmarkName = "unknown"
landmarkType = "0">
startingLineNumber = "35"
endingLineNumber = "35"
landmarkName = "confirm()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
......@@ -138,13 +154,45 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Controller/Me/ChangePasswordViewController.swift"
timestampString = "557228598.131186"
timestampString = "557239644.457275"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "30"
endingLineNumber = "30"
landmarkName = "unknown"
landmarkType = "0">
startingLineNumber = "37"
endingLineNumber = "37"
landmarkName = "confirm()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.042726"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "182"
endingLineNumber = "182"
landmarkName = "connectWithoutRequestObject(api:parameters:method:contentType:indicator:success:failure:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.0428081"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "92"
endingLineNumber = "92"
landmarkName = "connectWithRequestObject(api:parameters:method:contentType:indicator:success:failure:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
......@@ -154,12 +202,172 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Model/UserExt.swift"
timestampString = "557228607.042542"
timestampString = "557488994.46451"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "238"
endingLineNumber = "238"
landmarkName = "changePassword(oldPassword:newPassword:success:failure:)"
startingLineNumber = "59"
endingLineNumber = "59"
landmarkName = "login(email:password:success:failure:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Model/UserExt.swift"
timestampString = "557488994.464582"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "114"
endingLineNumber = "114"
landmarkName = "getMagentoToken(_:password:success:failur:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Model/Home/Income/IncomeExt.swift"
timestampString = "557488392.706923"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "22"
endingLineNumber = "22"
landmarkName = "nextPage(success:failuer:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Controller/Me/IncomeHistoryViewController.swift"
timestampString = "557488994.4646699"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "60"
endingLineNumber = "60"
landmarkName = "income(nextPage:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Controller/Appointment/EditResultViewController.swift"
timestampString = "557492849.897043"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "253"
endingLineNumber = "253"
landmarkName = "recordedAudio(filePath:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.04295"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "301"
endingLineNumber = "301"
landmarkName = "uploadFile(withThumbNail:api:filePath:type:result:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.043007"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "288"
endingLineNumber = "288"
landmarkName = "uploadFile(withThumbNail:api:filePath:type:result:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.043063"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "291"
endingLineNumber = "291"
landmarkName = "uploadFile(withThumbNail:api:filePath:type:result:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.043118"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "297"
endingLineNumber = "297"
landmarkName = "uploadFile(withThumbNail:api:filePath:type:result:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.043171"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "281"
endingLineNumber = "281"
landmarkName = "uploadFile(withThumbNail:api:filePath:type:result:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Bhagyashree/Sunarc/Other/HTTP/HTTP.swift"
timestampString = "557657330.043225"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "277"
endingLineNumber = "277"
landmarkName = "uploadFile(withThumbNail:api:filePath:type:result:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
......
......@@ -15,8 +15,8 @@ var DEFAULT_WEBSITE_ID = "1"
var BASE_DOMAIN = "http://18.136.9.203" // test
//var BASE_DOMAIN = "http://54.251.144.17" // dev
//var BASE_DOMAIN = "http://18.136.9.203" // test
var BASE_DOMAIN = "http://54.251.144.17" // dev
//var BASE_DOMAIN = "http://13.251.93.24"
var HOST_NAME = BASE_DOMAIN+"/index.php/"
......
......@@ -17,7 +17,7 @@
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>9</string>
<string>10</string>
<key>Fabric</key>
<dict>
<key>APIKey</key>
......
......@@ -18,6 +18,7 @@ class CompletedServicesViewController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
service.isBooking = true
self.setupRefreshHeaderFooter()
}
......
......@@ -130,7 +130,7 @@ extension EditResultViewController: UITableViewDelegate, UITableViewDataSource {
case 3:
return 1
case 4:
return 0
return 1
case 5:
return audioRecordings.count
default:
......@@ -249,6 +249,9 @@ extension EditResultViewController: EditResultProductCellDelegate {
extension EditResultViewController: AudioRecordingCellDelegate {
func recordedAudio(filePath: String) {
print(filePath)
let audioRecording = AudioRecording(audioPath: filePath)
self.audioRecordings.append(audioRecording)
tblresult.reloadData()
......
......@@ -24,6 +24,7 @@ class OnGoingServicesViewController: BaseViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
service.isBooking = true
if service.services.count == 0 {
tblOnGoingNotices.mj_header.beginRefreshing()
}
......
......@@ -18,6 +18,7 @@ class ProcessingViewController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
service.isBooking = true
self.setupRefreshHeaderFooter()
}
......
......@@ -152,11 +152,18 @@ extension HomePageViewController: UITableViewDelegate, UITableViewDataSource {
} else if order.products.first?.serviceType == .FORM{
if let form = Form.VC(with: order.incrementId!, orderId: order.orderId!, categoryType: order.products.first!.categoryType){
self.navigationController?.pushViewController(form, animated: true)
if order.status == .COMPLETE {
let appointmentdetails = Utils.viewController(storyboardName: "Appointment", ofType: ServiceDetailViewController.self)
appointmentdetails.serviceStatus = .tbc
appointmentdetails.incrementId = order.incrementId
appointmentdetails.orderId = order.orderId
self.navigationController?.pushViewController(appointmentdetails, animated: true)
} else {
if let form = Form.VC(with: order.incrementId!, orderId: order.orderId!, categoryType: order.products.first!.categoryType){
self.navigationController?.pushViewController(form, animated: true)
}
}
} else {
self.view.showToast("Unknown service", position: .bottom, popTime: 2.0, dismissOnTap: false)
}
......
......@@ -99,6 +99,7 @@ extension OnlineEnquiryViewController {
ref.childByAutoId().setValue(["msg": txtComment.text,
"name": "Seller",
"status": "unread",
"chatType": "Text",
"timestamp": ServerValue.timestamp()
])
......@@ -132,6 +133,38 @@ extension OnlineEnquiryViewController {
@IBAction func back() {
self.navigationController?.popViewController(animated: true)
}
@IBAction func startRecordAudio() {
Audio.startRecording(success: {
print("recording started")
}) { (errorMessage) in
self.view.showToast(errorMessage, position: .bottom, popTime: 2.0, dismissOnTap: false)
}
}
@IBAction func endRecordAudio() {
Audio.stopRecording(success: { (filePath) in
UploadAudio.upload(file: filePath, success: { (webPath) in
self.ref.childByAutoId().setValue(["msg": webPath,
"name": "Seller",
"status": "unread",
"chatType": "Audio",
"timestamp": ServerValue.timestamp()
])
}, failur: { (errorMessage) in
self.view.showToast(errorMessage, position: .bottom, popTime: 2.0, dismissOnTap: false)
})
}) { (errorMessage) in
print(errorMessage)
}
}
}
......@@ -148,18 +181,31 @@ extension OnlineEnquiryViewController: UITableViewDelegate, UITableViewDataSourc
let chat = chats[indexPath.row]
if chat.name == "Seller" {
let masterCell = tableView.dequeueReusableCell(withIdentifier: "master") as! OnlineEnquiryMasterCell
masterCell.lblMessage.text = chat.msg
return masterCell
} else {
let customerCell = tableView.dequeueReusableCell(withIdentifier: "customer") as! OnlineEnquiryCustomerCell
customerCell.lblMessage.text = chat.msg
customerCell.customerProfileImage = customerProfileImage
return customerCell
if chat.chatType == .text {
if chat.name == "Seller" {
let masterCell = tableView.dequeueReusableCell(withIdentifier: "master") as! OnlineEnquiryMasterCell
masterCell.lblMessage.text = chat.msg
return masterCell
} else {
let customerCell = tableView.dequeueReusableCell(withIdentifier: "customer") as! OnlineEnquiryCustomerCell
customerCell.lblMessage.text = chat.msg
customerCell.customerProfileImage = customerProfileImage
return customerCell
}
} else if chat.chatType == .audio {
if chat.name == "Seller" {
let masterAudioCell = tableView.dequeueReusableCell(withIdentifier: "masterAudio") as! OnlineEnquiryMasterAudioCell
masterAudioCell.audioPath = chat.msg
return masterAudioCell
} else {
let customerAudioCell = tableView.dequeueReusableCell(withIdentifier: "customerAudio") as! OnlineEnquiryCustomerAudioCell
customerAudioCell.audioPath = chat.msg
customerAudioCell.customerProfileImage = customerProfileImage
return customerAudioCell
}
}
return UITableViewCell()
}
}
......@@ -224,3 +270,73 @@ class OnlineEnquiryCustomerCell: UITableViewCell {
}
}
class OnlineEnquiryMasterAudioCell: UITableViewCell {
@IBOutlet var btnPlay: UIButton!
var audioPath: String?
@IBOutlet var imgMaster: UIImageView!
@IBAction func play() {
if let audioPath = audioPath {
Audio.playAudio(audioPath: audioPath, success: {
}) { (errorMesssage) in
self.viewController()?.view.showToast(errorMesssage, position: .bottom, popTime: 2.0, dismissOnTap: false)
}
} else {
self.viewController()?.view.showToast("Audio missing", position: .bottom, popTime: 2.0, dismissOnTap: false)
}
}
override func layoutIfNeeded() {
imgMaster.layer.cornerRadius = imgMaster.frame.size.width/2
if let profileImage = User.profileImage {
let url = URL(string: profileImage)
self.imgMaster.kf.setImage(with: url, placeholder: UIImage(named: "placeholder"), options: [.transition(ImageTransition.fade(1)), .scaleFactor(1.0)], progressBlock: nil, completionHandler: nil)
}
}
}
class OnlineEnquiryCustomerAudioCell: UITableViewCell {
@IBOutlet var btnPlay: UIButton!
var audioPath: String?
var customerProfileImage: String?
@IBOutlet var imgCostomer: UIImageView!
@IBAction func play() {
if let audioPath = audioPath {
Audio.playAudio(audioPath: audioPath, success: {
}) { (errorMesssage) in
self.viewController()?.view.showToast(errorMesssage, position: .bottom, popTime: 2.0, dismissOnTap: false)
}
} else {
self.viewController()?.view.showToast("Audio missing", position: .bottom, popTime: 2.0, dismissOnTap: false)
}
}
override func layoutIfNeeded() {
imgCostomer.layer.cornerRadius = imgCostomer.frame.size.width/2
if let customerProfileImage = customerProfileImage {
let url = URL(string: customerProfileImage)
self.imgCostomer.kf.setImage(with: url, placeholder: UIImage(named: "placeholder"), options: [.transition(ImageTransition.fade(1)), .scaleFactor(1.0)], progressBlock: nil, completionHandler: nil)
}
}
}
......@@ -55,7 +55,7 @@ class ChangePasswordViewController: UIViewController {
}
if txtCurrentPassword.text != txtConfirmPassword.text {
if txtNewPassword.text != txtConfirmPassword.text {
self.view.showToast("New password and current password should be same", position: .bottom, popTime: 2.0, dismissOnTap: false)
return false
}
......@@ -66,3 +66,28 @@ class ChangePasswordViewController: UIViewController {
}
extension ChangePasswordViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == txtCurrentPassword {
txtNewPassword.becomeFirstResponder()
} else if textField == txtNewPassword {
txtConfirmPassword.becomeFirstResponder()
} else if textField == txtConfirmPassword {
self.confirm()
}
return true
}
}
......@@ -57,7 +57,6 @@ class IncomeHistoryViewController: BaseViewController {
self.tblIncome.reloadData()
self.tblIncome.mj_footer.endRefreshing()
}) { (errorMessage) in
self.tblIncome.reloadData()
self.tblIncome.mj_footer.endRefreshing()
self.view.showToast(errorMessage, position: .bottom, popTime: 2.0, dismissOnTap: false)
}
......
......@@ -127,7 +127,7 @@ extension SellerProfileViewController {
@IBAction func logout() {
// User.logout(success: {
User.isLoggedIn = false
User.clearData()
let loginVc = Utils.viewController(storyboardName: "Fengshui", ofType: LoginViewController.self)
self.present(loginVc, animated: true, completion: nil)
// }) { (errorMessage) in
......
......@@ -14,10 +14,11 @@ class LoginViewController: BaseViewController {
@IBOutlet var txtPassword: UITextField!
@IBOutlet var imgCheckUncheck: UIImageView!
var isRemember = false
// var isRemember = false
override func viewDidLoad() {
super.viewDidLoad()
UserSettings.rememberPassword = true
}
}
......@@ -27,17 +28,17 @@ class LoginViewController: BaseViewController {
extension LoginViewController {
@IBAction func rememberPassword() {
if isRemember == false {
isRemember = true
imgCheckUncheck.image = UIImage(named: "check")
UserSettings.rememberPassword = true
} else {
isRemember = false
imgCheckUncheck.image = UIImage(named: "uncheck")
UserSettings.rememberPassword = false
}
}
// @IBAction func rememberPassword() {
// if isRemember == false {
// isRemember = true
// imgCheckUncheck.image = UIImage(named: "check")
// UserSettings.rememberPassword = true
// } else {
// isRemember = false
// imgCheckUncheck.image = UIImage(named: "uncheck")
// UserSettings.rememberPassword = false
// }
// }
@IBAction func forgetPassword() {
......
......@@ -9,6 +9,11 @@
import Foundation
import FirebaseDatabase
enum ChatType: String {
case audio = "Audio"
case text = "Text"
}
class Chat {
let msg: String!
......@@ -16,6 +21,7 @@ class Chat {
let readStatus: String!
var timeStamp: TimeInterval = 0
let chatId: String!
var chatType = ChatType.text
init(json: [String: Any], chatId: String) {
......@@ -27,6 +33,9 @@ class Chat {
if let timeStamp = json["timestamp"] as? Int64 {
self.timeStamp = TimeInterval(exactly: timeStamp)!
}
if let fileType_ = json["chatType"] as? String {
self.chatType = ChatType(rawValue: fileType_)!
}
}
......
......@@ -40,6 +40,7 @@ class Service {
var currentPage = 1
var maxPageNo = 0
var isBooking = false
var services = [Service]()
......
......@@ -49,13 +49,13 @@ extension Service {
"storeId": UserDefaults.standard.value(forKey: "storeId") as! String,
"status": statusParameter,
"pageNumber": self.currentPage,
"type": "booking"
"type": isBooking == true ? "booking" : ""
]
} else {
parameters = ["customerId": User.customerId,
"storeId": UserDefaults.standard.value(forKey: "storeId") as! String,
"pageNumber": self.currentPage,
"type": "booking"
"type": isBooking == true ? "booking" : ""
]
}
......
//
// UploadAudio.swift
// Bhagyashree
//
// Created by SunarcMAC on 01/09/18.
// Copyright © 2018 Sunarc. All rights reserved.
//
import Foundation
import SVProgressHUD
class UploadAudio {
class func upload(file: String, success:@escaping (_ webPath: String) -> Void, failur:@escaping (_ errorMessage: String) -> Void) {
let url = URL(fileURLWithPath: file)
SVProgressHUD.show()
HTTP().uploadFileTmp(withThumbNail: nil, api: API.REPLY_AUDIO, filePath: url, type: "reply_audio") { (response, error) in
if error == nil {
if response!.count > 0 {
if let data = response![0]["data"] as? [[String: Any]] {
if data.count > 0 {
var webPath = ""
if let relativePath = data[0]["relative_path"] as? String {
webPath += relativePath
}
if let file = data[0]["file"] as? String {
webPath += file
}
SVProgressHUD.dismiss()
success(webPath)
} else {
SVProgressHUD.dismiss()
failur("Try again")
}
} else {
SVProgressHUD.dismiss()
failur("Try again")
}
} else {
SVProgressHUD.dismiss()
failur("Try again")
}
} else {
SVProgressHUD.dismiss()
failur(error!.localizedDescription)
}
}
}
}
......@@ -146,6 +146,25 @@ class User {
}
}
class func clearData() {
User.speciality = nil
User.bearerToken = nil
User.gender = nil
User.professionalLevel = nil
User.isOnline = false
User.isLoggedIn = false
User.title = nil
User.profileImage = nil
User.message = nil
User.isSeller = false
User.customerFullName = nil
User.customerId = 0
User.customerEmail = nil
User.cartCount = 0
User.bannerImage = nil
}
}
......@@ -4,7 +4,7 @@
//
// Created by SunarcMAC on 06/07/18.
// Copyright © 2018 Sunarc. All rights reserved.
//
// nervous
import Foundation
......@@ -55,6 +55,9 @@ extension User {
]
HTTP().connectionWithRequestObjectFormUrl(api: API.LOGIN, parameters: parameters, method: .post, indicator: true, success: { (response) in
print(response)
if let response = response as? [String: Any] {
User.message = response["message"] as? String
......@@ -107,6 +110,9 @@ extension User {
let paramenters = ["username": email, "password": password]
HTTP().connectionWithRequestObject(api: API.MAGENTO_TOKEN, parameters: paramenters, method: .post, indicator: true, success: { (successToken) in
print(successToken)
User.bearerToken = successToken as? String
success()
}, failure: { (errorMessage) in
......
......@@ -13,7 +13,7 @@ import AVFoundation
class Audio {
var audioRecorder:AVAudioRecorder!
var audioPlayer: AVAudioPlayer?
var audioPlayer: AVPlayer?
var currentRecordingPath: String?
static let shared = Audio()
......@@ -35,16 +35,13 @@ class Audio {
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setActive(true)
Audio.shared.currentRecordingPath = NSTemporaryDirectory() + "\(Audio.shared.Timestamp).caf"
Audio.shared.currentRecordingPath = NSTemporaryDirectory() + "\(Audio.shared.Timestamp).m4a"
let url = URL(fileURLWithPath: Audio.shared.currentRecordingPath!)
let recordSettings: [String: Any] = [AVFormatIDKey: kAudioFormatAppleIMA4,
AVSampleRateKey: 44100.0,
AVNumberOfChannelsKey: 2,
AVEncoderBitRateKey: 12800,
AVLinearPCMBitDepthKey: 16,
AVEncoderAudioQualityKey: AVAudioQuality.max.rawValue
let recordSettings: [String: Any] = [AVFormatIDKey: kAudioFormatMPEG4AAC,
AVSampleRateKey: 12000.0,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
Audio.shared.audioRecorder = try AVAudioRecorder(url: url, settings: recordSettings)
......@@ -67,14 +64,27 @@ class Audio {
class func playAudio(audioPath: String, success:() -> Void, failure: (_ message: String) -> Void) {
let audioURL = URL(fileURLWithPath: audioPath)
// let audioURL = URL(fileURLWithPath: audioPath)
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
try Audio.shared.audioPlayer = AVAudioPlayer(contentsOf: audioURL)
Audio.shared.audioPlayer!.prepareToPlay()
Audio.shared.audioPlayer!.play()
let url = URL(string: audioPath)
// let playerItem:AVPlayerItem = AVPlayerItem(url: url!)
// Audio.shared.audioPlayer = AVPlayer(playerItem: playerItem)
//
Audio.shared.audioPlayer = AVPlayer(url: url!)
Audio.shared.audioPlayer?.play()
// if Audio.shared.audioPlayer?.rate == 0 {
// Audio.shared.audioPlayer?.play()
// } else {
// Audio.shared.audioPlayer?.pause()
// }
// try Audio.shared.audioPlayer = AVAudioPlayer(contentsOf: audioURL)
// Audio.shared.audioPlayer!.prepareToPlay()
// Audio.shared.audioPlayer!.play()
success()
} catch {
failure(error.localizedDescription)
......
......@@ -44,6 +44,9 @@ class API {
// Notification
static let NOTIFICATION = "mobikulhttp/extra/notificationList"
// Other
static let AUDIO_UPLOAD = "/rest/V1/service/uploadAudio"
}
......
......@@ -103,10 +103,12 @@ class HTTP: NSObject {
} else {
User.regenerateToken { // generate magento token
if contentType == "application/x-www-form-urlencoded" {
HTTP().connectionWithRequestObjectFormUrl(api: api, parameters: parameters, method: method, indicator: indicator, success: success, failure: failure)
} else {
HTTP().connectionWithRequestObject(api: api, parameters: parameters, method: method, indicator: indicator, success: success, failure: failure)
if api == API.MAGENTO_TOKEN {
if contentType == "application/x-www-form-urlencoded" {
HTTP().connectionWithRequestObjectFormUrl(api: api, parameters: parameters, method: method, indicator: indicator, success: success, failure: failure)
} else {
HTTP().connectionWithRequestObject(api: api, parameters: parameters, method: method, indicator: indicator, success: success, failure: failure)
}
}
}
......@@ -255,8 +257,12 @@ extension HTTP {
if let token = User.bearerToken {
headers["Authorization"] = "Bearer \(token)"
}
if let authKey: String = UserDefaults.standard.value(forKey: "authKey") as? String {
headers["authKey"] = authKey
}
Alamofire.upload(multipartFormData: { (multipartFormData: MultipartFormData) in
multipartFormData.append(filePath, withName: type)
}, usingThreshold: SessionManager.multipartFormDataEncodingMemoryThreshold,
......@@ -268,6 +274,16 @@ extension HTTP {
upload.responseJSON(completionHandler: { (dataResponse: DataResponse) in
do {
if let data = dataResponse.data {
let str = String(data: data, encoding: String.Encoding.utf8) as String!
print(str)
if let respo = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions()) as? String {
print(respo)
}
if let arrayResponse = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions()) as? [[String: Any]] {
if arrayResponse.count > 0 {
......@@ -298,6 +314,15 @@ extension HTTP {
if let token = User.bearerToken {
headers["Authorization"] = "Bearer \(token)"
}
if let authKey: String = UserDefaults.standard.value(forKey: "authKey") as? String {
headers["authKey"] = authKey
}
print(HOST_NAME + api)
print(headers)
print(type)
Alamofire.upload(multipartFormData: { (multipartFormData: MultipartFormData) in
......@@ -310,6 +335,7 @@ extension HTTP {
case .success(let upload, _, _):
upload.responseJSON(completionHandler: { (dataResponse: DataResponse) in
do {
if let data = dataResponse.data {
if let arrayResponse = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions()) as? [[String: Any]] {
result(arrayResponse, nil)
......
......@@ -616,14 +616,14 @@
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="ezQ-U5-oO1">
<imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="ezQ-U5-oO1">
<rect key="frame" x="53" y="193" width="15" height="15"/>
<constraints>
<constraint firstAttribute="width" constant="15" id="5gl-Ac-tD7"/>
<constraint firstAttribute="height" constant="15" id="xDC-bd-fQ4"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zCh-an-KAU">
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zCh-an-KAU">
<rect key="frame" x="71" y="184" width="128" height="34"/>
<constraints>
<constraint firstAttribute="height" constant="34" id="1bF-Ga-12O"/>
......@@ -728,7 +728,7 @@
<constraint firstAttribute="bottom" secondItem="r0e-ef-PUj" secondAttribute="bottom" constant="-1" id="wXq-0W-2YS"/>
</constraints>
</scrollView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u1o-98-HT4">
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u1o-98-HT4">
<rect key="frame" x="8" y="436" width="359" height="211"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wJF-Z0-5PM">
......
......@@ -350,28 +350,6 @@
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textView>
<button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aim-ke-KyC">
<rect key="frame" x="280" y="757" width="76" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="76" id="kcR-5W-C0c"/>
<constraint firstAttribute="height" constant="30" id="lGv-vH-2Od"/>
</constraints>
<state key="normal" title="Take Piture"/>
<connections>
<action selector="takePhotoWithBtn:" destination="zhu-Ue-WYE" eventType="touchUpInside" id="0oj-Cu-aAM"/>
</connections>
</button>
<button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ig9-fx-7WX">
<rect key="frame" x="280" y="619" width="76" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="76" id="hgA-CL-7kA"/>
<constraint firstAttribute="height" constant="30" id="xgB-GD-VW2"/>
</constraints>
<state key="normal" title="Take Piture"/>
<connections>
<action selector="takePhotoWithBtn:" destination="zhu-Ue-WYE" eventType="touchUpInside" id="4tE-1k-N6F"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JU5-Fr-HgQ" customClass="DrawButton" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="83" y="856" width="210" height="36"/>
<color key="backgroundColor" red="0.0" green="0.42745098040000001" blue="0.56078431370000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
......@@ -430,7 +408,6 @@
<constraint firstItem="CGG-SI-m0E" firstAttribute="top" secondItem="JU5-Fr-HgQ" secondAttribute="bottom" constant="14" id="IJs-xw-L2F"/>
<constraint firstItem="qUd-bh-MaQ" firstAttribute="top" secondItem="nCb-mZ-4Kn" secondAttribute="bottom" constant="21" id="IRt-G9-NTe"/>
<constraint firstItem="ccy-UX-cXf" firstAttribute="top" secondItem="YHC-d9-7fJ" secondAttribute="bottom" constant="31" id="Jb8-2C-Qwk"/>
<constraint firstAttribute="trailing" secondItem="ig9-fx-7WX" secondAttribute="trailing" constant="19" id="Jc2-Lm-sVt"/>
<constraint firstAttribute="trailing" secondItem="EuR-Ly-5IJ" secondAttribute="trailing" constant="8" id="LLH-HQ-ak5"/>
<constraint firstItem="T0e-su-JX9" firstAttribute="leading" secondItem="gSe-e2-Qxw" secondAttribute="trailing" constant="6" id="Lb3-XJ-9sZ"/>
<constraint firstItem="7we-kl-2AX" firstAttribute="centerY" secondItem="nCb-mZ-4Kn" secondAttribute="centerY" id="Mwc-KI-iC8"/>
......@@ -444,7 +421,6 @@
<constraint firstItem="gSe-e2-Qxw" firstAttribute="centerY" secondItem="H0L-nU-qbv" secondAttribute="centerY" id="XBe-tZ-8sJ"/>
<constraint firstAttribute="trailing" secondItem="QQT-o7-axf" secondAttribute="trailing" constant="7" id="Xvy-7S-tkn"/>
<constraint firstItem="t92-bJ-nme" firstAttribute="top" secondItem="qUd-bh-MaQ" secondAttribute="bottom" constant="35" id="YVp-XM-3xv"/>
<constraint firstItem="aim-ke-KyC" firstAttribute="top" secondItem="TXy-Qw-urq" secondAttribute="bottom" constant="54" id="acV-HA-OGm"/>
<constraint firstItem="RzE-WI-C5J" firstAttribute="leading" secondItem="7we-kl-2AX" secondAttribute="trailing" constant="5" id="bbe-fq-mBJ"/>
<constraint firstItem="020-VN-qc4" firstAttribute="leading" secondItem="vHx-fe-nbC" secondAttribute="leading" constant="8" id="bgd-D3-rcB"/>
<constraint firstItem="YHC-d9-7fJ" firstAttribute="top" secondItem="t92-bJ-nme" secondAttribute="bottom" constant="8" id="dr1-Um-5gz"/>
......@@ -457,11 +433,9 @@
<constraint firstItem="EuR-Ly-5IJ" firstAttribute="top" secondItem="TXy-Qw-urq" secondAttribute="bottom" constant="8" id="kQz-95-MCn"/>
<constraint firstItem="ccy-UX-cXf" firstAttribute="leading" secondItem="vHx-fe-nbC" secondAttribute="leading" constant="9" id="lnm-ma-NZ1"/>
<constraint firstAttribute="trailing" secondItem="ccy-UX-cXf" secondAttribute="trailing" constant="8" id="mOq-A4-Ks4"/>
<constraint firstItem="ig9-fx-7WX" firstAttribute="top" secondItem="Ywz-l1-Adc" secondAttribute="bottom" constant="3" id="mVY-MJ-XUS"/>
<constraint firstAttribute="trailing" secondItem="K1J-os-jv9" secondAttribute="trailing" constant="8" id="nV6-Da-sfD"/>
<constraint firstItem="H0L-nU-qbv" firstAttribute="leading" secondItem="qUd-bh-MaQ" secondAttribute="trailing" constant="23" id="peZ-8I-syB"/>
<constraint firstAttribute="height" constant="1000" id="rlm-VI-vg6"/>
<constraint firstAttribute="trailing" secondItem="aim-ke-KyC" secondAttribute="trailing" constant="19" id="rz7-Oz-FBa"/>
<constraint firstAttribute="trailing" secondItem="So9-hL-qh7" secondAttribute="trailing" constant="8" id="tF2-y5-JtX"/>
<constraint firstItem="YHC-d9-7fJ" firstAttribute="leading" secondItem="vHx-fe-nbC" secondAttribute="leading" constant="8" id="w12-my-FJm"/>
<constraint firstAttribute="trailing" secondItem="t92-bJ-nme" secondAttribute="trailing" constant="7" id="xaN-Zb-8yf"/>
......
......@@ -1490,7 +1490,7 @@
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="profile_image1" translatesAutoresizingMaskIntoConstraints="NO" id="Mgn-Bk-ZnK" customClass="DrawImage" customModule="Bhagyashree" customModuleProvider="target">
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Mgn-Bk-ZnK" customClass="DrawImage" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="8" y="8" width="45" height="45"/>
<color key="backgroundColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
......@@ -1553,7 +1553,7 @@
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="profile_image1" translatesAutoresizingMaskIntoConstraints="NO" id="W3J-nz-ZzT" customClass="DrawImage" customModule="Bhagyashree" customModuleProvider="target">
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="W3J-nz-ZzT" customClass="DrawImage" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="322" y="8" width="45" height="45"/>
<color key="backgroundColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
......@@ -1582,6 +1582,99 @@
<outlet property="lblMessage" destination="tho-QS-me4" id="WSI-Vg-6Ja"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="customerAudio" rowHeight="61" id="o1g-bv-fBp" customClass="OnlineEnquiryCustomerAudioCell" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="0.0" y="172" width="375" height="61"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="o1g-bv-fBp" id="fsO-Dn-hfR">
<rect key="frame" x="0.0" y="0.0" width="375" height="61"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="uUj-A8-ON8" customClass="DrawImage" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="8" y="8" width="45" height="45"/>
<color key="backgroundColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="aw4-MD-OxL"/>
<constraint firstAttribute="height" constant="45" id="hUZ-CW-Qt8"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yv0-Ls-SuI">
<rect key="frame" x="69" y="8" width="45" height="45"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="H2u-OT-Ea0"/>
<constraint firstAttribute="height" constant="45" id="WWu-VI-2Ku"/>
</constraints>
<state key="normal" title="play"/>
<connections>
<action selector="play" destination="o1g-bv-fBp" eventType="touchUpInside" id="Lr2-We-MK3"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="uUj-A8-ON8" firstAttribute="top" secondItem="fsO-Dn-hfR" secondAttribute="top" constant="8" id="ACl-fp-79Z"/>
<constraint firstItem="uUj-A8-ON8" firstAttribute="leading" secondItem="fsO-Dn-hfR" secondAttribute="leading" constant="8" id="CWW-To-llp"/>
<constraint firstItem="Yv0-Ls-SuI" firstAttribute="top" secondItem="fsO-Dn-hfR" secondAttribute="top" constant="8" id="RvO-Ap-0wm"/>
<constraint firstItem="Yv0-Ls-SuI" firstAttribute="leading" secondItem="uUj-A8-ON8" secondAttribute="trailing" constant="16" id="Vkm-rq-IG4"/>
<constraint firstAttribute="bottom" secondItem="uUj-A8-ON8" secondAttribute="bottom" constant="8" id="c6Y-zW-VFJ"/>
<constraint firstAttribute="bottom" secondItem="Yv0-Ls-SuI" secondAttribute="bottom" constant="8" id="sr5-7J-OjO"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="btnPlay" destination="Yv0-Ls-SuI" id="z8X-dt-3hz"/>
<outlet property="imgCostomer" destination="uUj-A8-ON8" id="aB2-uK-84T"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="masterAudio" rowHeight="61" id="Jpr-96-NaU" customClass="OnlineEnquiryMasterAudioCell" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="0.0" y="233" width="375" height="61"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Jpr-96-NaU" id="96A-xb-nLp">
<rect key="frame" x="0.0" y="0.0" width="375" height="61"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ZeJ-0C-KBp" customClass="DrawImage" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="322" y="8" width="45" height="45"/>
<color key="backgroundColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="Giy-8a-es5"/>
<constraint firstAttribute="width" constant="45" id="Yly-eu-xGE"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5iO-aw-rRo">
<rect key="frame" x="263" y="8" width="45" height="45"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="Gms-nh-Jxy"/>
<constraint firstAttribute="height" constant="45" id="bsn-Ba-jPA"/>
</constraints>
<state key="normal" title="play"/>
<connections>
<action selector="play" destination="Jpr-96-NaU" eventType="touchUpInside" id="Nmf-Xb-Pzo"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="5iO-aw-rRo" secondAttribute="bottom" constant="8" id="bP6-zU-bwU"/>
<constraint firstItem="ZeJ-0C-KBp" firstAttribute="top" secondItem="96A-xb-nLp" secondAttribute="top" constant="8" id="d4a-5t-a75"/>
<constraint firstAttribute="trailing" secondItem="ZeJ-0C-KBp" secondAttribute="trailing" constant="8" id="mf8-Bv-nNA"/>
<constraint firstItem="5iO-aw-rRo" firstAttribute="top" secondItem="96A-xb-nLp" secondAttribute="top" constant="8" id="pYe-iX-lDR"/>
<constraint firstAttribute="bottom" secondItem="ZeJ-0C-KBp" secondAttribute="bottom" constant="8" id="rIJ-dG-LgZ"/>
<constraint firstItem="ZeJ-0C-KBp" firstAttribute="leading" secondItem="5iO-aw-rRo" secondAttribute="trailing" constant="14" id="uKK-LI-YYn"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="btnPlay" destination="5iO-aw-rRo" id="opK-LU-VAH"/>
<outlet property="imgMaster" destination="ZeJ-0C-KBp" id="WUH-Pj-W2C"/>
</connections>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="Psj-7u-2hR" id="uUJ-UY-a35"/>
......@@ -1605,6 +1698,10 @@
<constraint firstAttribute="width" constant="30" id="u9Q-h8-dBL"/>
</constraints>
<state key="normal" image="speech"/>
<connections>
<action selector="endRecordAudio" destination="Psj-7u-2hR" eventType="touchUpInside" id="COx-x0-XIp"/>
<action selector="startRecordAudio" destination="Psj-7u-2hR" eventType="touchDown" id="hr3-ci-S7i"/>
</connections>
</button>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="aYB-vl-13h">
<rect key="frame" x="47" y="4" width="264" height="37"/>
......@@ -1723,7 +1820,6 @@
<image name="home" width="25" height="25"/>
<image name="placeholder" width="140" height="144"/>
<image name="profile_icon" width="120" height="120"/>
<image name="profile_image1" width="160" height="160"/>
<image name="shadow" width="720" height="10"/>
<image name="speech" width="64" height="64"/>
<image name="tbc" width="50" height="50"/>
......
......@@ -1764,7 +1764,10 @@
<rect key="frame" x="46" y="6" width="269" height="30"/>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
<textInputTraits key="textInputTraits" returnKeyType="next" secureTextEntry="YES"/>
<connections>
<outlet property="delegate" destination="17r-tI-H77" id="MzH-tj-cGF"/>
</connections>
</textField>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="security_icon" translatesAutoresizingMaskIntoConstraints="NO" id="4qQ-Ft-8gD">
<rect key="frame" x="13" y="10" width="20" height="20"/>
......@@ -1805,7 +1808,10 @@
<rect key="frame" x="46" y="6" width="269" height="30"/>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
<textInputTraits key="textInputTraits" returnKeyType="next" secureTextEntry="YES"/>
<connections>
<outlet property="delegate" destination="17r-tI-H77" id="fVk-S7-5zG"/>
</connections>
</textField>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="security_icon" translatesAutoresizingMaskIntoConstraints="NO" id="DGK-rD-8vn">
<rect key="frame" x="13" y="10" width="20" height="20"/>
......@@ -1847,6 +1853,9 @@
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
<connections>
<outlet property="delegate" destination="17r-tI-H77" id="yMm-tK-8qQ"/>
</connections>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jJb-Hn-AJy">
<rect key="frame" x="0.0" y="43" width="318" height="0.5"/>
......@@ -1880,10 +1889,13 @@
<constraint firstItem="jJb-Hn-AJy" firstAttribute="top" secondItem="VFb-zZ-plw" secondAttribute="bottom" constant="8" id="qFU-ZW-PIJ"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2RO-1S-qkH" customClass="DrawButton" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="82" y="292" width="210" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2RO-1S-qkH" customClass="DrawButton" customModule="Bhagyashree" customModuleProvider="target">
<rect key="frame" x="82" y="292" width="210" height="33"/>
<color key="backgroundColor" red="0.0" green="0.42745098040000001" blue="0.56078431370000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="33" id="hri-F0-Xao"/>
<constraint firstAttribute="width" constant="210" id="tJC-QT-U6Q"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
<state key="normal" title="Confirm">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
......@@ -1906,6 +1918,8 @@
<constraint firstItem="Alg-cj-2sN" firstAttribute="leading" secondItem="kfl-7B-O6b" secondAttribute="leading" id="J9S-Sm-Akz"/>
<constraint firstItem="Alg-cj-2sN" firstAttribute="top" secondItem="1dz-b6-rdD" secondAttribute="top" id="TPC-xE-8xn"/>
<constraint firstItem="jxe-cD-47o" firstAttribute="leading" secondItem="kfl-7B-O6b" secondAttribute="leading" constant="28" id="V7a-7G-J0M"/>
<constraint firstItem="2RO-1S-qkH" firstAttribute="top" secondItem="jxe-cD-47o" secondAttribute="bottom" constant="40" id="ZuD-ey-pqa"/>
<constraint firstItem="2RO-1S-qkH" firstAttribute="centerX" secondItem="kfl-7B-O6b" secondAttribute="centerX" id="dxc-Wx-Rfp"/>
<constraint firstItem="IR0-vK-Y6y" firstAttribute="top" secondItem="Alg-cj-2sN" secondAttribute="bottom" constant="45" id="eIg-qR-eWo"/>
<constraint firstItem="Alg-cj-2sN" firstAttribute="trailing" secondItem="kfl-7B-O6b" secondAttribute="trailing" id="igz-9j-Xhe"/>
<constraint firstItem="kfl-7B-O6b" firstAttribute="trailing" secondItem="IR0-vK-Y6y" secondAttribute="trailing" constant="29" id="mRd-ip-QEE"/>
......@@ -1923,7 +1937,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Bd5-Ua-F52" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3481" y="-3018"/>
<point key="canvasLocation" x="3480.8000000000002" y="-3018.440779610195"/>
</scene>
<!--Me-->
<scene sceneID="ijl-tU-9Jj">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment