Skip to content

Commit

Permalink
Deployment week4
Browse files Browse the repository at this point in the history
Week4 코드 프리징
  • Loading branch information
wansook0316 authored Nov 22, 2021
2 parents 70fb8ba + cd88a0d commit b933436
Show file tree
Hide file tree
Showing 111 changed files with 3,136 additions and 793 deletions.
274 changes: 177 additions & 97 deletions Escaper/Escaper.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions Escaper/Escaper/Application/SceneDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }

// DataInjection.shared.run(storeRegion: .extra)
// DataInjection.shared.run(storeRegion: .sinlim)
let viewController = MainTabBarController()
window = UIWindow(frame: UIScreen.main.bounds)
window?.windowScene = windowScene
Expand Down
14 changes: 14 additions & 0 deletions Escaper/Escaper/Common/Extensions/Array+Extension.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// Array+Extension.swift
// Escaper
//
// Created by 최완식 on 2021/11/18.
//

import Foundation

extension Array {
var isNotEmpty: Bool {
return !self.isEmpty
}
}
15 changes: 11 additions & 4 deletions Escaper/Escaper/Common/Library/EDSKit.swift
Original file line number Diff line number Diff line change
Expand Up @@ -82,20 +82,27 @@ enum EDSKit {
case skullLightWhite
case skullWhite
case skullGrey
case zombiePurple

var value: UIColor? {
return UIColor(named: String(describing: self))
}
}

enum Image {
var value: UIImage? {
return UIImage(named: String(describing: self))
}

case chevronDown
case recordCard
case plus
case loginPumpkin
case signupGhost
case emailIcon
case pwIcon
case eyeIcon
case signupPlus

var value: UIImage? {
return UIImage(named: String(describing: self))
}
}
}

Expand Down
21 changes: 20 additions & 1 deletion Escaper/Escaper/Common/Library/Helper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,25 @@ import Foundation

enum Helper {
static func parseUsername(email: String) -> String? {
return email.components(separatedBy: "@").first
return email.components(separatedBy: "@").first
}

static func binarySearch(value: Int, sortedValues: [Int]) -> Int? {
var left = 0, right = sortedValues.count-1
while left <= right {
let mid = Int((left + right)/2)
if sortedValues[mid] == value {
return mid + 1
} else if sortedValues[mid] > value {
right = mid - 1
} else if sortedValues[mid] < value {
left = mid + 1
}
}
return nil
}

static func measureDistance(_ distance: Double) -> String {
return distance < 1000 ? "\(Int(distance))m" : "\((distance / 100).rounded() / 10)km"
}
}
2 changes: 1 addition & 1 deletion Escaper/Escaper/Common/Library/Observable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import Foundation

class Observable<T> {
final class Observable<T> {
struct Observer<T> {
weak var observer: AnyObject?
let block: (T) -> Void
Expand Down
6 changes: 3 additions & 3 deletions Escaper/Escaper/Common/Library/RatingImage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
import Foundation

enum RatingImage: String {
case starFilled = "star.filled"
case starUnfilled = "star.unfilled"

var name: String {
return self.rawValue
}

case starFilled = "star.filled"
case starUnfilled = "star.unfilled"
}
16 changes: 0 additions & 16 deletions Escaper/Escaper/Common/Library/UtilityImage.swift

This file was deleted.

14 changes: 14 additions & 0 deletions Escaper/Escaper/Common/Library/ViewType.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// ViewType.swift
// Escaper
//
// Created by shinheeRo on 2021/11/16.
//

import Foundation

enum ViewType {
case email
case password
case passwordCheck
}
109 changes: 109 additions & 0 deletions Escaper/Escaper/DataInjection/DataInjection.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
//
// DataInjection.swift
// Escaper
//
// Created by 최완식 on 2021/11/17.
//

import Foundation
import CoreLocation
import Firebase

class DataInjection {
static let shared = DataInjection()
private init() {}

func run(storeRegion: StoreRegion) {
guard let json = self.readLocalFile(location: storeRegion),
let injectionDTO = self.decode(from: json) else { return }

var roomId = storeRegion.code

injectionDTO.stores.forEach { storeInjectionDTO in

var roomIds = [String]()
let geocoder = CLGeocoder()
let locale = Locale(identifier: "Ko-kr")

let genres = storeInjectionDTO.rooms.map({ Genre(rawValue: $0.genre) }).compactMap({ $0 })
if genres.isEmpty { return } // 특정 업체가 가지고 있는 방의 장르가 우리가 가지고 있는 장르에 해당하는 것이 하나도 없을 경우 다음 업체를 봐야 함

geocoder.geocodeAddressString(storeInjectionDTO.address, in: nil, preferredLocale: locale) { placemarks, error in
if let error = error {
print(error.localizedDescription)
}
guard let placemark = placemarks?.first else { return }

let geoLocation = GeoLocation(latitude: (placemark.location?.coordinate.latitude)!, longitude: (placemark.location?.coordinate.longitude)!)
let district = storeInjectionDTO.address.components(separatedBy: " ")[1]

storeInjectionDTO.rooms.forEach { room in

if Genre(rawValue: room.genre) == nil { return } // 없는 genre의 데이터가 있을 경우 다음 방으로 넘어감

roomId += 1
roomIds.append("\(roomId)")

let roomDTO = RoomDTO(roomId: "\(roomId)",
title: room.title,
storeName: storeInjectionDTO.storeName,
difficulty: room.difficulty,
genre: room.genre,
geoLocation: geoLocation,
district: district,
records: [])

FirebaseService.shared.addRoom(room: roomDTO)
}

let storeDTO = StoreDTO(name: storeInjectionDTO.storeName,
homePage: storeInjectionDTO.homepage,
telephone: storeInjectionDTO.telephone,
address: storeInjectionDTO.address,
region: storeRegion.engName,
geoLocation: geoLocation,
district: district,
roomIds: roomIds)

FirebaseService.shared.addStore(store: storeDTO)
}
}

}

private func readLocalFile(location: StoreRegion) -> Data? {
do {
if let bundlePath = Bundle.main.path(forResource: location.engName, ofType: "json"),
let jsonData = try String(contentsOfFile: bundlePath).data(using: .utf8) {
return jsonData
}
} catch {
print(error)
}
return nil
}

private func decode(from data: Data) -> InjectionDTO? {
return try? JSONDecoder().decode(InjectionDTO.self, from: data)
}
}

extension FirebaseService {
func addRoom(room: RoomDTO) {
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
let database = Firestore.firestore()
let path = database.collection(Collection.rooms.value).document("\(room.roomId)")
path.setData(room.toDictionary())
}

func addStore(store: StoreDTO) {
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
let database = Firestore.firestore()
let path = database.collection(Collection.stores.value).document("\(store.district)_\(store.name)")
path.setData(store.toDictionary())
}
}
24 changes: 24 additions & 0 deletions Escaper/Escaper/DataInjection/InjectionDTOs.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// InjectionDTOs.swift
// Escaper
//
// Created by 최완식 on 2021/11/17.
//

import Foundation

struct InjectionDTO: Codable {
let stores: [StoreInjectionDTO]
}

struct StoreInjectionDTO: Codable {
let storeName, telephone: String
let homepage: String
let address: String
let rooms: [RoomInjectionDTO]
}

struct RoomInjectionDTO: Codable {
let title, genre: String
let difficulty: Int
}
43 changes: 0 additions & 43 deletions Escaper/Escaper/Domain/DataStruct/Record.swift

This file was deleted.

28 changes: 0 additions & 28 deletions Escaper/Escaper/Domain/DataStruct/RecordInfo.swift

This file was deleted.

24 changes: 0 additions & 24 deletions Escaper/Escaper/Domain/DataStruct/UserRecord.swift

This file was deleted.

Loading

0 comments on commit b933436

Please sign in to comment.