Last active
October 20, 2017 18:33
-
-
Save Alinaprotsyuk/1c980cf8de1b3843e922387aab91bb95 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
class AddNewRecordViewController: UIViewController { | |
@IBOutlet weak var subjectNameTextField: UITextField! | |
@IBOutlet weak var subjectDescriptionTextField: UITextView! | |
var updateDates = false | |
var subjectId: String = "" | |
var name: String = "" | |
var desc: String = "" | |
let queryService = QueryService() | |
var saveAction: ((Records?) -> ())? | |
var item: Records? | |
private func showMessage(message: String) { | |
let alert = UIAlertController(title: NSLocalizedString("Warning", comment: "Alert title"), message: message, preferredStyle: .alert) | |
alert.addAction(UIAlertAction(title: NSLocalizedString("Ok", comment: "Ok button"), style: .default, handler: nil)) | |
self.present(alert, animated: true, completion: nil) | |
} | |
@IBAction func saveNewRecord(_ sender: UIButton) { | |
guard let name = subjectNameTextField.text?.capitalized else { return } | |
guard let description = subjectDescriptionTextField.text?.capitalized else { return } | |
if !name.isEmpty && !description.isEmpty { | |
if !updateDates { | |
queryService.postRequests(parameters : ["subject_name" : name, "subject_description" : description], sufix : "subject/InsertData", completion: {(item: [Records]?, code:Int, error: String) in | |
print(item!) | |
print(code) | |
print(error) | |
if let data = item { | |
DispatchQueue.main.async { | |
if code == 200 { | |
self.item = data[0] | |
self.saveAction!(self.item) | |
self.navigationController?.popViewController(animated: true) | |
} else { | |
self.showMessage(message: NSLocalizedString("Duplicate data! Please, write another information", comment: "Message for user")) | |
} | |
} | |
} | |
}) | |
} else { | |
queryService.postRequests(parameters : ["subject_name" : name, "subject_description" : description], sufix : "subject/update/\(subjectId)", completion: {(item: [Records]?, code:Int, errror: String) in | |
if let data = item { | |
DispatchQueue.main.async { | |
if code == 200 { | |
self.item = data[0] | |
self.saveAction!(self.item) | |
self.navigationController?.popViewController(animated: true) | |
} else { | |
self.showMessage(message: NSLocalizedString("Duplicate data! Please, write another information", comment: "Message for user")) | |
} | |
} | |
} | |
}) | |
} | |
} else { | |
showMessage(message: NSLocalizedString("Please, enter all fields!", comment: "Message for user") ) | |
} | |
} | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
if !updateDates { | |
navigationItem.title = "Add new item" | |
} else { | |
navigationItem.title = "Update record" | |
subjectNameTextField.text = name | |
subjectDescriptionTextField.text = desc | |
} | |
subjectDescriptionTextField.layer.cornerRadius = 5 | |
subjectDescriptionTextField.layer.borderWidth = 1 | |
subjectDescriptionTextField.layer.borderColor = UIColor.lightGray.withAlphaComponent(0.6).cgColor | |
} | |
override func didReceiveMemoryWarning() { | |
super.didReceiveMemoryWarning() | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
class AddNewRecordViewController: UIViewController { | |
@IBOutlet weak var subjectNameTextField: UITextField! | |
@IBOutlet weak var subjectDescriptionTextField: UITextView! | |
var updateDates = false | |
var subjectId: String = "" | |
var name: String = "" | |
var desc: String = "" | |
let queryService = QueryService() | |
private func showMessage(message: String) { | |
let alert = UIAlertController(title: NSLocalizedString("Warning", comment: "Alert title"), message: message, preferredStyle: .alert) | |
alert.addAction(UIAlertAction(title: NSLocalizedString("Ok", comment: "Ok button"), style: .default, handler: nil)) | |
self.present(alert, animated: true, completion: nil) | |
} | |
@IBAction func saveNewRecord(_ sender: UIButton) { | |
guard let name = subjectNameTextField.text?.capitalized else { return } | |
guard let description = subjectDescriptionTextField.text?.capitalized else { return } | |
if !name.isEmpty && !description.isEmpty { | |
if !updateDates { | |
queryService.postRequests(parameters : ["subject_name" : name, "subject_description" : description], sufix : "subject/InsertData", completion: {(results:Int?) in | |
if let code = results { | |
DispatchQueue.main.async { | |
let successfullHTTPResponce = 200 | |
if code == successfullHTTPResponce { | |
self.navigationController?.popViewController(animated: true) | |
} else { | |
self.showMessage(message: NSLocalizedString("Duplicate data! Please, write another information", comment: "Message for user")) | |
} | |
} | |
} | |
}) | |
} else { | |
queryService.postRequests(parameters : ["subject_name" : name, "subject_description" : description], sufix : "subject/update/\(subjectId)", completion: {(results:Int?) in | |
if let code = results { | |
DispatchQueue.main.async { | |
let successfullHTTPResponce = 200 | |
if code == successfullHTTPResponce { | |
self.navigationController?.popViewController(animated: true) | |
} else { | |
self.showMessage(message: NSLocalizedString("Duplicate data! Please, write another information", comment: "Message for user")) | |
} | |
} | |
} | |
}) | |
} | |
} else { | |
showMessage(message: NSLocalizedString("Please, enter all fields!", comment: "Message for user") ) | |
} | |
} | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
if !updateDates { | |
navigationItem.title = "Add new item" | |
} else { | |
navigationItem.title = "Update record" | |
subjectNameTextField.text = name | |
subjectDescriptionTextField.text = desc | |
} | |
subjectDescriptionTextField.layer.cornerRadius = 5 | |
subjectDescriptionTextField.layer.borderWidth = 1 | |
subjectDescriptionTextField.layer.borderColor = UIColor.lightGray.withAlphaComponent(0.6).cgColor | |
} | |
override func didReceiveMemoryWarning() { | |
super.didReceiveMemoryWarning() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
class QueryService { | |
let basePath = "http://vps9615.hyperhost.name/" | |
func postRequests(parameters: [String : String], sufix: String, completion: @escaping (Int?) -> ()) { | |
guard let url = URL(string: basePath + sufix) else { return } | |
var request = URLRequest(url: url) | |
request.httpMethod = "POST" | |
request.addValue("application/json", forHTTPHeaderField: "Content-Type") | |
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return } | |
request.httpBody = httpBody | |
let session = URLSession.shared | |
session.dataTask(with: request) { (data, response, error) in | |
guard let data = data, error == nil else { | |
print("error=\(String(describing: error))") | |
return | |
} | |
guard let httpStatus = response as? HTTPURLResponse else { return } | |
if httpStatus.statusCode != 200 { | |
print("statusCode should be 200, but is \(httpStatus.statusCode)") | |
print("response = \(String(describing: response))") | |
} | |
let responseString = String(data: data, encoding: .utf8) | |
print("responseString = \(String(describing: responseString))") | |
completion(httpStatus.statusCode) | |
}.resume() | |
} | |
func deleteReguest(sufix: String) { | |
guard let url = URL(string: basePath + sufix) else { return } | |
var request = URLRequest(url: url) | |
request.httpMethod = "DELETE" | |
let task = URLSession.shared.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in | |
guard let _ = data, error == nil else { | |
print("error=\(String(describing: error))") | |
return | |
} | |
guard let httpStatus = response as? HTTPURLResponse else {return} | |
if httpStatus.statusCode != 200 { | |
print("statusCode should be 200, but is \(httpStatus.statusCode)") | |
} | |
} | |
task.resume() | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
class QueryService { | |
typealias QueryResult = ([Records]?, Int, String) -> () | |
var records: [Records] = [] | |
var statusCode: Int = 0 | |
var errorMessage = "" | |
let basePath = "http://vps9615.hyperhost.name/" | |
func postRequests(parameters: [String : String], sufix: String, completion: @escaping QueryResult) { | |
guard let url = URL(string: basePath + sufix) else { return } | |
var request = URLRequest(url: url) | |
request.httpMethod = "POST" | |
request.addValue("application/json", forHTTPHeaderField: "Content-Type") | |
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return } | |
request.httpBody = httpBody | |
let task = URLSession.shared.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in | |
if let error = error { | |
self.errorMessage += "DataTask error: " + error.localizedDescription + "\n" | |
} else if let data = data, | |
let response = response as? HTTPURLResponse, | |
response.statusCode == 200 { | |
self.updateSearchResults(data) | |
self.statusCode = response.statusCode | |
DispatchQueue.main.async { | |
completion(self.records, self.statusCode, self.errorMessage) | |
} | |
} | |
} | |
task.resume() | |
} | |
func getRecords (sufix: String, completion: @escaping QueryResult) { | |
guard let url = URL(string: basePath + sufix) else { return } | |
let request = URLRequest(url: url) | |
let task = URLSession.shared.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in | |
if let error = error { | |
self.errorMessage += "DataTask error: " + error.localizedDescription + "\n" | |
} else if let data = data, | |
let response = response as? HTTPURLResponse, | |
response.statusCode == 200 { | |
self.updateSearchResults(data) | |
self.statusCode = response.statusCode | |
DispatchQueue.main.async { | |
completion(self.records, self.statusCode, self.errorMessage) | |
} | |
} | |
} | |
task.resume() | |
} | |
func deleteReguest(sufix: String) { | |
guard let url = URL(string: basePath + sufix) else { return } | |
var request = URLRequest(url: url) | |
request.httpMethod = "DELETE" | |
let task = URLSession.shared.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in | |
guard let _ = data, error == nil else { | |
print("error=\(String(describing: error))") | |
return | |
} | |
guard let httpStatus = response as? HTTPURLResponse else {return} | |
if httpStatus.statusCode != 200 { | |
print("statusCode should be 200, but is \(httpStatus.statusCode)") | |
} | |
} | |
task.resume() | |
} | |
fileprivate func updateSearchResults(_ data: Data?) { | |
if let data = data { | |
do { | |
if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [Any] { | |
for trackDictionary in json { | |
if let trackDictionary = trackDictionary as? [String: Any], | |
let desc = trackDictionary["subject_description"] as? String , | |
let id = trackDictionary["subject_id"] as? String, | |
let name = trackDictionary["subject_name"] as? String { | |
records.append(Records(id : id, name : name, description: desc)) | |
} | |
} | |
} | |
} | |
catch { | |
print(error.localizedDescription) | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment