@@ -29,6 +29,20 @@ class OrderLoaderViewController: UIViewController {
2929 }
3030 }
3131
32+ /// ResultsController: Handles all things order status
33+ ///
34+ private lazy var statusResultsController : ResultsController < StorageOrderStatus > = {
35+ let storageManager = AppDelegate . shared. storageManager
36+ let predicate = NSPredicate ( format: " siteID == %lld " , siteID)
37+ let descriptor = NSSortDescriptor ( key: " slug " , ascending: true )
38+ return ResultsController < StorageOrderStatus > ( storageManager: storageManager, matching: predicate, sortedBy: [ descriptor] )
39+ } ( )
40+
41+ /// The current list of order statuses for the default site
42+ ///
43+ private var currentSiteStatuses : [ OrderStatus ] {
44+ return statusResultsController. fetchedObjects
45+ }
3246
3347 // MARK: - Initializers
3448
@@ -49,6 +63,7 @@ class OrderLoaderViewController: UIViewController {
4963 override func viewDidLoad( ) {
5064 super. viewDidLoad ( )
5165
66+ configureResultsController ( )
5267 configureNavigationItem ( )
5368 configureSpinner ( )
5469 configureMainView ( )
@@ -89,6 +104,13 @@ private extension OrderLoaderViewController {
89104//
90105private extension OrderLoaderViewController {
91106
107+ /// Setup: Results Controller
108+ ///
109+ func configureResultsController( ) {
110+ // Order status FRC
111+ try ? statusResultsController. performFetch ( )
112+ }
113+
92114 /// Setup: Navigation
93115 ///
94116 func configureNavigationItem( ) {
@@ -160,7 +182,8 @@ private extension OrderLoaderViewController {
160182 }
161183
162184 // Setup the DetailsViewController
163- detailsViewController. viewModel = OrderDetailsViewModel ( order: order)
185+ let orderStatus = lookUpOrderStatus ( for: order. statusKey)
186+ detailsViewController. viewModel = OrderDetailsViewModel ( order: order, orderStatus: orderStatus)
164187
165188 // Attach
166189 addChild ( detailsViewController)
@@ -197,6 +220,20 @@ private extension OrderLoaderViewController {
197220}
198221
199222
223+ // MARK: - Private Helpers
224+ //
225+ private extension OrderLoaderViewController {
226+
227+ func lookUpOrderStatus( for statusKey: String ) -> OrderStatus ? {
228+ for orderStatus in currentSiteStatuses where orderStatus. slug == statusKey {
229+ return orderStatus
230+ }
231+
232+ return nil
233+ }
234+ }
235+
236+
200237// MARK: - Finite State Machine Management
201238//
202239private extension OrderLoaderViewController {
0 commit comments