/**
 * Oblicza całkowitą wartość wszystkich pozycji zamówienia.
 *
 * @param {Array.<Object>} lineItems - kolekcja zakupionych produktów
 * i ich liczebności oraz koszty wysyłki jednej pozycji.
 *
 * @returns {number} Całkowita wartość wszystkich zamówionych pozycji.
 */
var getLineItemTotal = function (lineItems) {
    var lineItemTotal = 0;
 
    for (var i = 0; i < lineItems.length; i++) {
        var lineItem = lineItems[i];
        lineItemTotal += lineItem.price * lineItem.quantity;
    }
 
    return lineItemTotal;
};

/**
 * Oblicza całkowite koszty wysyłki wszystkich zamówionych pozycji.
 *
 * @param {Array.<Object>} lineItems - kolekcja zakupionych produktów
 * i ich liczebności oraz koszt wysyłki jednej pozycji.
 *
 * @returns {number} - całkowity koszt wysyłki wszystkich zamówionych produktów.
 */
var getShippingTotal = function (lineItems) {
    var shippingTotal = 0;
 
    for (var i = 0; i < lineItems.length; i++) {
        var lineItem = lineItems[i];
        shippingTotal += lineItem.shippingPrice * lineItem.quantity;
    }

    return shippingTotal;
};

/**
 * Oblicza całkowity rabat, który ma być odjęty od całkowitej wartości zamówienia.
 *
 * @param {number} lineItemTotal - całkowita wartość wszystkich zamówionych produktów.
 *
 * @param {string} discountCode - opcjonalny kod rabatu, który może spowodować
 * uwzględnienie rabatu przed dodaniem kosztów wysyłki i podatków.
 *
 * @returns {number} - całkowity rabat, który ma być odjęty od całkowitej wartości zamówienia.
 */
var getDiscountTotal = function (lineItemTotal, discountCode) {
    var discountTotal = 0;

    if (discountCode === '20PERCENT') {
        discountTotal = lineItemTotal * 0.2;
    }
 
    return discountTotal;
};

/**
 * Oblicza całkowity podatek, który ma być dodany do zamówienia.
 *
 * @param {number} lineItemTotal - całkowita wartość wszystkich zamówionych produktów.
 *
 * @param {Object} customer - kolekcja informacji na temat osoby, która złożyła zamówienie.
 *
 * @returns {number} - całkowita wartość podatku dodana do zamówienia.
 */
var getTaxTotal = function () {
    var taxTotal = 0;
 
    if (customer.shiptoState === 'CA') {
        taxTotal = lineItemTotal * 0.08;
    }
 
    return taxTotal;
};
