// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.components.payments;

import androidx.annotation.Nullable;

import org.chromium.payments.mojom.PaymentOptions;

/**
 * A collection of utility methods for PaymentOptions.
 */
public class PaymentOptionsUtils {
    /**
     * @param options Any PaymentOption, can be null.
     * @return Whether a PaymentOptions has requested any information (shipping, payer's email,
     *         payer's phone, payer's name).
     */
    public static boolean requestAnyInformation(@Nullable PaymentOptions options) {
        if (options == null) return false;
        return options.requestShipping || options.requestPayerEmail || options.requestPayerPhone
                || options.requestPayerName;
    }

    /**
     * @param options Any PaymentOption, can be null.
     * @return Whether a PaymentOptions has requested any payer's information (email, phone, name).
     */
    public static boolean requestAnyContactInformation(@Nullable PaymentOptions options) {
        if (options == null) return false;
        return options.requestPayerEmail || options.requestPayerPhone || options.requestPayerName;
    }

    /**
     * @param options Any PaymentOptions, can be null.
     * @return Return a JSON string indicating whether each information is requested in the
     *         PaymentOptions.
     */
    public static String stringifyRequestedInformation(@Nullable PaymentOptions options) {
        boolean requestPayerEmail = false;
        boolean requestPayerName = false;
        boolean requestPayerPhone = false;
        boolean requestShipping = false;
        if (options != null) {
            requestPayerEmail = options.requestPayerEmail;
            requestPayerName = options.requestPayerName;
            requestPayerPhone = options.requestPayerPhone;
            requestShipping = options.requestShipping;
        }
        return String.format("{payerEmail:%s,payerName:%s,payerPhone:%s,shipping:%s}",
                requestPayerEmail, requestPayerName, requestPayerPhone, requestShipping);
    }
}