/*
Template Name: Toner eCommerce + Admin HTML Template
Author: Themesbrand
Version: 1.0.0
Website: https://Themesbrand.com/
Contact: Themesbrand@gmail.com
File: Create Product init File
*/

ClassicEditor
    .create(document.querySelector('#ckeditor-classic'))
    .then(function (editor) {
        editor.ui.view.editable.element.style.height = '200px';
    })
    .catch(function (error) {
        console.error(error);
    });

var thumbnailArray = [];

// Dropzone has been added as a global variable.

var myDropzone = new Dropzone("div.my-dropzone", { 
    url: "/file/post",
    addRemoveLinks: true,
    removedfile: function (file) {
        file.previewElement.remove();

        thumbnailArray = [];
    },
});

myDropzone.on("thumbnail", function (file, dataUrl) {
    thumbnailArray.push(dataUrl);
});
var mockFile = { name: "Existing file!", size: 12345 };

// choices category input
var productCategoryInput = new Choices('#choices-category-input', {
    searchEnabled: false,
});

var editinputValueJson = sessionStorage.getItem('editInputValue');
if (editinputValueJson) {
    var editinputValueJson = JSON.parse(editinputValueJson);
    document.getElementById("formAction").value = "edit";
    document.getElementById("product-id-input").value = editinputValueJson.id;
    productCategoryInput.setChoiceByValue(editinputValueJson.category);
    myDropzone.options.addedfile.call(myDropzone, mockFile);
    myDropzone.options.thumbnail.call(myDropzone, mockFile, editinputValueJson.productImg);
    thumbnailArray.push(editinputValueJson.productImg)
    document.getElementById("product-title-input").value = editinputValueJson.productTitle;
    document.getElementById("stocks-input").value = editinputValueJson.stock;
    document.getElementById("product-price-input").value = editinputValueJson.price;
    document.getElementById("product-discount-input").value = editinputValueJson.discount;
    document.getElementById("orders-input").value = editinputValueJson.orders;
    
    // clothe-colors
    Array.from(document.querySelectorAll(".clothe-colors li")).forEach(function (subElem) {
        var nameelem = subElem.querySelector('[type="checkbox"]');
        editinputValueJson.color.map(function(subItem){
            if (subItem == nameelem.value) {
                nameelem.setAttribute("checked", "checked");
            }
        })
    })

    // clothe-size
    Array.from(document.querySelectorAll(".clothe-size li")).forEach(function (subElem) {
        var nameelem = subElem.querySelector('[type="checkbox"]');
        if(editinputValueJson.size){
            editinputValueJson.size.map(function(subItem){
                if (subItem == nameelem.value) {
                    nameelem.setAttribute("checked", "checked");
                }
            })
        }
    })
}

var forms = document.querySelectorAll('.needs-validation')
// date & time
var date = new Date().toUTCString().slice(5, 16);

var itemid = 13;
var colorsArray = [];
var sizesArray = [];

Array.prototype.slice.call(forms).forEach(function (form) {
    form.addEventListener('submit', function (event) {
        if (!form.checkValidity()) {
            event.preventDefault();
            event.stopPropagation();
        } else {
            event.preventDefault();
            var productItemID = itemid;
            var productTitleValue = document.getElementById("product-title-input").value;
            var productCategoryValue = productCategoryInput.getValue(true);
            var stockInputValue = document.getElementById("stocks-input").value;
            var orderValue = document.getElementById("orders-input").value;
            var productPriceValue = document.getElementById("product-price-input").value;
            var productDiscountVal = document.getElementById("product-discount-input").value;

            // clothe-colors
            document.querySelectorAll(".clothe-colors li").forEach(function (item) {
                if (item.querySelector("input").checked == true) {
                    var colorListVal = item.querySelector("input").value;
                    colorsArray.push(colorListVal)
                }
            });

            // clothe-size
            document.querySelectorAll(".clothe-size li").forEach(function (item) {
                if (item.querySelector("input").checked == true) {
                    var sizeListVal = item.querySelector("input").value;
                    sizesArray.push(sizeListVal)
                }
            });

            var formAction = document.getElementById("formAction").value;
            if (formAction == "add" && productCategoryValue !== "" && thumbnailArray.length > 0) {
                if (sessionStorage.getItem('inputValue') != null) {
                    var inputValueJson = JSON.parse(sessionStorage.getItem('inputValue'));
                    var newObj = {
                        "id": productItemID + 1,
                        "productImg": thumbnailArray[0],
                        "productTitle": productTitleValue,
                        "category": productCategoryValue,
                        "price": productPriceValue,
                        "discount": productDiscountVal,
                        "rating": "--",
                        "color": colorsArray,
                        "size": sizesArray,
                        "stock": stockInputValue,
                        "orders": orderValue,
                        "publish": date,
                    };
                    inputValueJson.push(newObj);
                    sessionStorage.setItem('inputValue', JSON.stringify(inputValueJson));
                } else {
                    var inputValueJson = [];
                    var newObj = {
                        'id': productItemID,
                        "productImg": thumbnailArray[0],
                        "productTitle": productTitleValue,
                        "category": productCategoryValue,
                        "price": productPriceValue,
                        "discount": productDiscountVal,
                        "rating": "--",
                        "color": colorsArray,
                        "size": sizesArray,
                        "stock": stockInputValue,
                        "orders": orderValue,
                        "publish": date,
                    };
                    inputValueJson.push(newObj);
                    sessionStorage.setItem('inputValue', JSON.stringify(inputValueJson));
                }
                window.location.replace("product-list");
            }else if (formAction == "edit" && productCategoryValue !== "" && thumbnailArray.length > 0) {
                var editproductId = document.getElementById("product-id-input").value;
                if (sessionStorage.getItem('editInputValue')) {
                    var editObj = {
                        "id": parseInt(editproductId),
                        "productImg": thumbnailArray[0],
                        "productTitle": productTitleValue,
                        "category": productCategoryValue,
                        "price": productPriceValue,
                        "discount": productDiscountVal,
                        "rating": editinputValueJson.rating,
                        "color": colorsArray,
                        "size": sizesArray,
                        "stock": stockInputValue,
                        "orders": orderValue,
                        "publish": editinputValueJson.publish,
                    };
                    sessionStorage.setItem('editInputValue', JSON.stringify(editObj));
                }
                window.location.replace("product-list");
            }else {
                console.log('Form Action Not Found.');
            }

            return false;
        }

        form.classList.add('was-validated');

    }, false)
});