2 // LocalDataStore.swift
5 // Created by Hori,Masaki on 2017/01/06.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 extension CoreDataIntormation {
12 static let local = CoreDataIntormation("LocalData")
14 extension CoreDataCore {
15 static let local = CoreDataCore(.local)
19 class LocalDataStore: CoreDataAccessor, CoreDataManager {
20 static var `default` = LocalDataStore(type: .reader)
21 class func oneTimeEditor() -> LocalDataStore {
22 return LocalDataStore(type: .editor)
25 required init(type: CoreDataManagerType) {
26 context = (type == .reader ? core.parentContext : core.editorContext())
32 let core = CoreDataCore.local
33 let context: NSManagedObjectContext
36 extension LocalDataStore {
37 func unmarkedDropShipHistories(befor days: Int) -> [DropShipHistory] {
38 let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
39 let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
40 let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
41 let predicate03 = NSPredicate(format: "mapArea IN %@", ["1", "2", "3", "4", "5", "6", "7", "8", "9"])
42 let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02, predicate03])
43 guard let dropHistories = try? objects(with: DropShipHistory.entity, predicate: predicate)
48 func createDropShipHistory() -> DropShipHistory? {
49 return insertNewObject(for: DropShipHistory.entity)
52 func kaihatuHistories() -> [KaihatuHistory] {
53 guard let kaihatuHistories = try? objects(with: KaihatuHistory.entity)
55 return kaihatuHistories
57 func unmarkedKaihatuHistories(befor days: Int) -> [KaihatuHistory] {
58 let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
59 let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
60 let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
61 let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
62 guard let kaihatuHistories = try? objects(with: KaihatuHistory.entity, predicate: predicate)
64 return kaihatuHistories
66 func createKaihatuHistory() -> KaihatuHistory? {
67 return insertNewObject(for: KaihatuHistory.entity)
70 func kenzoMark(byDockId dockId: Int) -> KenzoMark? {
71 let predicate = NSPredicate(format: "kDockId = %ld", dockId)
72 guard let kenzoMarks = try? objects(with: KenzoMark.entity, predicate: predicate)
74 return kenzoMarks.first
76 // swiftlint:disable function_parameter_count
77 func kenzoMark(fuel: Int,
83 shipId: Int) -> KenzoMark? {
84 // swiftlint:disable:next line_length
85 let predicate = NSPredicate(format: "fuel = %ld AND bull = %ld AND steel = %ld AND bauxite = %ld AND kaihatusizai = %ld AND kDockId = %ld AND created_ship_id = %ld",
86 fuel, bull, steel, bauxite, kaihatusizai, kDockId, shipId)
87 guard let kenzoMarks = try? objects(with: KenzoMark.entity, predicate: predicate)
89 return kenzoMarks.first
91 func createKenzoMark() -> KenzoMark? {
92 return insertNewObject(for: KenzoMark.entity)
95 func unmarkedKenzoHistories(befor days: Int) -> [KenzoHistory] {
96 let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
97 let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
98 let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
99 let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
100 guard let kenzoHistories = try? objects(with: KenzoHistory.entity, predicate: predicate)
102 return kenzoHistories
104 func createKenzoHistory() -> KenzoHistory? {
105 return insertNewObject(for: KenzoHistory.entity)
108 func hiddenDropShipHistories() -> [HiddenDropShipHistory] {
109 guard let dropShipHistories = try? objects(with: HiddenDropShipHistory.entity)
111 return dropShipHistories
113 func createHiddenDropShipHistory() -> HiddenDropShipHistory? {
114 return insertNewObject(for: HiddenDropShipHistory.entity)