Commit 3c9e0dd7 by Olzhas Aldabergenov

pre release version

parent e855d42c
...@@ -58,11 +58,11 @@ ...@@ -58,11 +58,11 @@
ignoreCount = "0" ignoreCount = "0"
continueAfterRunningActions = "No" continueAfterRunningActions = "No"
filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift" filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift"
timestampString = "533643136.585398" timestampString = "534166249.979557"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "605" startingLineNumber = "633"
endingLineNumber = "605" endingLineNumber = "633"
landmarkName = "applicationWillResignActive()" landmarkName = "applicationWillResignActive()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -70,54 +70,6 @@ ...@@ -70,54 +70,6 @@
<BreakpointProxy <BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent <BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift"
timestampString = "533643136.585398"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "605"
endingLineNumber = "605"
landmarkName = "applicationWillResignActive()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift"
timestampString = "533643136.585398"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "575"
endingLineNumber = "575"
landmarkName = "showHelpAlert()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift"
timestampString = "533643136.585398"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "580"
endingLineNumber = "580"
landmarkName = "showHelpAlert()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No" shouldBeEnabled = "No"
ignoreCount = "0" ignoreCount = "0"
continueAfterRunningActions = "No" continueAfterRunningActions = "No"
...@@ -170,12 +122,12 @@ ...@@ -170,12 +122,12 @@
ignoreCount = "0" ignoreCount = "0"
continueAfterRunningActions = "No" continueAfterRunningActions = "No"
filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift" filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift"
timestampString = "532607789.350001" timestampString = "534166249.979557"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "291" startingLineNumber = "311"
endingLineNumber = "291" endingLineNumber = "311"
landmarkName = "textField(textField:shouldChangeCharactersInRange:replacementString:)" landmarkName = "textField(_:shouldChangeCharactersInRange:replacementString:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
...@@ -185,13 +137,13 @@ ...@@ -185,13 +137,13 @@
shouldBeEnabled = "Yes" shouldBeEnabled = "Yes"
ignoreCount = "0" ignoreCount = "0"
continueAfterRunningActions = "No" continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+Login.swift" filePath = "kt/ViewControllers/Cabinet/LKSettingsViewController.swift"
timestampString = "533638224.276248" timestampString = "534142482.986384"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "74" startingLineNumber = "497"
endingLineNumber = "74" endingLineNumber = "497"
landmarkName = "connection(connection:didReceiveData:)" landmarkName = "changeAbonentSettings()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
...@@ -201,175 +153,15 @@ ...@@ -201,175 +153,15 @@
shouldBeEnabled = "Yes" shouldBeEnabled = "Yes"
ignoreCount = "0" ignoreCount = "0"
continueAfterRunningActions = "No" continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift" filePath = "kt/ViewControllers/Cabinet/LKSettingsViewController.swift"
timestampString = "533717289.948236" timestampString = "534142482.986384"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "142" startingLineNumber = "518"
endingLineNumber = "142" endingLineNumber = "518"
landmarkName = "connection(connection:didReceiveData:)" landmarkName = "changeAbonentSettings()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533711902.853936"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "40"
endingLineNumber = "40"
landmarkName = "connection(connection:didReceiveResponse:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533713289.888934"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "60"
endingLineNumber = "60"
landmarkName = "connection(connection:didReceiveResponse:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533714725.253721"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "66"
endingLineNumber = "66"
landmarkName = "connection(connection:didReceiveResponse:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533717289.948236"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "111"
endingLineNumber = "111"
landmarkName = "connection(connection:didReceiveData:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533717289.948236"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "171"
endingLineNumber = "171"
landmarkName = "connection(connection:didReceiveData:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533717289.948236"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "73"
endingLineNumber = "73"
landmarkName = "connection(connection:didReceiveData:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533718542.915068"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "159"
endingLineNumber = "159"
landmarkName = "connection(connection:didReceiveData:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Facade/Facade+NewLogin.swift"
timestampString = "533723569.307867"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "222"
endingLineNumber = "222"
landmarkName = "loginIdPort(login:password:loginType:onSuccess:onError:onFinish:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/ViewControllers/Cabinet/Login/LoginViewController.swift"
timestampString = "533723657.954344"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "329"
endingLineNumber = "329"
landmarkName = "loginRequest(withTrimFirstSymbol:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "kt/Utils/StringUtil.swift"
timestampString = "533724097.514757"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "24"
endingLineNumber = "24"
landmarkName = "containsLetters(checkString:)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints> </Breakpoints>
</Bucket> </Bucket>
...@@ -6,122 +6,122 @@ ...@@ -6,122 +6,122 @@
import Foundation import Foundation
extension Facade { extension Facade {
struct AbonentSettingsNotificationNames { struct AbonentSettingsNotificationNames {
static let GetSuccess = "AbonentSettingsGetSuccess" static let GetSuccess = "AbonentSettingsGetSuccess"
static let GetError = "AbonentSettingsGetError" static let GetError = "AbonentSettingsGetError"
static let SetSuccess = "AbonentSettingsSetSuccess" static let SetSuccess = "AbonentSettingsSetSuccess"
static let SetError = "AbonentSettingsSetError" static let SetError = "AbonentSettingsSetError"
}
func getAbonentSettings(onError: (error: NSError) -> Void, onSuccess: (abonentSettings: AbonentSettings) -> Void) {
if Facade.serverId == nil || Facade.accountId == nil {
getGuid(self.getAbonentInfo)
} else {
let parameters = [
"access_token": Facade.accessToken!,
"client_id": Facade.clientId!,
] as [String: AnyObject]
request(.POST, "https://telecom.kz/api/guid/get_abonent_settings.json", parameters: parameters, encoding: .JSON).responseJSON(completionHandler: { (resp) in
Router.globalLog.debug(resp.request!)
switch resp.result {
case .Failure(let error):
Router.globalLog.error(error.debugDescription)
onError(error: error)
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.GetError, object: self, userInfo: [
// FacadeNotificationErrorKey: error,
// ])
case .Success(let json):
Router.globalLog.debug(resp.response!)
Router.globalLog.debug(json)
let abonentSettings = AbonentSettings(json: JSON(json as! [String : AnyObject]))
onSuccess(abonentSettings: abonentSettings)
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.GetSuccess, object: self, userInfo: [
// FacadeNotificationObjectKey: abonentSettings,
// ])
// } else {
// Router.globalLog.debug(FacadeError.ParsingObject)
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.GetError, object: self, userInfo: [
// FacadeNotificationErrorKey: FacadeError.ParsingObject,
// ])
// }
}})
} }
}
func getAbonentSettings(onError: (error: NSError) -> Void, onSuccess: (abonentSettings: AbonentSettings) -> Void) {
func setAbonentSettings(json: JSON, onError: (error: NSError) -> Void, onSuccess: (success: String) -> Void, onHalfSuccess: (halfSuccess: String) -> Void) { if Facade.serverId == nil || Facade.accountId == nil {
if Facade.serverId == nil || Facade.accountId == nil { getGuid(self.getAbonentInfo)
getGuid(self.getAbonentInfo) } else {
} else { let parameters = [
var parameters = json.dictionaryObject! "access_token": Facade.accessToken!,
parameters["access_token"] = Facade.accessToken! "client_id": Facade.clientId!,
parameters["client_id"] = Facade.clientId! ] as [String: AnyObject]
request(.POST, "https://telecom.kz/api/guid/save_settings.json", parameters: parameters, encoding: .JSON).responseJSON(completionHandler: { (resp) in request(.POST, "https://telecom.kz/api/guid/get_abonent_settings.json", parameters: parameters, encoding: .JSON).responseJSON(completionHandler: { (resp) in
Router.globalLog.debug(resp.request!) Router.globalLog.debug(resp.request!)
switch resp.result { switch resp.result {
case .Failure(let error): case .Failure(let error):
Router.globalLog.error(error.debugDescription) Router.globalLog.error(error.debugDescription)
onError(error: error) onError(error: error)
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.SetError, object: self, userInfo: [ // self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.GetError, object: self, userInfo: [
// FacadeNotificationErrorKey: error, // FacadeNotificationErrorKey: error,
// ]) // ])
case .Success(let json): case .Success(let json):
Router.globalLog.debug(resp.response!) Router.globalLog.debug(resp.response!)
if let success = json["success"] as? String where success == "ok" { Router.globalLog.debug(json)
onSuccess(success: success) let abonentSettings = AbonentSettings(json: JSON(json as! [String : AnyObject]))
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.SetSuccess, object: self) onSuccess(abonentSettings: abonentSettings)
} else { // self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.GetSuccess, object: self, userInfo: [
let error = json["error"] // FacadeNotificationObjectKey: abonentSettings,
if let errorPass = error!!["new_password"] as? String{ // ])
Router.globalLog.error(errorPass) // } else {
onHalfSuccess(halfSuccess: errorPass) // Router.globalLog.debug(FacadeError.ParsingObject)
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.GetError, object: self, userInfo: [
// FacadeNotificationErrorKey: FacadeError.ParsingObject,
// ])
// }
}})
}
}
func setAbonentSettings(json: JSON, onError: (error: NSError) -> Void, onSuccess: (success: String) -> Void, onHalfSuccess: (halfSuccess: String) -> Void) {
if Facade.serverId == nil || Facade.accountId == nil {
getGuid(self.getAbonentInfo)
} else {
var parameters = json.dictionaryObject!
parameters["access_token"] = Facade.accessToken!
parameters["client_id"] = Facade.clientId!
request(.POST, "https://telecom.kz/api/guid/save_settings.json", parameters: parameters, encoding: .JSON).responseJSON(completionHandler: { (resp) in
Router.globalLog.debug(resp.request!)
switch resp.result {
case .Failure(let error):
Router.globalLog.error(error.debugDescription)
onError(error: error)
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.SetError, object: self, userInfo: [
// FacadeNotificationErrorKey: error,
// ])
case .Success(let json):
Router.globalLog.debug(resp.response!)
if let success = json["success"] as? String where success == "ok" {
onSuccess(success: success)
// self.notificationCenter.postNotificationName(AbonentSettingsNotificationNames.SetSuccess, object: self)
} else {
let error = json["error"]
if let errorPass = error!!["new_password"] as? String{
Router.globalLog.error(errorPass)
onHalfSuccess(halfSuccess: errorPass)
} else {
onHalfSuccess(halfSuccess: error as! String)
}
// onHalfSuccess(halfSuccess: json.array[0] as! String)
}
}
})
}
}
func getMailNotificationList(params: [String: AnyObject], onSuccess: (emails: [String]) -> Void, onError: (error: String) -> Void, onFinish: () -> Void) {
request(Router.GetMailNotificationList(params)).response { (req, resp, data, error) in
onFinish()
Router.globalLog.debug(req)
if let error = error {
Router.globalLog.error(error.debugDescription)
onError(error: error.localizedDescription)
} else { } else {
onHalfSuccess(halfSuccess: error as! String) let json = JSON(data: data!)
Router.globalLog.debug(resp)
Router.globalLog.debug(json)
if let emailsDict = json.arrayObject as? [[String: String]]{
var emailsArray:[String] = []
for item in emailsDict {
emailsArray.append(item["email"]!)
}
onSuccess(emails: emailsArray)
}
} }
// onHalfSuccess(halfSuccess: json.array[0] as! String)
}
} }
})
} }
}
func mailNotification(params: [String: AnyObject], onSuccess: (msg: String) -> Void, onError: (error: String) -> Void, onFinish: () -> Void) {
func getMailNotificationList(params: [String: AnyObject], onSuccess: (emails: [String]) -> Void, onError: (error: String) -> Void, onFinish: () -> Void) { request(Router.MailNotification(params)).response { (req, resp, data, error) in
request(Router.GetMailNotificationList(params)).response { (req, resp, data, error) in Router.globalLog.debug(req)
onFinish() onFinish()
Router.globalLog.debug(req) if let error = error {
if let error = error { Router.globalLog.error(error.debugDescription)
Router.globalLog.error(error.debugDescription) onError(error: error.localizedDescription)
onError(error: error.localizedDescription) } else {
} else { let json = JSON(data: data!)
let json = JSON(data: data!) Router.globalLog.debug(resp)
Router.globalLog.debug(resp) Router.globalLog.debug(json)
Router.globalLog.debug(json) onSuccess(msg: json.stringValue)
if let emailsDict = json.arrayObject as? [[String: String]]{ }
var emailsArray:[String] = []
for item in emailsDict {
emailsArray.append(item["email"]!)
}
onSuccess(emails: emailsArray)
} }
}
}
}
func mailNotification(params: [String: AnyObject], onSuccess: (msg: String) -> Void, onError: (error: String) -> Void, onFinish: () -> Void) {
request(Router.MailNotification(params)).response { (req, resp, data, error) in
Router.globalLog.debug(req)
onFinish()
if let error = error {
Router.globalLog.error(error.debugDescription)
onError(error: error.localizedDescription)
} else {
let json = JSON(data: data!)
Router.globalLog.debug(resp)
Router.globalLog.debug(json)
onSuccess(msg: json.stringValue)
}
} }
}
} }
...@@ -236,6 +236,8 @@ extension Facade { ...@@ -236,6 +236,8 @@ extension Facade {
"abonent_id": Facade.accountId!, "abonent_id": Facade.accountId!,
] as [String: AnyObject] ] as [String: AnyObject]
print (parameters)
request(Router.GetAccountServices(parameters)).responseSwiftyJSON { (req, resp, json, error) in request(Router.GetAccountServices(parameters)).responseSwiftyJSON { (req, resp, json, error) in
onComplete() onComplete()
......
...@@ -77,6 +77,10 @@ class AbonentSettingsRequest { ...@@ -77,6 +77,10 @@ class AbonentSettingsRequest {
validationMessage = validationMessage == "" ? LS("service_callback.label.incorrect_email") : "\(validationMessage); \(LS("service_callback.label.incorrect_email"))" validationMessage = validationMessage == "" ? LS("service_callback.label.incorrect_email") : "\(validationMessage); \(LS("service_callback.label.incorrect_email"))"
isValid = false isValid = false
} }
if ( !isValidPassword(newPassword) ) {
validationMessage = validationMessage == "" ? LS("service_callback.label.incorrect_password") : "\(validationMessage); \(LS("service_callback.label.incorrect_password"))"
isValid = false
}
return isValid return isValid
} }
......
...@@ -34,6 +34,7 @@ struct AccountServices { ...@@ -34,6 +34,7 @@ struct AccountServices {
var idTvOnlines: [IdTvOnline] = [] var idTvOnlines: [IdTvOnline] = []
var idPhones: [IdPhone] = [] var idPhones: [IdPhone] = []
for index in megalineIdNetArray.indices { for index in megalineIdNetArray.indices {
megalineIdNets.append(MegalineIdNet.decode(megalineIdNetArray[index])!) megalineIdNets.append(MegalineIdNet.decode(megalineIdNetArray[index])!)
} }
......
...@@ -979,7 +979,8 @@ ...@@ -979,7 +979,8 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_logo" translatesAutoresizingMaskIntoConstraints="NO" id="mDW-lm-hs5"/> <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_logo" translatesAutoresizingMaskIntoConstraints="NO" id="mDW-lm-hs5"/>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Your login or phone" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="8Gg-7i-aK6"> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Your login or phone" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="8Gg-7i-aK6">
<frame key="frameInset" minX="20" minY="195" width="560" height="44"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="44" id="BAR-YC-khp"/> <constraint firstAttribute="height" constant="44" id="BAR-YC-khp"/>
</constraints> </constraints>
...@@ -989,7 +990,8 @@ ...@@ -989,7 +990,8 @@
<outlet property="delegate" destination="faD-wp-261" id="baS-10-bCY"/> <outlet property="delegate" destination="faD-wp-261" id="baS-10-bCY"/>
</connections> </connections>
</textField> </textField>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Your password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="f5l-v6-3UO"> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Your password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="f5l-v6-3UO">
<frame key="frameInset" minX="20" minY="255" width="494" height="44"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="44" id="Pwu-EE-bxi"/> <constraint firstAttribute="height" constant="44" id="Pwu-EE-bxi"/>
</constraints> </constraints>
...@@ -999,7 +1001,8 @@ ...@@ -999,7 +1001,8 @@
<outlet property="delegate" destination="faD-wp-261" id="48W-Ss-gXx"/> <outlet property="delegate" destination="faD-wp-261" id="48W-Ss-gXx"/>
</connections> </connections>
</textField> </textField>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3cO-TQ-vvg" customClass="UIButtonRoundedBlue" customModule="telecom" customModuleProvider="target"> <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3cO-TQ-vvg" customClass="UIButtonRoundedBlue" customModule="telecom" customModuleProvider="target">
<frame key="frameInset" minX="20" minY="338" width="560" height="48"/>
<color key="backgroundColor" red="0.1081278920173645" green="0.43167737126350403" blue="0.7915988564491272" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.1081278920173645" green="0.43167737126350403" blue="0.7915988564491272" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="48" id="Q1J-P6-Mzk"/> <constraint firstAttribute="height" constant="48" id="Q1J-P6-Mzk"/>
...@@ -1046,7 +1049,8 @@ ...@@ -1046,7 +1049,8 @@
<action selector="restorePassword:" destination="faD-wp-261" eventType="touchUpInside" id="F1T-ou-cZl"/> <action selector="restorePassword:" destination="faD-wp-261" eventType="touchUpInside" id="F1T-ou-cZl"/>
</connections> </connections>
</button> </button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VHN-P8-7SV" customClass="UIButtonRoundedGray" customModule="telecom" customModuleProvider="target"> <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VHN-P8-7SV" customClass="UIButtonRoundedGray" customModule="telecom" customModuleProvider="target">
<frame key="frameInset" minX="20" minY="402" width="560" height="48"/>
<color key="backgroundColor" red="0.26219156384468079" green="0.33811080455780029" blue="0.45045208930969238" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.26219156384468079" green="0.33811080455780029" blue="0.45045208930969238" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="48" id="0xq-tl-PXd"/> <constraint firstAttribute="height" constant="48" id="0xq-tl-PXd"/>
...@@ -1062,12 +1066,23 @@ ...@@ -1062,12 +1066,23 @@
<action selector="register:" destination="faD-wp-261" eventType="touchUpInside" id="Bef-Kt-SOO"/> <action selector="register:" destination="faD-wp-261" eventType="touchUpInside" id="Bef-Kt-SOO"/>
</connections> </connections>
</button> </button>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_visibility_off" translatesAutoresizingMaskIntoConstraints="NO" id="Cwt-LS-RsF"> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" image="ic_visibility_off" translatesAutoresizingMaskIntoConstraints="NO" id="Cwt-LS-RsF">
<frame key="frameInset" minX="534" minY="262" width="30" height="30"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="30" id="bhq-d7-zp5"/> <constraint firstAttribute="height" constant="30" id="bhq-d7-zp5"/>
<constraint firstAttribute="width" constant="30" id="wka-an-1kO"/> <constraint firstAttribute="width" constant="30" id="wka-an-1kO"/>
</constraints> </constraints>
</imageView> </imageView>
<segmentedControl opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="QJE-m2-fgc">
<frame key="frameInset" minX="240" minY="141" width="121" height="29"/>
<segments>
<segment title="Телефон"/>
<segment title="Логин"/>
</segments>
<connections>
<action selector="loginSwitch:" destination="faD-wp-261" eventType="valueChanged" id="NGS-ER-3Bn"/>
</connections>
</segmentedControl>
</subviews> </subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
...@@ -1078,14 +1093,16 @@ ...@@ -1078,14 +1093,16 @@
<constraint firstItem="Cwt-LS-RsF" firstAttribute="top" secondItem="8Gg-7i-aK6" secondAttribute="bottom" constant="23" id="9qr-zi-1Mx"/> <constraint firstItem="Cwt-LS-RsF" firstAttribute="top" secondItem="8Gg-7i-aK6" secondAttribute="bottom" constant="23" id="9qr-zi-1Mx"/>
<constraint firstItem="8Gg-7i-aK6" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" id="BRK-Q0-nHX"/> <constraint firstItem="8Gg-7i-aK6" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" id="BRK-Q0-nHX"/>
<constraint firstItem="f5l-v6-3UO" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" constant="-66" id="Ch9-h9-uiX"/> <constraint firstItem="f5l-v6-3UO" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" constant="-66" id="Ch9-h9-uiX"/>
<constraint firstItem="QJE-m2-fgc" firstAttribute="top" secondItem="mDW-lm-hs5" secondAttribute="bottom" constant="16" id="G9c-iI-zZ4"/>
<constraint firstItem="8Gg-7i-aK6" firstAttribute="top" secondItem="QJE-m2-fgc" secondAttribute="bottom" constant="16" id="GGd-ei-E0Y"/>
<constraint firstItem="mDW-lm-hs5" firstAttribute="centerX" secondItem="Nxe-gd-eO9" secondAttribute="centerX" id="IbB-gt-eEd"/> <constraint firstItem="mDW-lm-hs5" firstAttribute="centerX" secondItem="Nxe-gd-eO9" secondAttribute="centerX" id="IbB-gt-eEd"/>
<constraint firstItem="VHN-P8-7SV" firstAttribute="leading" secondItem="Nxe-gd-eO9" secondAttribute="leadingMargin" id="Muz-YL-qDb"/> <constraint firstItem="VHN-P8-7SV" firstAttribute="leading" secondItem="Nxe-gd-eO9" secondAttribute="leadingMargin" id="Muz-YL-qDb"/>
<constraint firstItem="8Gg-7i-aK6" firstAttribute="leading" secondItem="Nxe-gd-eO9" secondAttribute="leadingMargin" id="NhW-an-LLE"/> <constraint firstItem="8Gg-7i-aK6" firstAttribute="leading" secondItem="Nxe-gd-eO9" secondAttribute="leadingMargin" id="NhW-an-LLE"/>
<constraint firstAttribute="trailingMargin" secondItem="Cwt-LS-RsF" secondAttribute="trailing" constant="16" id="QZy-7h-Hhd"/> <constraint firstAttribute="trailingMargin" secondItem="Cwt-LS-RsF" secondAttribute="trailing" constant="16" id="QZy-7h-Hhd"/>
<constraint firstItem="QJE-m2-fgc" firstAttribute="centerX" secondItem="Nxe-gd-eO9" secondAttribute="centerX" id="SvV-dz-eR3"/>
<constraint firstItem="Bfw-9Q-UWv" firstAttribute="top" secondItem="CTQ-mM-kz7" secondAttribute="bottom" id="TsW-qp-xV6"/> <constraint firstItem="Bfw-9Q-UWv" firstAttribute="top" secondItem="CTQ-mM-kz7" secondAttribute="bottom" id="TsW-qp-xV6"/>
<constraint firstItem="VHN-P8-7SV" firstAttribute="top" secondItem="3cO-TQ-vvg" secondAttribute="bottom" constant="16" id="UMs-f4-uP3"/> <constraint firstItem="VHN-P8-7SV" firstAttribute="top" secondItem="3cO-TQ-vvg" secondAttribute="bottom" constant="16" id="UMs-f4-uP3"/>
<constraint firstItem="VHN-P8-7SV" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" id="X7u-gg-4K9"/> <constraint firstItem="VHN-P8-7SV" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" id="X7u-gg-4K9"/>
<constraint firstItem="8Gg-7i-aK6" firstAttribute="top" secondItem="mDW-lm-hs5" secondAttribute="bottom" constant="34" id="o3v-iQ-VXW"/>
<constraint firstItem="3cO-TQ-vvg" firstAttribute="top" secondItem="f5l-v6-3UO" secondAttribute="bottom" constant="39" id="wuW-cg-fmG"/> <constraint firstItem="3cO-TQ-vvg" firstAttribute="top" secondItem="f5l-v6-3UO" secondAttribute="bottom" constant="39" id="wuW-cg-fmG"/>
<constraint firstItem="3cO-TQ-vvg" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" id="xVx-Ew-dZe"/> <constraint firstItem="3cO-TQ-vvg" firstAttribute="trailing" secondItem="Nxe-gd-eO9" secondAttribute="trailingMargin" id="xVx-Ew-dZe"/>
<constraint firstItem="3cO-TQ-vvg" firstAttribute="leading" secondItem="Nxe-gd-eO9" secondAttribute="leadingMargin" id="z83-L9-i4Y"/> <constraint firstItem="3cO-TQ-vvg" firstAttribute="leading" secondItem="Nxe-gd-eO9" secondAttribute="leadingMargin" id="z83-L9-i4Y"/>
...@@ -1100,6 +1117,7 @@ ...@@ -1100,6 +1117,7 @@
<outlet property="_passwordTextField" destination="f5l-v6-3UO" id="4RO-0w-GYE"/> <outlet property="_passwordTextField" destination="f5l-v6-3UO" id="4RO-0w-GYE"/>
<outlet property="_restorePasswordButton" destination="CTQ-mM-kz7" id="Nbi-5l-DD1"/> <outlet property="_restorePasswordButton" destination="CTQ-mM-kz7" id="Nbi-5l-DD1"/>
<outlet property="_signUpButton" destination="VHN-P8-7SV" id="REB-OZ-ne9"/> <outlet property="_signUpButton" destination="VHN-P8-7SV" id="REB-OZ-ne9"/>
<outlet property="loginSwitch" destination="QJE-m2-fgc" id="NFy-8D-rIa"/>
<outlet property="showPasswordIcon" destination="Cwt-LS-RsF" id="10p-MB-Cgk"/> <outlet property="showPasswordIcon" destination="Cwt-LS-RsF" id="10p-MB-Cgk"/>
<segue destination="hMr-gi-mGQ" kind="show" identifier="registrationIntro" id="KRW-H7-bcm"/> <segue destination="hMr-gi-mGQ" kind="show" identifier="registrationIntro" id="KRW-H7-bcm"/>
</connections> </connections>
...@@ -10286,7 +10304,8 @@ ...@@ -10286,7 +10304,8 @@
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Qvp-Iw-GC4"> <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Qvp-Iw-GC4">
<frame key="frameInset" width="375" height="620"/> <frame key="frameInset" width="375" height="620"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DCb-jv-VOO"> <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DCb-jv-VOO">
<rect key="frame" x="0.0" y="0.0" width="375" height="606"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Отправьте нам свои данные, мы вам перезвоним" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O66-Ex-m0d"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Отправьте нам свои данные, мы вам перезвоним" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O66-Ex-m0d">
<constraints> <constraints>
...@@ -10384,7 +10403,7 @@ ...@@ -10384,7 +10403,7 @@
<constraints> <constraints>
<constraint firstAttribute="trailing" secondItem="HUT-nq-MG8" secondAttribute="trailing" constant="25" id="0VM-UK-rsN"/> <constraint firstAttribute="trailing" secondItem="HUT-nq-MG8" secondAttribute="trailing" constant="25" id="0VM-UK-rsN"/>
<constraint firstItem="mVB-gZ-yFh" firstAttribute="top" secondItem="KMV-Sk-ToZ" secondAttribute="bottom" constant="8" id="2hl-5s-O3u"/> <constraint firstItem="mVB-gZ-yFh" firstAttribute="top" secondItem="KMV-Sk-ToZ" secondAttribute="bottom" constant="8" id="2hl-5s-O3u"/>
<constraint firstAttribute="bottom" secondItem="4ef-l4-Fbk" secondAttribute="bottom" constant="175" id="52Y-qU-c9w"/> <constraint firstAttribute="bottom" secondItem="4ef-l4-Fbk" secondAttribute="bottom" constant="16" id="52Y-qU-c9w"/>
<constraint firstAttribute="trailing" secondItem="mVB-gZ-yFh" secondAttribute="trailing" constant="25" id="6GS-Ic-vPS"/> <constraint firstAttribute="trailing" secondItem="mVB-gZ-yFh" secondAttribute="trailing" constant="25" id="6GS-Ic-vPS"/>
<constraint firstItem="HLC-0L-Fcj" firstAttribute="leading" secondItem="DCb-jv-VOO" secondAttribute="leading" constant="24" id="AMH-dx-T8v"/> <constraint firstItem="HLC-0L-Fcj" firstAttribute="leading" secondItem="DCb-jv-VOO" secondAttribute="leading" constant="24" id="AMH-dx-T8v"/>
<constraint firstItem="HUT-nq-MG8" firstAttribute="top" secondItem="xSa-1g-qEu" secondAttribute="bottom" constant="29" id="DQq-Se-ofn"/> <constraint firstItem="HUT-nq-MG8" firstAttribute="top" secondItem="xSa-1g-qEu" secondAttribute="bottom" constant="29" id="DQq-Se-ofn"/>
...@@ -10420,10 +10439,11 @@ ...@@ -10420,10 +10439,11 @@
<constraint firstAttribute="trailing" secondItem="DCb-jv-VOO" secondAttribute="trailing" id="33c-q0-j1z"/> <constraint firstAttribute="trailing" secondItem="DCb-jv-VOO" secondAttribute="trailing" id="33c-q0-j1z"/>
<constraint firstItem="DCb-jv-VOO" firstAttribute="top" secondItem="Qvp-Iw-GC4" secondAttribute="top" id="3Ln-if-qGC"/> <constraint firstItem="DCb-jv-VOO" firstAttribute="top" secondItem="Qvp-Iw-GC4" secondAttribute="top" id="3Ln-if-qGC"/>
<constraint firstItem="DCb-jv-VOO" firstAttribute="leading" secondItem="Qvp-Iw-GC4" secondAttribute="leading" id="tGJ-br-ZVX"/> <constraint firstItem="DCb-jv-VOO" firstAttribute="leading" secondItem="Qvp-Iw-GC4" secondAttribute="leading" id="tGJ-br-ZVX"/>
<constraint firstAttribute="bottom" secondItem="DCb-jv-VOO" secondAttribute="bottom" id="wgV-fb-NNq"/> <constraint firstAttribute="bottom" secondItem="DCb-jv-VOO" secondAttribute="bottom" constant="46" id="wgV-fb-NNq"/>
</constraints> </constraints>
</scrollView> </scrollView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ejc-eY-3FZ" customClass="UIButtonRoundedBlue" customModule="telecom" customModuleProvider="target"> <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ejc-eY-3FZ" customClass="UIButtonRoundedBlue" customModule="telecom" customModuleProvider="target">
<frame key="frameInset" minY="618" width="375" height="49"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="46" id="bBA-qh-E0E"/> <constraint firstAttribute="height" constant="46" id="bBA-qh-E0E"/>
</constraints> </constraints>
...@@ -10437,11 +10457,11 @@ ...@@ -10437,11 +10457,11 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints> <constraints>
<constraint firstItem="OqF-Wd-JuB" firstAttribute="top" secondItem="ejc-eY-3FZ" secondAttribute="bottom" id="1kK-hM-Fvp"/> <constraint firstItem="OqF-Wd-JuB" firstAttribute="top" secondItem="ejc-eY-3FZ" secondAttribute="bottom" id="1kK-hM-Fvp"/>
<constraint firstItem="ejc-eY-3FZ" firstAttribute="top" secondItem="Qvp-Iw-GC4" secondAttribute="bottom" id="4aY-Wv-OLj"/>
<constraint firstItem="Qvp-Iw-GC4" firstAttribute="top" secondItem="9L3-ah-pnG" secondAttribute="top" id="7aZ-17-Wbf"/> <constraint firstItem="Qvp-Iw-GC4" firstAttribute="top" secondItem="9L3-ah-pnG" secondAttribute="top" id="7aZ-17-Wbf"/>
<constraint firstItem="Qvp-Iw-GC4" firstAttribute="leading" secondItem="9L3-ah-pnG" secondAttribute="leading" id="XcG-90-Xrj"/> <constraint firstItem="Qvp-Iw-GC4" firstAttribute="leading" secondItem="9L3-ah-pnG" secondAttribute="leading" id="XcG-90-Xrj"/>
<constraint firstItem="ejc-eY-3FZ" firstAttribute="leading" secondItem="9L3-ah-pnG" secondAttribute="leading" id="XeM-JS-3mJ"/> <constraint firstItem="ejc-eY-3FZ" firstAttribute="leading" secondItem="9L3-ah-pnG" secondAttribute="leading" id="XeM-JS-3mJ"/>
<constraint firstAttribute="trailing" secondItem="Qvp-Iw-GC4" secondAttribute="trailing" id="XgT-9n-OwH"/> <constraint firstAttribute="trailing" secondItem="Qvp-Iw-GC4" secondAttribute="trailing" id="XgT-9n-OwH"/>
<constraint firstItem="ejc-eY-3FZ" firstAttribute="top" secondItem="Qvp-Iw-GC4" secondAttribute="bottom" id="f31-XP-dzG"/>
<constraint firstAttribute="trailing" secondItem="ejc-eY-3FZ" secondAttribute="trailing" id="pL0-Lq-45T"/> <constraint firstAttribute="trailing" secondItem="ejc-eY-3FZ" secondAttribute="trailing" id="pL0-Lq-45T"/>
<constraint firstItem="DCb-jv-VOO" firstAttribute="width" secondItem="9L3-ah-pnG" secondAttribute="width" id="wpq-2e-fhQ"/> <constraint firstItem="DCb-jv-VOO" firstAttribute="width" secondItem="9L3-ah-pnG" secondAttribute="width" id="wpq-2e-fhQ"/>
</constraints> </constraints>
...@@ -10455,7 +10475,7 @@ ...@@ -10455,7 +10475,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="45n-CL-VPS" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="45n-CL-VPS" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="13660" y="-287.40629685157421"/> <point key="canvasLocation" x="13658.4" y="-288.30584707646182"/>
</scene> </scene>
<!--Payment For Provider View Controller--> <!--Payment For Provider View Controller-->
<scene sceneID="CFG-Kb-zfz"> <scene sceneID="CFG-Kb-zfz">
...@@ -137,6 +137,7 @@ ...@@ -137,6 +137,7 @@
"service_callback.button.send" = "Call me back"; "service_callback.button.send" = "Call me back";
"service_callback.label.incorrect_email" = "Incorrect e-mail"; "service_callback.label.incorrect_email" = "Incorrect e-mail";
"service_callback.label.incorrect_phone" = "Incorrect phone number"; "service_callback.label.incorrect_phone" = "Incorrect phone number";
"service_callback.label.incorrect_password" = "Длина пароля должна быть не менее 8 символов, содержать как минимум одну цифру, одну заглавную и одну строчную букву";
// service_subscribe // service_subscribe
"service_subscribe.title" = "Connect"; "service_subscribe.title" = "Connect";
...@@ -436,6 +437,8 @@ ...@@ -436,6 +437,8 @@
"login.text_field.your_login.placeholder" = "Login or password"; "login.text_field.your_login.placeholder" = "Login or password";
"login.text_field.your_password.placeholder" = "Password"; "login.text_field.your_password.placeholder" = "Password";
"login.type_login_or_phone" = "Type login or phone number"; "login.type_login_or_phone" = "Type login or phone number";
"login.type_login" = "Введите логин";
"login.type_phone" = "Введите телефон";
"login.type_password" = "Type password"; "login.type_password" = "Type password";
"login.recovery.successfully_sent" = "На Вашу почту %@ были отправлены данные для восстановления пароля личного кабинета."; "login.recovery.successfully_sent" = "На Вашу почту %@ были отправлены данные для восстановления пароля личного кабинета.";
"login.button.login" = "Login"; "login.button.login" = "Login";
......
...@@ -137,6 +137,7 @@ ...@@ -137,6 +137,7 @@
"service_callback.button.send" = "Маған қайта қоңырау шалу"; "service_callback.button.send" = "Маған қайта қоңырау шалу";
"service_callback.label.incorrect_email" = "Қате e-mail"; "service_callback.label.incorrect_email" = "Қате e-mail";
"service_callback.label.incorrect_phone" = "Қате телефон нөмірі"; "service_callback.label.incorrect_phone" = "Қате телефон нөмірі";
"service_callback.label.incorrect_password" = "Длина пароля должна быть не менее 8 символов, содержать как минимум одну цифру, одну заглавную и одну строчную букву";
// service_subscribe // service_subscribe
"service_subscribe.title" = "Қосу"; "service_subscribe.title" = "Қосу";
...@@ -433,6 +434,8 @@ ...@@ -433,6 +434,8 @@
"login.text_field.your_login.placeholder" = "Логин немесу телефон"; "login.text_field.your_login.placeholder" = "Логин немесу телефон";
"login.text_field.your_password.placeholder" = "Құпиясөз"; "login.text_field.your_password.placeholder" = "Құпиясөз";
"login.type_login_or_phone" = "Логин немесе телефонды жазыңыз"; "login.type_login_or_phone" = "Логин немесе телефонды жазыңыз";
"login.type_login" = "Введите логин";
"login.type_phone" = "Введите телефон";
"login.type_password" = "Құпиясөзді жазыңыз"; "login.type_password" = "Құпиясөзді жазыңыз";
"login.recovery.successfully_sent" = "На Вашу почту %@ были отправлены данные для восстановления пароля личного кабинета."; "login.recovery.successfully_sent" = "На Вашу почту %@ были отправлены данные для восстановления пароля личного кабинета.";
"login.button.login" = "Логин"; "login.button.login" = "Логин";
......
...@@ -137,6 +137,7 @@ ...@@ -137,6 +137,7 @@
"service_callback.button.send" = "Перезвонить мне"; "service_callback.button.send" = "Перезвонить мне";
"service_callback.label.incorrect_email" = "Некорректный e-mail"; "service_callback.label.incorrect_email" = "Некорректный e-mail";
"service_callback.label.incorrect_phone" = "Указан некорректный номер телефона"; "service_callback.label.incorrect_phone" = "Указан некорректный номер телефона";
"service_callback.label.incorrect_password" = "Длина пароля должна быть не менее 8 символов, содержать как минимум одну цифру, одну заглавную и одну строчную букву";
// service_subscribe // service_subscribe
"service_subscribe.title" = "Подключить"; "service_subscribe.title" = "Подключить";
...@@ -438,6 +439,8 @@ ...@@ -438,6 +439,8 @@
"login.text_field.your_login.placeholder" = "Логин или номер телефона с кодом города"; "login.text_field.your_login.placeholder" = "Логин или номер телефона с кодом города";
"login.text_field.your_password.placeholder" = "Пароль"; "login.text_field.your_password.placeholder" = "Пароль";
"login.type_login_or_phone" = "Введите логин или телефон"; "login.type_login_or_phone" = "Введите логин или телефон";
"login.type_login" = "Введите логин";
"login.type_phone" = "Введите телефон";
"login.type_password" = "Введите пароль"; "login.type_password" = "Введите пароль";
"login.recovery.successfully_sent" = "На Вашу почту %@ были отправлены данные для восстановления пароля личного кабинета."; "login.recovery.successfully_sent" = "На Вашу почту %@ были отправлены данные для восстановления пароля личного кабинета.";
"login.button.login" = "Логин"; "login.button.login" = "Логин";
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
<dict> <dict>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>en</string> <string>en</string>
<key>CFBundleDisplayName</key>
<string>Telecom</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
...@@ -19,7 +21,7 @@ ...@@ -19,7 +21,7 @@
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>65</string> <string>71</string>
<key>Fabric</key> <key>Fabric</key>
<dict> <dict>
<key>APIKey</key> <key>APIKey</key>
......
...@@ -57,12 +57,15 @@ class CustomAlertViewController: ScrolledViewController, StoryboardFetchable { ...@@ -57,12 +57,15 @@ class CustomAlertViewController: ScrolledViewController, StoryboardFetchable {
var kbRect = info[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue var kbRect = info[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue
kbRect = view.convertRect(kbRect, fromView: nil) kbRect = view.convertRect(kbRect, fromView: nil)
keyboardDidShowCallback?(self) keyboardDidShowCallback?(self)
originalOrigin = view.frame.origin if ( originalOrigin == nil ) {
originalOrigin = view.frame.origin
}
// if keyboardShown { // if keyboardShown {
// originalOrigin = CGPoint(x: 0, y: view.frame.origin.y + kbRect.height - 75) // originalOrigin = CGPoint(x: 0, y: view.frame.origin.y + kbRect.height - 75)
// } // }
if !keyboardShown { if !keyboardShown {
view.frame.origin = CGPoint(x: view.frame.origin.x, y: kbRect.origin.y - (kbRect.height + 95)) //view.frame.origin = CGPoint(x: view.frame.origin.x, y: kbRect.origin.y - (kbRect.height + 95))
view.frame.origin = CGPoint(x: view.frame.origin.x, y: originalOrigin!.y - 100)
keyboardShown = true keyboardShown = true
} }
} }
...@@ -75,8 +78,10 @@ class CustomAlertViewController: ScrolledViewController, StoryboardFetchable { ...@@ -75,8 +78,10 @@ class CustomAlertViewController: ScrolledViewController, StoryboardFetchable {
override func keyboardWillBeHidden(notification: NSNotification) { override func keyboardWillBeHidden(notification: NSNotification) {
tapGestureRecognizer.enabled = false tapGestureRecognizer.enabled = false
keyboardShown = false if ( keyboardShown ) {
view.frame.origin = CGPoint(x: view.frame.origin.x, y: originalOrigin == nil ? 0 : originalOrigin!.y) view.frame.origin = originalOrigin!//CGPoint(x: view.frame.origin.x, y: /*originalOrigin == nil ? 0 :*/ originalOrigin!.y)
keyboardShown = false
}
} }
override func viewDidLoad() { override func viewDidLoad() {
......
...@@ -44,3 +44,10 @@ func isValidMacAddress(testStr: String) -> Bool { ...@@ -44,3 +44,10 @@ func isValidMacAddress(testStr: String) -> Bool {
let result = macTest.evaluateWithObject(testStr) let result = macTest.evaluateWithObject(testStr)
return result return result
} }
func isValidPassword(password: String) -> Bool {
let pwdRegEx = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,}$"
let pwdTest = NSPredicate(format:"SELF MATCHES %@", pwdRegEx)
let result = pwdTest.evaluateWithObject(password)
return result
}
...@@ -18,7 +18,7 @@ class AccountServicesViewController: ViewControllerWithMenu { ...@@ -18,7 +18,7 @@ class AccountServicesViewController: ViewControllerWithMenu {
super.viewDidLoad() super.viewDidLoad()
self.navigationItem.title = "Мои услуги" self.navigationItem.title = LS("my_services.title")//, desc) "Мои услуги"
configureRightIDTVCreate() configureRightIDTVCreate()
......
...@@ -493,7 +493,7 @@ class LKSettingsViewController: ViewControllerWithCustomTitle, UITableViewDelega ...@@ -493,7 +493,7 @@ class LKSettingsViewController: ViewControllerWithCustomTitle, UITableViewDelega
mobilePhone: Int64(mobilePhone), mobilePhone: Int64(mobilePhone),
oldPassword: oldPassword, oldPassword: oldPassword,
newPassword: newPassword) newPassword: newPassword)
print (abSet)
guard abSet.validateFields() guard abSet.validateFields()
else { else {
AlertViewUtil.showAlert(abSet.validationMessage); AlertViewUtil.showAlert(abSet.validationMessage);
......
...@@ -18,6 +18,7 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -18,6 +18,7 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
@IBOutlet weak var btnLoginMode: UIButton! @IBOutlet weak var btnLoginMode: UIButton!
@IBOutlet weak var lblOrMode: UILabel! @IBOutlet weak var lblOrMode: UILabel!
@IBOutlet weak var showPasswordIcon: UIImageView! @IBOutlet weak var showPasswordIcon: UIImageView!
@IBOutlet weak var loginSwitch: UISegmentedControl!
var isShowedAlert : Bool = false var isShowedAlert : Bool = false
let defaults = NSUserDefaults.standardUserDefaults() let defaults = NSUserDefaults.standardUserDefaults()
...@@ -93,6 +94,9 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -93,6 +94,9 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
showPasswordIcon.addGestureRecognizer(showPasswordGesture) showPasswordIcon.addGestureRecognizer(showPasswordGesture)
_loginTextField.addTarget(self, action: #selector(LoginViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
// NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(applicationWillResignActive), name: UIApplicationWillResignActiveNotification, object: nil) // NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(applicationWillResignActive), name: UIApplicationWillResignActiveNotification, object: nil)
} }
...@@ -108,30 +112,47 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -108,30 +112,47 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
} }
} }
func keyboardWillShow(notification: NSNotification) { override func keyboardDidShow(notification: NSNotification) {
// if (keyboardShowed) {
// return
// }
// if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
// self.view.frame.origin.y -= (keyboardSize.height / 2)
// }
// keyboardShowed = true
} }
func keyboardWillHide(notification: NSNotification) { override func keyboardWillBeHidden(notification: NSNotification) {
// if (!keyboardShowed) {
// return
// }
// if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
// self.view.frame.origin.y += (keyboardSize.height / 2)
// }
// keyboardShowed = false
} }
//// override func keyboardDidShow(notification: NSNotification) {
// func keyboardWillShow(notification: NSNotification) {
// if (keyboardShowed) {
// return
// }
// if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
// self.view.frame.origin.y -= (keyboardSize.height / 2)
// }
// keyboardShowed = true
// }
//
//
//// override func keyboardWillBeHidden(notification: NSNotification) {
// func keyboardWillHide(notification: NSNotification) {
// if (!keyboardShowed) {
// return
// }
// if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
// self.view.frame.origin.y += (keyboardSize.height / 2)
// }
// keyboardShowed = false
// }
override func viewDidAppear(animated: Bool) { override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated) super.viewDidAppear(animated)
_loginTextField.setBottomBorder(Color.GrayTableCellSeparator) _loginTextField.setBottomBorder(Color.GrayTableCellSeparator)
_passwordTextField.setBottomBorder(Color.GrayTableCellSeparator) _passwordTextField.setBottomBorder(Color.GrayTableCellSeparator)
loginSwitch.setTitle(LS("login.button.login"), forSegmentAtIndex: 1)
loginSwitch.setTitle(LS("login.button.phone_number"), forSegmentAtIndex: 0)
loginSwitch.selectedSegmentIndex = 0
loginSwitch.sendActionsForControlEvents(UIControlEvents.ValueChanged)
_loginTextField.placeholder = LS("login.type_phone")
} }
override func viewDidLayoutSubviews() { override func viewDidLayoutSubviews() {
...@@ -163,10 +184,9 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -163,10 +184,9 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
localizeSubviews() localizeSubviews()
fillFieldsWithDefaultValues() //fillFieldsWithDefaultValues()
self.loginTryCount = 0 self.loginTryCount = 0
_loginTextField.text = ""//"7172682610" // ntcnjdsq 7278177224
_passwordTextField.text = ""//"NewPassword1" _passwordTextField.text = ""//"NewPassword1"
let loginFieldValue = _loginTextField.text let loginFieldValue = _loginTextField.text
...@@ -325,19 +345,26 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -325,19 +345,26 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
defaults.setValue(username, forKey: "UserName") defaults.setValue(username, forKey: "UserName")
defaults.setValue(password, forKey: "Password") defaults.setValue(password, forKey: "Password")
var loginType = Facade.LoginType.Login // var loginType = Facade.LoginType.Login
if containsLetters(_loginTextField.text!) { // if containsLetters(_loginTextField.text!) {
// loginType = Facade.LoginType.Login
// } else { //if _loginTextField.keyboardType == UIKeyboardType.PhonePad {
// loginType = Facade.LoginType.PhoneNumber
// username = username.stringByReplacingOccurrencesOfString("+", withString: "")
// if (withTrimFirstSymbol) {
// let index : String.Index = username.startIndex.advancedBy(1)
// username = username.substringFromIndex(index)
// }
// Facade.phoneNumber = username
//
// }
var loginType = Facade.LoginType.PhoneNumber
if ( !isPhoneLoginOn() ) {
loginType = Facade.LoginType.Login loginType = Facade.LoginType.Login
} else { //if _loginTextField.keyboardType == UIKeyboardType.PhonePad { } else {
loginType = Facade.LoginType.PhoneNumber username = getPhoneDigits(username)
username = username.stringByReplacingOccurrencesOfString("+", withString: "")
if (withTrimFirstSymbol) {
let index : String.Index = username.startIndex.advancedBy(1)
username = username.substringFromIndex(index)
}
Facade.phoneNumber = username
} }
self.processRequest(true) self.processRequest(true)
sendRequestLogin(username, password: password, loginType: loginType.rawValue, onSuccess: { sendRequestLogin(username, password: password, loginType: loginType.rawValue, onSuccess: {
UserManager.sharedInstance().rLogin = username UserManager.sharedInstance().rLogin = username
...@@ -364,14 +391,14 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -364,14 +391,14 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
func processingLoggedInError(error : NSError) { func processingLoggedInError(error : NSError) {
dispatch_async(dispatch_get_main_queue()) { dispatch_async(dispatch_get_main_queue()) {
// if self.loginTryCount < 2 { // if self.loginTryCount < 2 {
// self.loginTryCount += 1 // self.loginTryCount += 1
// self.loginRequest(true) // self.loginRequest(true)
// } else { // } else {
self.loginTryCount = 0 self.loginTryCount = 0
self.processRequest(false) self.processRequest(false)
AlertViewUtil.showErrorAlert(error.localizedDescription, vc: self) AlertViewUtil.showErrorAlert(error.localizedDescription, vc: self)
// } // }
} }
} }
...@@ -485,27 +512,27 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -485,27 +512,27 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
@IBAction func webView_touchUpInside(sender: UIButton) { @IBAction func webView_touchUpInside(sender: UIButton) {
} }
// @IBAction func testLogin_touchUpInside(sender: UIButton) { // @IBAction func testLogin_touchUpInside(sender: UIButton) {
// //
// // 7278177224 // // 7278177224
// //
// _facade.login("7278177224", password: "Fvbh1988", loginType: Facade.LoginType.PhoneNumber, onSuccess: { () -> Void in // _facade.login("7278177224", password: "Fvbh1988", loginType: Facade.LoginType.PhoneNumber, onSuccess: { () -> Void in
// if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Phone { // if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Phone {
// self.performSegueWithIdentifier("loggedIn", sender: nil) // self.performSegueWithIdentifier("loggedIn", sender: nil)
// } else if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad { // } else if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
// AbonentInfoManager.sharedInstance.updateUserInfo() // AbonentInfoManager.sharedInstance.updateUserInfo()
// self.dismissViewControllerAnimated(true, completion: nil) // self.dismissViewControllerAnimated(true, completion: nil)
// } // }
// self.processRequest(false) // self.processRequest(false)
// }, onError: { (error) -> Void in // }, onError: { (error) -> Void in
// dispatch_async(dispatch_get_main_queue()) { // dispatch_async(dispatch_get_main_queue()) {
// self.processRequest(false) // self.processRequest(false)
// AlertViewUtil.showErrorAlert(error.localizedDescription, vc: self) // AlertViewUtil.showErrorAlert(error.localizedDescription, vc: self)
// } // }
// }, onFinish: { // }, onFinish: {
// // self.processRequest(false) // // self.processRequest(false)
// }) // })
// } // }
@IBAction func sendLogs_touchUpInside(sender: UIButton) { @IBAction func sendLogs_touchUpInside(sender: UIButton) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
...@@ -514,7 +541,8 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -514,7 +541,8 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
// MARK: Localization // MARK: Localization
func localizeSubviews() { func localizeSubviews() {
_loginTextField.placeholder = §"login.text_field.your_login.placeholder"
loginSwitchPhoneSelected()
_passwordTextField.placeholder = §"login.text_field.your_password.placeholder" _passwordTextField.placeholder = §"login.text_field.your_password.placeholder"
let signIn = §"login.button.sign_in" let signIn = §"login.button.sign_in"
let signUp = §"login.button.sign_up" let signUp = §"login.button.sign_up"
...@@ -605,4 +633,42 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning ...@@ -605,4 +633,42 @@ class LoginViewController: ScrolledViewController, UIViewControllerTransitioning
self.view.endEditing(true) self.view.endEditing(true)
} }
@IBAction func loginSwitch(sender: UISegmentedControl) {
if ( self.loginSwitch.selectedSegmentIndex == 0 ) {
// phone view
loginSwitchPhoneSelected()
} else {
// login view
loginSwitchLoginSelected()
}
}
func loginSwitchPhoneSelected() {
_loginTextField.placeholder = LS("login.type_phone")
_loginTextField.keyboardType = UIKeyboardType.NumberPad
_loginTextField.text = "+7 "
// _loginTextField.text = ""//"7172682610" // ntcnjdsq 7278177224
// _passwordTextField.text = ""//"NewPassword1"
}
func loginSwitchLoginSelected() {
_loginTextField.placeholder = LS("login.type_login")
_loginTextField.keyboardType = UIKeyboardType.Default
_loginTextField.text = ""
}
func textFieldDidChange(textField: UITextField) {
//your code
if ( isPhoneLoginOn() ) {
textField.text = getFormattedPhone(textField.text!)
}
}
func isPhoneLoginOn() -> Bool {
return loginSwitch.selectedSegmentIndex == 0
}
} }
...@@ -29,8 +29,8 @@ class DeviceSettingsViewController : UIViewController, UITableViewDataSource, UI ...@@ -29,8 +29,8 @@ class DeviceSettingsViewController : UIViewController, UITableViewDataSource, UI
[switchedCellIdentifier, "lock"], [switchedCellIdentifier, "lock"],
[switchedCellIdentifier, "service_messages"], [switchedCellIdentifier, "service_messages"],
[buttonedCellIdentifier, "promised_payment"], [buttonedCellIdentifier, "promised_payment"],
[switchedCellIdentifier, "parental_control"], //[switchedCellIdentifier, "parental_control"],
[switchedCellIdentifier, "static_ip"], //[switchedCellIdentifier, "static_ip"],
[buttonedCellIdentifier, "tariff_plan_change_history"]] [buttonedCellIdentifier, "tariff_plan_change_history"]]
var switches: [String: UISwitch] = [String: UISwitch]() var switches: [String: UISwitch] = [String: UISwitch]()
var buttons: [String: UIButton] = [String: UIButton]() var buttons: [String: UIButton] = [String: UIButton]()
...@@ -87,8 +87,8 @@ class DeviceSettingsViewController : UIViewController, UITableViewDataSource, UI ...@@ -87,8 +87,8 @@ class DeviceSettingsViewController : UIViewController, UITableViewDataSource, UI
self.tableView.delegate = self self.tableView.delegate = self
self.tableView.reloadData() self.tableView.reloadData()
self.getPromisedPayment() self.getPromisedPayment()
self.getParentalControl() //self.getParentalControl()
self.getStaticIp() //self.getStaticIp()
} }
self.loadingIndicator?.stopAnimating() self.loadingIndicator?.stopAnimating()
}) })
......
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