const AddCodesToBasket=function(e){this.txt={blednieDodanoKody:"Codurile introduse sunt în format greșit",wgranoPlikWNiewlasciwymFormacie:"A fost încărcat un format de fișier neacceptat",wypelnijPoleLubWgrajPlik:"Completați câmpul sau încărcați un fișier csv",zobaczNieRozpoznaneKody:"Vedeți codurile nerecunoscute",successMessage:"Codul de produs %s a fost recunoscut corect și acest produs a fost adăugat în coșul dvs.",successMessagePlural:"Codurile de produse %s au fost recunoscute corect și aceste produse au fost adăugate în coș",errorMessage:"Codul de produs %s nu a fost găsit și a fost omis la adăugarea în coș",errorMessagePlural:"Codurile de produse %s nu au fost găsite și au fost omise la adăugarea în coș",errorMessageQuantity:"Codul de produs %s a fost omis din coșul dvs. deoarece nu avem această cantitate în stoc în acest moment.",errorMessageQuantityPlural:"Codurile de produs %s au fost omise la adăugarea în coș, deoarece nu avem această cantitate în stoc în acest moment.",warningMessage:"Codul de produs %s a fost găsit și a fost omis la adăugarea în coș, deoarece nu este acceptat de acest modul.",warningMessagePlural:"Au fost găsite codurile de produse %s și au fost omise la adăugarea în coș deoarece nu sunt acceptate de acest modul.",dodajeTowaryDoKoszyka:"Adaug produsele în coș",zobaczPominieteKody:"Vedeți codurile omise"};const t=document.getElementById("addCodesToBasket__file"),a=document.getElementById("addCodesToBasket"),s=document.getElementById("addCodesToBasket__textarea"),r=document.getElementById("addCodesToBasketSubmit"),o=(e,t)=>{const a=t[0];for(let s=1;s<t.length;s++)e=e.split(t[s]).join(a);return e=e.split(a)};this.validate=(e,t)=>{"warrning"===t?Alertek.Warning(e):"error"===t?Alertek.Error(e):Alertek.Success(e)},this.loaderSet=(t,a)=>{a?t.classList.add("--loader"):t.classList.remove("--loader"),a&&e.redirectToBasket&&app_shop.fn.ajaxLoadSite?(this.modal.closeModal(),app_shop.fn.ajaxLoadSite(1),app_shop.fn.ajaxLoadSiteMessage(this.txt.dodajeTowaryDoKoszyka)):!a&&app_shop.fn.ajaxLoadSite&&app_shop.fn.ajaxLoadSite(0)},this.createModal=()=>{try{this.modal=new Modal({element:a,classList:"addCodesToBasketModal --small"})}catch(e){}},this.csvReeder=(e,t)=>{const a=new FileReader;a.onload=a=>{this.writeCsvToTextarea(a,e,t)},e[t].type.indexOf("text")>=0||e[t].name.indexOf(".csv")>=0?a.readAsText(e[t],"UTF-8"):this.validate(this.txt.wgranoPlikWNiewlasciwymFormacie,"error")},this.writeCsvToTextarea=e=>{""!==s.value&&(s.value+="\r"),s.value+=`${e.target.result}\r`,this.autoSizeTextarea()},this.autoSizeTextarea=function(){s.setAttribute("style",`height:${s.scrollHeight}px;overflow-y:scroll; min-height: 50px; max-height: 500px; width: 100%`)},this.removeDuplicateFromArray=e=>(codes=e.filter(((t,a)=>{const s=t[0],r=t.length>1?Number(t[1]):1;let o=!0;if(e.forEach(((e,t)=>{s===e[0]&&t>a&&o&&(o=!1,e[1]=e.length>1?Number(e[1])+r:r+1)})),o)return t})),codes),this.createArrayFromText=()=>{let e=o(s.value,[" ",",","\n"]);return e=e.filter((e=>""!=e)),e=e.map((e=>o(e,[";"]))),this.removeDuplicateFromArray(e)},this.validateArrayFromText=()=>{const e=this.createArrayFromText();let t=!0;return""===s.value?(this.validate(this.txt.wypelnijPoleLubWgrajPlik,"warrning"),!1):(e.forEach((e=>{const a=Number.isInteger(parseFloat(e[e.length-1]));(e.length>2||2===e.length&&!a)&&(this.validate(this.txt.blednieDodanoKody,"error"),t=!1)})),t)},this.fetchData=async e=>{const t=JSON.stringify({query:`mutation {\n            addProductsToBasketB2B(${e}) {\n            status\n            results {\n                status\n                productCode\n                productId\n                error {\n                  code\n                  message\n                }\n            }\n        }\n      }`});try{const e=await fetch(app_shop.urls.graphql,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t});return await e.json()}catch(e){return!1}},this.submit=async()=>{let t="";this.createArrayFromText().forEach((e=>{t+=`{code: "${e[0]}", quantity: ${1===e.length?1:e[1]}}`}));const s=`ProductB2BInput: [${t}]`;let r=!1;this.validateArrayFromText()&&(this.loaderSet(a,!0),r=await this.fetchData(s)),r&&e.redirectToBasket&&(sessionStorage.setItem("addCodesToBasketStatus",JSON.stringify(r)),window.location.href="/basketedit.php"),!e.redirectToBasket&&this.setCommunicates(r)},this.createCommunicate=(t,s,r)=>{const o=`${1===r?this.txt.errorMessage.format(r):this.txt.errorMessagePlural.format(r)}. <a class="errorCodesShow ${s.length<=e.codeQuantity?"d-none":""}" href="#errorCodes">${this.txt.zobaczNieRozpoznaneKody}</a>`,i=`${1===r?this.txt.errorMessageQuantity.format(r):this.txt.errorMessageQuantityPlural.format(r)}. <a class="errorCodesShow ${s.length<=e.codeQuantity?"d-none":""}" href="#errorCodes">${this.txt.zobaczPominieteKody}</a>`,n=`${1===r?this.txt.successMessage.format(r):this.txt.successMessagePlural.format(r)}.`,d=`${1===r?this.txt.warningMessage.format(r):this.txt.warningMessagePlural.format(r)}.`;s.length&&(s=s.map((e=>`<b>${e}</b>`)));const c=`<div class="errorCodes ${s.length>e.codeQuantity||-1===t.search("error")?"d-none":""}">${s.length>0?s.join(", "):""}</div>`,l=`\n        <div class="menu_messages_${"errorQuantity"===t?"error":t}">\n            <div>\n              ${"success"==t?n:""}\n              ${"error"==t?o:""}\n              ${"errorQuantity"==t?i:""}\n              ${"warning"==t?d:""}\n            </div>\n            ${"error"===t||"errorQuantity"===t?c:""}\n        </div>\n        `;e.messageElement&&e.redirectToBasket||(e.messageElement=[".addCodesToBasket__form"],this.loaderSet(a,!1)),e.messageElement.forEach((e=>{null!=document.querySelector(e)&&document.querySelector(e).insertAdjacentHTML("beforebegin",l)})),("error"===t||"errorQuantity"===t)&&document.querySelector(".errorCodesShow").addEventListener("click",(function(){this.classList.add("d-none"),document.querySelector(".errorCodes").classList.remove("d-none")}))},this.setCommunicates=t=>{const s=t.data.addProductsToBasketB2B.results,r=[],o=[],i=[],n=[];let d=0,c=0,l=0,h=0;if(s.forEach((e=>{"success"==e.status?(l++,r.push(e.productId),i.push(e.productCode)):null!==e.error&&"15"===e.error.code?(c++,n.push(e.productCode)):null!==e.error&&"8"!==e.error.code&&"9"!==e.error.code?(d++,o.push(e.productCode)):h++})),!e.messageElement||!e.redirectToBasket){const e=a.querySelectorAll('div[class*="menu_messages"]');0!=e.length&&e.forEach((e=>{e.parentNode.removeChild(e)}))}return l>0&&this.createCommunicate("success",i,l),d>0&&this.createCommunicate("error",o,d),c>0&&this.createCommunicate("errorQuantity",n,c,"errorQuantity"),h>0&&this.createCommunicate("warning",o,h),r.length>0&&this.checkProducts(r),!0},this.checkProducts=t=>{t.forEach((t=>{let a=document.querySelector(`${e.basketProductElements}[${e.basketProductIdAttr}="${t}"]`);null!==a&&a.classList.add("--addedFromCode")}))},this.getStatus=()=>{const t=sessionStorage.getItem("addCodesToBasketStatus");null!==t&&(this.setCommunicates(JSON.parse(t)),e.callback&&e.callback(data))},this.init=()=>{e.elementsList.forEach((e=>{null!=e&&document.querySelectorAll(e).forEach((e=>{e.addEventListener("click",(e=>(e.preventDefault(),e.stopPropagation(),this.createModal(),!1)))}))})),t.addEventListener("change",(()=>{setTimeout((()=>{document.querySelector('label[for="addCodesToBasket__file"]').innerText=t.files[0].name}),100),t.files.length>0&&this.csvReeder(t.files,0)})),r.addEventListener("click",(()=>{this.submit()})),s.addEventListener("input",(function(){this.style.height="auto",this.style.height=`${this.scrollHeight}px`})),s.placeholder="29 \n30:100 \n31-U;150 \n32-W",this.getStatus(),sessionStorage.removeItem("addCodesToBasketStatus")};try{this.init()}catch(e){}};app_shop.fn.addCodesToBasket=new AddCodesToBasket({elementsList:[".addCodesToBasketLink"],messageElement:['form[action*="basketchange"]',"#return_message"],basketProductElements:""+(null!==document.querySelector(".productslist_item")?".productslist_item":".basket__block"),basketProductIdAttr:"data-product-id",codeQuantity:10,redirectToBasket:!0});