//
//  CreateGroupViewModel.swift
//  PaiAi
//
//  Created by ffib on 2018/12/17.
//  Copyright © 2018 yb. All rights reserved.
//

import Foundation
import RxSwift
import RxCocoa

public protocol CreateGroupViewModelDelegate: class {
    func navigateToGroup(_ item: GroupItem)
}

public final class CreateGroupViewModel {
    
    private var repository: PhotoGroupRepository
    
    public var avatar: String
    public var name: String
    public var mappingIndex: Int
    public weak var delegate: CreateGroupViewModelDelegate?
    
    private let defaultGroupNames = ["苹果", "香蕉", "西兰花",
                                     "杨梅", "胡萝卜", "樱桃",
                                     "玉米", "火龙果", "茄子",
                                     "无花果", "葡萄", "柠檬",
                                     "山竹", "橘子", "木瓜",
                                     "水蜜桃", "菠萝", "草莓",
                                     "西瓜"]
    private let disposeBag = DisposeBag()
    
    public init(userInfoViewModel: UserInfoViewModel) {
        self.mappingIndex = Int(arc4random_uniform(19))
        self.repository = PhotoGroupRepository()
        self.avatar = "Group\(mappingIndex)"
        self.name = userInfoViewModel.shareUserInfo.value.userName + "的" + defaultGroupNames[mappingIndex] + "群"
    }
    
    public func createGroup() {
        Toast.showActivity(message: "正在创建群")
        return repository.create(groupName: name, avatar: "\(mappingIndex)")
            .subscribe(onSuccess: {[unowned self] item in
                Toast.show(message: "照片分享群已创建")
                self.delegate?.navigateToGroup(item)
            }).disposed(by: disposeBag)
    }
}