/**
 * Oblicza całkowitą wartość zamówienia po uwzględnieniu kosztów dostawy, rabatów i podatków.
 *
 * @param {Object} customer - kolekcja informacji na temat osoby, która złożyła zamówienie.
 *
 * @param {Array.<Object>} lineItems - kolekcja zakupionych produktów
 * i ich liczebności oraz koszty wysyłki jednej pozycji.
 *
 * @param {string} discountCode - opcjonalny kod rabatu, który może
 * spowodować uwzględnienie rabatu przed dodaniem kosztów wysyłki i podatków.
 */
var getOrderTotal = function (customer, lineItems, discountCode) {
  var discountTotal = 0;
  var lineItemTotal = 0;
  var shippingTotal = 0;
  var taxTotal = 0;
 
  for (var i = 0; i < lineItems.length; i++) {
      var lineItem = lineItems[i];
      lineItemTotal += lineItem.price * lineItem.quantity;
      shippingTotal += lineItem.shippingPrice * lineItem.quantity;
  }

  if (discountCode === '20PERCENT') {
      discountTotal = lineItemTotal * 0.2;
  }
 
  if (customer.shiptoState === 'CA') {
      taxTotal = (lineItemTotal - discountTotal) * 0.08;
  }
 
  var total = (
      lineItemTotal -
      discountTotal +
      shippingTotal +
      taxTotal
  );
  return total;
};
