OSAGO check advancements

This commit is contained in:
Selim Mustafaev 2020-11-29 22:18:37 +03:00
parent 9d2d0375ce
commit 4fd73e603e
7 changed files with 72 additions and 19 deletions

View File

@ -748,7 +748,7 @@
DEVELOPMENT_TEAM = 46DTTB8X4S; DEVELOPMENT_TEAM = 46DTTB8X4S;
INFOPLIST_FILE = AutoCat/Info.plist; INFOPLIST_FILE = AutoCat/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 13.1; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -757,7 +757,7 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES; SUPPORTS_MACCATALYST = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2,6";
}; };
name = Debug; name = Debug;
}; };
@ -771,7 +771,7 @@
DEVELOPMENT_TEAM = 46DTTB8X4S; DEVELOPMENT_TEAM = 46DTTB8X4S;
INFOPLIST_FILE = AutoCat/Info.plist; INFOPLIST_FILE = AutoCat/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 13.1; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -780,7 +780,7 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES; SUPPORTS_MACCATALYST = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2,6";
}; };
name = Release; name = Release;
}; };

View File

@ -14,35 +14,35 @@
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>2</integer> <integer>8</integer>
</dict> </dict>
<key>DifferenceKit (Playground) 2.xcscheme</key> <key>DifferenceKit (Playground) 2.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>3</integer> <integer>9</integer>
</dict> </dict>
<key>DifferenceKit (Playground).xcscheme</key> <key>DifferenceKit (Playground).xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>1</integer> <integer>7</integer>
</dict> </dict>
<key>Eureka (Playground) 1.xcscheme</key> <key>Eureka (Playground) 1.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>8</integer> <integer>5</integer>
</dict> </dict>
<key>Eureka (Playground) 2.xcscheme</key> <key>Eureka (Playground) 2.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>9</integer> <integer>6</integer>
</dict> </dict>
<key>Eureka (Playground) 3.xcscheme</key> <key>Eureka (Playground) 3.xcscheme</key>
<dict> <dict>
@ -70,7 +70,7 @@
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>7</integer> <integer>4</integer>
</dict> </dict>
<key>GettingStarted (Playground) 1.xcscheme</key> <key>GettingStarted (Playground) 1.xcscheme</key>
<dict> <dict>
@ -119,35 +119,35 @@
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>5</integer> <integer>2</integer>
</dict> </dict>
<key>Rx (Playground) 2.xcscheme</key> <key>Rx (Playground) 2.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>6</integer> <integer>3</integer>
</dict> </dict>
<key>Rx (Playground).xcscheme</key> <key>Rx (Playground).xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>4</integer> <integer>1</integer>
</dict> </dict>
<key>SwiftDate (Playground) 1.xcscheme</key> <key>SwiftDate (Playground) 1.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>12</integer> <integer>11</integer>
</dict> </dict>
<key>SwiftDate (Playground) 2.xcscheme</key> <key>SwiftDate (Playground) 2.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>10</integer> <integer>12</integer>
</dict> </dict>
<key>SwiftDate (Playground) 3.xcscheme</key> <key>SwiftDate (Playground) 3.xcscheme</key>
<dict> <dict>
@ -175,7 +175,7 @@
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>11</integer> <integer>10</integer>
</dict> </dict>
</dict> </dict>
<key>SuppressBuildableAutocreation</key> <key>SuppressBuildableAutocreation</key>

View File

@ -25,7 +25,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let config = Realm.Configuration( let config = Realm.Configuration(
schemaVersion: 25, schemaVersion: 26,
migrationBlock: { migration, oldSchemaVersion in migrationBlock: { migration, oldSchemaVersion in
if oldSchemaVersion <= 3 { if oldSchemaVersion <= 3 {
var numbers: [String] = [] var numbers: [String] = []

View File

@ -101,8 +101,10 @@ class CheckController: UIViewController, UITableViewDelegate, UITextFieldDelegat
} }
@objc private func calendarDayDidChange(_ notification : NSNotification) { @objc private func calendarDayDidChange(_ notification : NSNotification) {
DispatchQueue.main.async {
self.historyDataSource.reload() self.historyDataSource.reload()
} }
}
// MARK: - Checking new number // MARK: - Checking new number
@ -281,6 +283,7 @@ class CheckController: UIViewController, UITableViewDelegate, UITextFieldDelegat
self.getEvent(for: action) self.getEvent(for: action)
.flatMap { event in event.findAddress().map{ [event] }.catchErrorJustReturn([event]) } .flatMap { event in event.findAddress().map{ [event] }.catchErrorJustReturn([event]) }
.observeOn(MainScheduler.instance)
.catchErrorJustReturn([]) .catchErrorJustReturn([])
.map { events in .map { events in
try realm.write { vehicle.events.append(objectsIn: events) } try realm.write { vehicle.events.append(objectsIn: events) }

View File

@ -14,6 +14,8 @@ class OsagoController: FormViewController {
super.viewDidLoad() super.viewDidLoad()
self.title = "OSAGO contracts" self.title = "OSAGO contracts"
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(checkNewDate(_:))) self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(checkNewDate(_:)))
self.tableView.rowHeight = UITableView.automaticDimension
} }
@objc func checkNewDate(_ sender: UIBarButtonItem) { @objc func checkNewDate(_ sender: UIBarButtonItem) {
@ -36,7 +38,47 @@ class OsagoController: FormViewController {
} }
func updateInterface() { func updateInterface() {
self.form.allSections.forEach { $0.reload() } guard let vehicle = self.vehicle else { return }
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
self.form.removeAll()
for osago in vehicle.osagoContracts.sorted(by: { $0.date < $1.date }) {
self.form +++ Section(formatter.string(from: Date(timeIntervalSince1970: osago.date)))
<<< self.row("Contract #", value: osago.number)
<<< self.row("Name", value: osago.name)
<<< self.row("Status", value: osago.status)
<<< self.row("Insurant", value: osago.insurant)
<<< self.row("Owner", value: osago.owner)
<<< self.row("Region", value: osago.usageRegion)
<<< self.row("Restrictions", value: osago.restrictions, height: 100)
<<< self.row("Plate number", value: osago.plateNumber)
<<< self.row("VIN", value: osago.vin)
}
}
func row(_ title: String, value: String?, height: CGFloat = 44) -> LabelRow {
LabelRow() { row in
if let cell = row.cell, let label = cell.detailTextLabel, let titleLabel = cell.textLabel {
titleLabel.translatesAutoresizingMaskIntoConstraints = false
titleLabel.topAnchor.constraint(equalTo: cell.contentView.topAnchor, constant: 8).isActive = true
titleLabel.leadingAnchor.constraint(equalTo: cell.contentView.layoutMarginsGuide.leadingAnchor).isActive = true
label.translatesAutoresizingMaskIntoConstraints = false
label.topAnchor.constraint(equalTo: cell.contentView.topAnchor, constant: 8).isActive = true
label.bottomAnchor.constraint(equalTo: cell.contentView.bottomAnchor, constant: -8).isActive = true
label.leadingAnchor.constraint(equalTo: titleLabel.trailingAnchor, constant: 8).isActive = true
label.trailingAnchor.constraint(equalTo: cell.contentView.layoutMarginsGuide.trailingAnchor).isActive = true
label.numberOfLines = 0
label.font = UIFont.preferredFont(forTextStyle: .subheadline)
}
//row.cell.height = { height }
row.title = title
row.value = value
}
} }
func update(vehicle: Vehicle) { func update(vehicle: Vehicle) {

View File

@ -2,7 +2,10 @@ import Foundation
import RealmSwift import RealmSwift
class Osago: Object, Decodable { class Osago: Object, Decodable {
@objc dynamic var date: TimeInterval
@objc dynamic var number: String @objc dynamic var number: String
@objc dynamic var vin: String?
@objc dynamic var plateNumber: String?
@objc dynamic var name: String @objc dynamic var name: String
@objc dynamic var status: String @objc dynamic var status: String
@objc dynamic var restrictions: String @objc dynamic var restrictions: String

View File

@ -148,6 +148,7 @@ class Vehicle: Object, Decodable, Identifiable, Differentiable {
case photos case photos
case ownershipPeriods case ownershipPeriods
case events case events
case osagoContracts
} }
required init(from decoder: Decoder) throws { required init(from decoder: Decoder) throws {
@ -187,6 +188,10 @@ class Vehicle: Object, Decodable, Identifiable, Differentiable {
self.updatedDate = self.addedDate self.updatedDate = self.addedDate
} }
if let osago = try container.decodeIfPresent([Osago].self, forKey: .osagoContracts) {
self.osagoContracts.append(objectsIn: osago)
}
self.identifier = self.number self.identifier = self.number
} }