Skip to content

Commit

Permalink
Add awesome spinners, fix RFID data parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
danshevluk committed Jul 1, 2016
1 parent 5aced9e commit e3f1352
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 66 deletions.
16 changes: 8 additions & 8 deletions POSTerminal/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
Settings.loadFormUserDefaults()
// Settings.sharedInstance.wpBase = Host(baseURL: "http://arma.ngslab.ru:28081/WPServ", login: "I.Novikov", password: "123456789")
// Settings.sharedInstance.equipServ = Host(baseURL: "http://arma.ngslab.ru:28081/EquipServ", login: "", password: "")
ClientManager.currentClient = Client(id: "afcb9338-0892-11e6-93fd-525400643a93", code: "381", name: "Стол 3", balance: 32000)
ClientManager.currentClient?.identity = ClientIdentity(code: "381", type: "TracksData", readerData: ["clientRef": "afcb9338-0892-11e6-93fd-525400643a93",
"clientName": "Стол 3",
"balance": 6000,
"clientCode": "381"])
// ClientManager.currentClient = Client(id: "afcb9338-0892-11e6-93fd-525400643a93", code: "381", name: "Стол 3", balance: 32000)
// ClientManager.currentClient?.identity = ClientIdentity(code: "381", type: "TracksData", readerData: ["clientRef": "afcb9338-0892-11e6-93fd-525400643a93",
// "clientName": "Стол 3",
// "balance": 6000,
// "clientCode": "381"])

if let colorString = Settings.sharedInstance.baseColorHex, color = UIColor.colorWithHex(colorString) {
ColorsManager.sharedManager.baseColor = color
Expand Down Expand Up @@ -80,14 +80,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
ClientManager.currentClient = client
NSNotificationCenter.defaultCenter().postNotificationName(clientUpdatedNotification, object: nil)
case .Failure(let error):
let alert = UIAlertController(title: "kek", message: "\(error)", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "ok", style: .Default, handler: nil))
let alert = UIAlertController(title: "Ошибка", message: "\(error)", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
NSNotificationCenter.defaultCenter().postNotificationName(presentViewControllerNotification, object: nil, userInfo: ["viewController": alert])
print(error)
}
}
}
return HttpResponse.OK(.Json(["message": "ok!"]))
return HttpResponse.OK(.Json(["message": "OK!"]))
}

try! server.start(9080, forceIPv4: true)
Expand Down
15 changes: 13 additions & 2 deletions POSTerminal/CheckoutViewController.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import UIKit
import RealmSwift
import SwiftyJSON
import SwiftSpinner

class CheckoutViewController: UIViewController {

Expand Down Expand Up @@ -170,13 +171,16 @@ extension CheckoutViewController: PaymentControllerDelegate {
return
}

SwiftSpinner.show("Запись данных на RFID")
ServerManager.sharedManager.updateClientBalance(client, balance: client.balance - manager.totalPrice) { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
case .Success(_):
self.createCheck()
case .Failure(let error):
self.presentAlertWithMessage("Не удалось записать данные!")
SwiftSpinner.hide {
self.presentAlertWithMessage("Не удалось записать данные!")
}
if !OrderManager.currentOrder.payments.isEmpty {
OrderManager.currentOrder.payments.removeLast()
}
Expand All @@ -194,6 +198,7 @@ extension CheckoutViewController: PaymentControllerDelegate {
guard let client = ClientManager.currentClient else { return }
let check = Check(client: client, items: manager.items, payemnts: manager.payments)

SwiftSpinner.show("Регистрация покупки")
ServerManager.sharedManager.create(check) { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
Expand All @@ -217,7 +222,9 @@ extension CheckoutViewController: PaymentControllerDelegate {
}
self.didUpdatePayments()
print(error)
self.presentAlertWithMessage("Не удалось создать чек!")
SwiftSpinner.hide {
self.presentAlertWithMessage("Не удалось создать чек!")
}
}
}
}
Expand All @@ -226,6 +233,8 @@ extension CheckoutViewController: PaymentControllerDelegate {
/// Prints check for current order
func printCheck(check: Check) {
let manager = OrderManager.currentOrder

SwiftSpinner.show("Печать чека")
ServerManager.sharedManager.printCheck(check) { response in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
Expand All @@ -242,10 +251,12 @@ extension CheckoutViewController: PaymentControllerDelegate {
Settings.sharedInstance.discountsBalance -= OrderManager.currentOrder.totalPrice
}
Settings.saveToUserDefaults()
SwiftSpinner.hide()
OrderManager.currentOrder.clearOrder()
ClientManager.currentClient = nil
NSNotificationCenter.defaultCenter().postNotificationName(endCheckoutNotification, object: nil)
case .Failure(let error):
SwiftSpinner.show("Не удалось напечатать чек", animated: false)
print(error)
}
}
Expand Down
13 changes: 11 additions & 2 deletions POSTerminal/Client.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,17 @@ struct Client {
extension Client: ServerObject {

static func createWith(json: JSON) -> Client? {
guard let id = json["clientRef"].string, name = json["clientName"].string,
balance = json["balance"].double, code = json["clientCode"].string else {
guard let id = json["clientRef"].string, name = json["clientName"].string, code = json["clientCode"].string else {
return nil
}

let balance: Double

if let doubleBalance = json["balance"].double {
balance = doubleBalance
} else if let stringBalance = json["balance"].string, doubleBalance = Double(stringBalance) {
balance = doubleBalance
} else {
return nil
}

Expand Down
77 changes: 30 additions & 47 deletions POSTerminal/EquipmentManagementTableViewController.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import UIKit
import PureLayout
import SwiftSpinner

class EquipmentManagementTableViewController: UITableViewController {

Expand Down Expand Up @@ -63,50 +64,45 @@ class EquipmentManagementTableViewController: UITableViewController {
}

func finishMenuUpdate() {
hideActivityIndicator()
presentAlertWithMessage("Меню обновлено!")
hideActivityIndicator("Меню обновлено!")
}

//MARK: - Indicator methods

func showActivityIndicator() {
tableView.addSubview(activityIndicator)
activityIndicator.autoCenterInSuperview()
activityIndicator.autoSetDimensionsToSize(CGSize(width: 70, height: 70))
activityIndicator.hidden = false
activityIndicator.startAnimating()
//TODO: rename me pls
func showActivityIndicator(message: String) {
SwiftSpinner.show(message)
}

func hideActivityIndicator() {
activityIndicator.stopAnimating()
activityIndicator.removeFromSuperview()
activityIndicator.hidden = true
//TODO: and me
func hideActivityIndicator(message: String) {
SwiftSpinner.show(message, animated: false).addTapHandler({
SwiftSpinner.hide()
}, subtitle: "Нажмите, чтобы закрыть")
}

//MARK: - Actions

@IBAction func updateMenu() {
NSNotificationCenter.defaultCenter().postNotificationName(updateMenuNotification, object: nil)
showActivityIndicator()
showActivityIndicator("Обновление меню")
}

@IBAction func openDay() {
var sendCommands = 0

showActivityIndicator()
showActivityIndicator("Открытие смены")
ServerManager.sharedManager.openDay { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
case .Success(_):
sendCommands += 1
if sendCommands == 2 {
self.presentAlertWithMessage("Кассовая смена открыта")
self.hideActivityIndicator()
self.hideActivityIndicator("Кассовая смена открыта")
}
case .Failure(let error):
print(error)
self.presentAlertWithTitle("Ошибка", andMessage: "Не удалсь открыть смену в базе оборудования")
self.hideActivityIndicator()
self.hideActivityIndicator("Не удалсь открыть смену в базе оборудования")
}
}
}
Expand All @@ -117,34 +113,30 @@ class EquipmentManagementTableViewController: UITableViewController {
case .Success(_):
sendCommands += 1
if sendCommands == 2 {
self.presentAlertWithMessage("Кассовая смена открыта")
self.hideActivityIndicator()
self.hideActivityIndicator("Кассовая смена открыта")
}
case .Failure(let error):
print(error)
self.presentAlertWithTitle("Ошибка", andMessage: "Не удалсь открыть смену в базе рабочего места")
self.hideActivityIndicator()
self.hideActivityIndicator("Не удалсь открыть смену в базе рабочего места")
}
}
}
}

@IBAction func closeDay() {
var sendCommands = 0
showActivityIndicator()
showActivityIndicator("Закрытие смены")
ServerManager.sharedManager.printZReport { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
case .Success(_):
sendCommands += 1
if sendCommands == 2 {
self.presentAlertWithMessage("Кассовая смена закрыта!")
self.hideActivityIndicator()
self.hideActivityIndicator("Кассовая смена закрыта!")
}
case .Failure(let error):
print(error)
self.presentAlertWithMessage("Не удалось закрыть смену в базе оборудования")
self.hideActivityIndicator()
self.hideActivityIndicator("Не удалось закрыть смену в базе оборудования")
}
}
}
Expand All @@ -155,30 +147,26 @@ class EquipmentManagementTableViewController: UITableViewController {
case .Success(_):
sendCommands += 1
if sendCommands == 2 {
self.presentAlertWithMessage("Кассовая смена закрыта!")
self.hideActivityIndicator()
self.hideActivityIndicator("Кассовая смена закрыта!")
}
case .Failure(let error):
print(error)
self.presentAlertWithMessage("Не удалось закрыть смену в базе рабочего места")
self.hideActivityIndicator()
self.hideActivityIndicator("Не удалось закрыть смену в базе рабочего места")
}
}
}
}

@IBAction func printXReport() {
showActivityIndicator()
showActivityIndicator("Печать отчета")
ServerManager.sharedManager.printXReport { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
case .Success(_):
self.presentAlertWithMessage("Отчет отправлен на печать")
self.hideActivityIndicator()
self.hideActivityIndicator("Отчет отправлен на печать")
case .Failure(let error):
print(error)
self.presentAlertWithMessage("Не удалось напечатать отчет")
self.hideActivityIndicator()
self.hideActivityIndicator("Не удалось напечатать отчет")
}
}
}
Expand Down Expand Up @@ -215,16 +203,15 @@ class EquipmentManagementTableViewController: UITableViewController {
}

private func encash(sum: Double, type: EncashType) {
showActivityIndicator()
showActivityIndicator("Инкасcация")
ServerManager.sharedManager.printXReport { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
case .Success(_):
self.sendEncashRequest(sum, type: type)
case .Failure(let error):
print(error)
self.presentAlertWithMessage("Не удалось напечатать отчет")
self.hideActivityIndicator()
self.hideActivityIndicator("Не удалось напечатать отчет")
}
}
}
Expand All @@ -238,15 +225,13 @@ class EquipmentManagementTableViewController: UITableViewController {
case .Success(_):
sentCommands += 1
if sentCommands == 2 {
self.hideActivityIndicator()
self.updateBalance(sum, forEncash: type)
self.balanceLabel.text = Settings.sharedInstance.cashBalance.format()
self.presentAlertWithMessage("Инкассация успешно проведена!")
self.hideActivityIndicator("Инкассация успешно проведена!")
}
case .Failure(let error):
print(error)
self.hideActivityIndicator()
self.presentAlertWithMessage("Ошибка при регистрации инкассации в базе оборудования")
self.hideActivityIndicator("Ошибка при регистрации инкассации в базе оборудования")
}
}
}
Expand All @@ -257,15 +242,13 @@ class EquipmentManagementTableViewController: UITableViewController {
case .Success(_):
sentCommands += 1
if sentCommands == 2 {
self.hideActivityIndicator()
self.updateBalance(sum, forEncash: type)
self.balanceLabel.text = Settings.sharedInstance.cashBalance.format()
self.presentAlertWithMessage("Инкассация успешно проведена!")
self.hideActivityIndicator("Инкассация успешно проведена!")
}
case .Failure(let error):
print(error)
self.hideActivityIndicator()
self.presentAlertWithMessage("Ошибка при регистрации инкассации в базе рабочего места")
self.hideActivityIndicator("Ошибка при регистрации инкассации в базе рабочего места")
}
}
}
Expand Down
27 changes: 21 additions & 6 deletions POSTerminal/SettingsTableViewController.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import UIKit
import BCColor
import SwiftSpinner

class SettingsTableViewController: UITableViewController {

Expand Down Expand Up @@ -98,17 +99,22 @@ class SettingsTableViewController: UITableViewController {
@IBAction func checkConnectionButtonAction() {
var sentRequests = 0

SwiftSpinner.show("Проверка соединения")
ServerManager.sharedManager.checkConnectionInEQ { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
case .Success(_):
sentRequests += 1
if sentRequests == 2 {
self.presentAlertWithMessage("Обе базы успешно подключены!")
SwiftSpinner.show("Обе базы подключены", animated: false).addTapHandler({
SwiftSpinner.hide()
}, subtitle: "Нажмите, чтобы закрыть")
}
case .Failure(let error):
print(error)
self.presentAlertWithTitle("Ошибка", andMessage: "Не удалось подключиться к базе оборудования")
SwiftSpinner.show("Не удалось подключиться к базе оборудования", animated: false).addTapHandler({
SwiftSpinner.hide()
}, subtitle: "Нажмите, чтобы закрыть")
}
}
}
Expand All @@ -119,11 +125,15 @@ class SettingsTableViewController: UITableViewController {
case .Success(_):
sentRequests += 1
if sentRequests == 2 {
self.presentAlertWithMessage("Обе базы успешно подключены!")
SwiftSpinner.show("Обе базы подключены", animated: false).addTapHandler({
SwiftSpinner.hide()
}, subtitle: "Нажмите, чтобы закрыть")
}
case .Failure(let error):
print(error)
self.presentAlertWithTitle("Ошибка", andMessage: "Не удалось подключиться к базе рабочего места")
SwiftSpinner.show("Не удалось подключиться к базе рабочего места", animated: false).addTapHandler({
SwiftSpinner.hide()
}, subtitle: "Нажмите, чтобы закрыть")
}
}
}
Expand All @@ -133,14 +143,19 @@ class SettingsTableViewController: UITableViewController {
if let host = RedSocketManager.sharedInstance().ipAddress() {
let callbackURL = "http://\(host):9080/codes"
print(callbackURL)
SwiftSpinner.show("Регистрация терминала")
ServerManager.sharedManager.registerDeviceWithCallbackURL(callbackURL) { (response) in
dispatch_async(dispatch_get_main_queue()) {
switch response.result {
case .Success(_):
self.presentAlertWithMessage("Мобильный терминал успешно зарегистрирован!")
SwiftSpinner.show("Успешно!", animated: false).addTapHandler({
SwiftSpinner.hide()
}, subtitle: "Нажмите, чтобы закрыть")
case .Failure(let error):
print(error)
self.presentAlertWithMessage("Не удалось зарегистрировать мобильный терминал")
SwiftSpinner.show("Не удалось", animated: false).addTapHandler({
SwiftSpinner.hide()
}, subtitle: "Нажмите, чтобы закрыть")
}
}
}
Expand Down
Loading

0 comments on commit e3f1352

Please sign in to comment.