export function updateQuantityOperation(
    quantityToUpdate,
    quantityInput,
    context,
    data,
    helpers = {}
) {
    const charity = context.hasClass && context.hasClass('charity-new');
    const negativeStatus = data.statusMessage !== 'accConfirmedMsgs';
    const messageInfo = helpers.isMessageExist
        ? helpers.isMessageExist(data) && helpers.getMessageInfo(data)
        : data.message &&
          data.statusMessage && { message: data.message, status: data.statusMessage };
    let maxValue, minValue;

    if (!charity) {
        maxValue = +quantityInput.attr('max');
        minValue = +quantityInput.attr('min');
    }

    minValue = minValue === 0 ? 1 : minValue;

    if (negativeStatus) {
        helpers.updateCart && helpers.updateCart(messageInfo);
        helpers.updateQuantity && helpers.updateQuantity(quantityInput, data.quantity);
        helpers.showNotification && helpers.showNotification(data);
    } else {
        if (charity) {
            helpers.updateCart && helpers.updateCart();
        } else {
            if (maxValue > 1 || minValue > 1) {
                if (quantityToUpdate > maxValue || quantityToUpdate < minValue) {
                    helpers.showNotification && helpers.showNotification(data);
                }
            }

            if (quantityToUpdate === 0) {
                helpers.showNotification && helpers.showNotification(data);
                helpers.updateCart && helpers.updateCart(messageInfo);
            } else {
                helpers.updateItemTotal && helpers.updateItemTotal(data, context);
                helpers.updateCart && helpers.updateCart(null, context);
            }
        }
    }
}
