//
//  RecommendProductExt.swift
//  Bhagyashree
//
//  Created by SunarcMAC on 09/07/18.
//  Copyright © 2018 Sunarc. All rights reserved.
//

import Foundation

extension RecommendProduct {
    
    
    func getProducts(success: @escaping () -> Void, failuer: @escaping (_ message: String) -> Void) {
        self.currentPage = 1
        self.products = [RecommendProduct]()
        self.productsForPage(success: success, failure: failuer)
    }
    
    func nextPage(success: @escaping () -> Void, failuer: @escaping (_ message: String) -> Void) {
        if self.currentPage >= self.maxPage {
            failuer("No more records")
            return
        }
        self.currentPage = self.currentPage + 1
        self.productsForPage(success: success, failure: failuer)
    }

    
     private func productsForPage(success: @escaping () -> Void, failure: @escaping (_ errorMessage: String) -> Void) {
        
        let paramenters: [String: Any] = ["merchantId": User.customerId,
                                          "searchterm": searchterm,
                                          "storeId": UserDefaults.standard.value(forKey: "storeId") as! String
                                        ]
        
        HTTP().connectionWithRequestObject(api: API.RECOMEND_PRODUCTS + "\(currentPage)", parameters: paramenters, method: .post, indicator: false, success: { (response) in
            
            if let arrayData = response as? [[String: Any]] {
                if arrayData.count > 0 {
                    if let products = arrayData[0]["data"] as? [[String: Any]] {
                        for productJSON in products {
                            let product = RecommendProduct()
                            product.initWithJSON(json: productJSON)
                            self.products.append(product)
                        }
                    }
                    if let pagingInfo = arrayData[0]["paging"] as? [String: Any] {
                        if let total_page = pagingInfo["total_page"] as? Int {
                            self.maxPage = total_page
                        }
                    }
                }
            }
            
            
            
            
            success()
        }, failure: { (errorMessage) in
            failure(errorMessage)
        })
        
    }

}