annotate Simoleon/Jobs/CurrenciesController.swift @ 154:8afba86ab8dd

Refactor code
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Wed, 25 Aug 2021 10:43:12 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
154
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 //
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
2 // GetCompatibleCurrencies.swift
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
3 // Simoleon
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
4 //
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 24/8/21.
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6 //
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
7
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 import Foundation
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
10 class CurrenciesController {
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11 let fileController = FileController()
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
12
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13 func get(currenciesCompatibleWith currencySymbol: String?, currencies: Bool?) -> [String] {
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
14 // If currencies not false -> return all currencies
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
15 guard currencies == false else { return allCurrencies() }
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
16
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
17 // This block won't be executed if the previous check fails
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
18 return compatibleCurrencies(with: currencySymbol!)
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
19 }
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
20
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
21 /*
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
22 * Input all currencies supported by vendor
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
23 * Return individual currency symbols without duplicates
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
24 */
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
25 private func allCurrencies() -> [String] {
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
26 let currencyPairsSupported: [String] = try! fileController.read(json: "CurrencyPairsSupported.json")
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
27
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
28 var currencies = Set<String>()
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
29 for currencyPairSupported in currencyPairsSupported {
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
30 let currency = currencyPairSupported.components(separatedBy: "/")[0]
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
31 currencies.insert(currency)
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
32 }
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
33
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
34 return Array(currencies)
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
35 }
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
36
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
37 /*
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
38 * Given the first symbol of the currency pair
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
39 * Return all compatible symbols
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
40 */
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
41 private func compatibleCurrencies(with currencySymbol: String) -> [String] {
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
42 let currencyPairsSupported: [String] = try! fileController.read(json: "CurrencyPairsSupported.json")
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
43
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
44 var currencies = [String]()
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
45 for currencyPairSupported in currencyPairsSupported {
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
46 if currencyPairSupported.hasPrefix(currencySymbol) {
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
47 let compatibleCurrency = currencyPairSupported.components(separatedBy: "/")[1]
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
48 currencies.append(compatibleCurrency)
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
49 }
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
50 }
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
51
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
52 return currencies
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
53 }
8afba86ab8dd Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
54 }