package com.github.qcloudsms;

import com.github.qcloudsms.httpclient.HTTPResponse;

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONException;

import java.util.ArrayList;


public class SmsStatusPullCallbackResult extends SmsResultBase {

    public class Callback {
        public String user_receive_time;
        public String nationcode;
        public String mobile;
        public String report_status;
        public String errmsg;
        public String description;
        public String sid;

        @Override
        public String toString() {
            String[] fields = {
                "user_receive_time", "nationcode", "mobile",
                "report_status", "errmsg", "description",
                "sid"
            };
            return (new JSONObject(this, fields)).toString();
        }

        public Callback parse(JSONObject json) throws JSONException {

            if (json.has("user_receive_time")) {
                user_receive_time = json.getString("user_receive_time");
            }
            if (json.has("nationcode")) {
                nationcode = json.getString("nationcode");
            }
            if (json.has("mobile")) {
                mobile = json.getString("mobile");
            }
            if (json.has("report_status")) {
                report_status = json.getString("report_status");
            }
            if (json.has("errmsg")) {
                errmsg = json.getString("errmsg");
            }
            if (json.has("description")) {
                description = json.getString("description");
            }
            if (json.has("sid")) {
                sid = json.getString("sid");
            }

            return this;
        }
    }

    public int result;
    public String errMsg;
    public int count;
    public ArrayList<Callback> callbacks;

    public SmsStatusPullCallbackResult() {
        this.errMsg = "";
        this.count = 0;
        this.callbacks = new ArrayList<Callback>();
    }

    @Override
    public SmsStatusPullCallbackResult  parseFromHTTPResponse(HTTPResponse response)
            throws JSONException {

        JSONObject json = parseToJson(response);

        result = json.getInt("result");
        errMsg = json.getString("errmsg");
        if (json.has("count")) {
            count = json.getInt("count");
        }

        if (json.has("data") && !json.isNull("data")) {
            JSONArray data = json.getJSONArray("data");
            for (int i = 0; i < data.length(); i++) {
                callbacks.add((new Callback()).parse(data.getJSONObject(i)));
            }
        }

        return this;
    }
}