Ingen beskrivning
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

select_delivery.js 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  1. function initSelectDevlivery() {
  2. let editMode = false;
  3. let countryId = null;
  4. let currencyId = null;
  5. let billingInfo = null;
  6. let userName = null;
  7. let stateArr = [];
  8. debugger;
  9. let Newuser =window.localStorage.getItem('isaccountCreated');
  10. let Loginstatus =window.localStorage.getItem('Isloggedintoaster')
  11. if(Newuser == 'true'){
  12. toasterHelper("success","Account Created Successfully");
  13. window.localStorage.removeItem('isaccountCreated')
  14. }
  15. if(Loginstatus == 'true'){
  16. toasterHelper("success","Isloggedintoaster");
  17. window.localStorage.removeItem('Isloggedintoaster')
  18. }
  19. $('.mianselectdelivery').removeClass('d-none');
  20. $('.containermaindev').removeClass('d-none');
  21. let orderBtnAction = {
  22. removeOrdernowBtn() {
  23. $('.ordernowbtn').parent().addClass('d-none');
  24. },
  25. addOrdernowBtn() {
  26. $('.ordernowbtn').parent().removeClass('d-none');
  27. }
  28. }
  29. let addresslistAction = {
  30. removeAddressContainer(){
  31. $('.addresslist').addClass('d-none');
  32. },
  33. addAddressContainer(){
  34. $('.addresslist').removeClass('d-none');
  35. }
  36. }
  37. let changeAddressBtnAction = {
  38. removeChangeAddressBtn() {
  39. $('.changeAddressBtn').addClass('d-none');
  40. },
  41. addChangeAddressBtn() {
  42. $('.changeAddressBtn').removeClass('d-none');
  43. }
  44. }
  45. let changesaveCancelBtnAction = {
  46. removeChangeCancelBtn() {
  47. $('.saveanddeliverCanel').addClass('d-none');
  48. },
  49. addChangeCancelBtn() {
  50. $('.saveanddeliverCanel').removeClass('d-none');
  51. }
  52. }
  53. let saveFormLoading = {
  54. addSpinner(){
  55. $('.saveanddeliver').find('.spinner-border').removeClass('d-none');
  56. $('.saveanddeliver').find('span').addClass('d-none');
  57. },
  58. removeSpinner(){
  59. $('.saveanddeliver').find('.spinner-border').addClass('d-none');
  60. $('.saveanddeliver').find('span').removeClass('d-none');
  61. },
  62. }
  63. let paymentgatewaypageAction = {
  64. addPaymentgatewaypage(){
  65. $('.paymentgatewaypage').removeClass('d-none');
  66. },
  67. removePaymentgatewaypage(){
  68. $('.paymentgatewaypage').addClass('d-none');
  69. }
  70. }
  71. let paymentContainerAction = {
  72. paymentContainerAdd(){
  73. $('.orderslist').parent().removeClass('d-none');
  74. },
  75. paymentContainerRemove(){
  76. $('.orderslist').parent().addClass('d-none');
  77. }
  78. }
  79. const {phonenumber_errorhandler,addressdes_errorhandler,zipcode_errorhandler,state_errorhandler} = factoryErrorControl();
  80. function init() {
  81. getAddressRes();
  82. loadEvents();
  83. updateSummaryPriceAdd();
  84. // changeAddressBtnAction.removeChangeAddressBtn();
  85. }
  86. function removeAllFormError(){
  87. phonenumber_errorhandler.removeError();
  88. addressdes_errorhandler.removeError();
  89. zipcode_errorhandler.removeError();
  90. state_errorhandler.removeError();
  91. $('.errMsgFormEdit').addClass('d-none');
  92. $('.errMsgFormEdit').html('');
  93. }
  94. function clearAllInputs(){
  95. // $("#state").select2({
  96. // placeholder: "Select a City",
  97. // allowClear: true
  98. // });
  99. $('#state').val(null);
  100. $('#phonenumber').val(null);
  101. $('#addressdes').val(null);
  102. $('#zipcode').val(null);
  103. }
  104. async function appendFormDetails(){
  105. let cookieRes = COOKIE_HELPER_ACTIONS.getCookie();
  106. console.log(cookieRes);
  107. const { errorMsg, isError, response } = await API_SERVICES_ACTIONS.getAPIService(`apis/v4/bizgaze/integrations/anwiauth/getbillinginfo/contactid/${cookieRes.userId}`);
  108. let res = JSON.parse(response.result)[0];
  109. debugger;
  110. const {cityid, lobid,organizationname,addressline,cityname,phonenumber,zipcode,name } =res;
  111. setAddressHeader({name:organizationname,phonenumber,addressline,cityname,zipcode});
  112. $('#phonenumber').val(phonenumber);
  113. $('#addressdes').val(addressline);
  114. $('#zipcode').val(zipcode);
  115. debugger;
  116. $('#state').attr('data-id',cityid);
  117. $('#state').val(cityname)
  118. $('.userNamelogin').html(`${userName}`);
  119. editMode = true;
  120. // console.log(stateArr);
  121. renderCustomStateDropdown(stateArr);
  122. //renderStates(stateArr);
  123. }
  124. async function getAddressRes() {
  125. let cookieRes = COOKIE_HELPER_ACTIONS.getCookie();
  126. console.log(cookieRes);
  127. const { errorMsg, isError, response } = await API_SERVICES_ACTIONS.getAPIService(`apis/v4/bizgaze/integrations/anwiauth/getbillinginfo/contactid/${cookieRes.userId}`);
  128. let res = JSON.parse(response.result);
  129. console.log(res, 'befores');
  130. res = res[res.length - 1];
  131. //createBillingForm();
  132. const {cityid, lobid,organizationname,addressline,cityname,phonenumber,zipcode,name } =res;
  133. billingInfo = res;
  134. debugger;
  135. console.log(res);
  136. if (cityid != 0) {
  137. $('.addnewAddressContainer').addClass('d-none');
  138. $('.detailsAddressBg').removeClass('detailsAddressBg');
  139. $('.ordersummaryheader').addClass('detailsAddressBg');
  140. $('.displayadress').removeClass('d-none')
  141. // $('.addresslist').removeClass('d-none');
  142. loadShippingProducts();
  143. userName = organizationname;
  144. setAddressHeader({name:organizationname,phonenumber,addressline,cityname,zipcode});
  145. debugger;
  146. editMode = true;
  147. // adding values
  148. $('#phonenumber').val(phonenumber);
  149. $('#addressdes').val(addressline);
  150. $('#zipcode').val(zipcode);
  151. debugger;
  152. $('#state').attr('data-id',cityid);
  153. $('#state').val(cityname);
  154. $('.userNamelogin').html(`${userName}`);
  155. changeAddressBtnAction.addChangeAddressBtn()
  156. getCountryStateCurrency();
  157. }else{
  158. $('.userNamelogin').html(`${organizationname}`);
  159. loadShippingProducts();
  160. paymentContainerAction.paymentContainerRemove();
  161. getCountryStateCurrency();
  162. orderBtnAction.removeOrdernowBtn();
  163. $('.detailsAddressBg').removeClass('detailsAddressBg');
  164. $('.selectAddress').addClass('detailsAddressBg');
  165. }
  166. }
  167. function setAddressHeader({name,phonenumber,addressline,cityname,zipcode}){
  168. $('.innerDisplayAddress').html(`${phonenumber}, ${addressline}, ${cityname} - `);
  169. $('.zipcodeAddress').html(`${zipcode}`);
  170. }
  171. function checkForm(){
  172. let number = $('#phonenumber').val();
  173. let zipcode = $('#zipcode').val();
  174. let state = $('#state').data('id');
  175. let address = $('#addressdes').val();
  176. let isTrue = false;
  177. if(!number || number.length!=10){
  178. isTrue = true;
  179. phonenumber_errorhandler.addError();
  180. }
  181. if(zipcode.length<6 || zipcode.length>6){
  182. isTrue = true;
  183. zipcode_errorhandler.addError();
  184. }
  185. if(!state){
  186. isTrue = true;
  187. state_errorhandler.addError();
  188. }
  189. if(!address){
  190. isTrue = true;
  191. addressdes_errorhandler.addError();
  192. }
  193. return isTrue;
  194. }
  195. async function createBillingForm(){
  196. debugger;
  197. let cookieRes = COOKIE_HELPER_ACTIONS.getCookie();
  198. let { userId, name } = cookieRes;
  199. const ctyId = await getCountryId();
  200. let stateId = parseInt($('#state').data('id'));
  201. let payload = {
  202. "cityid": stateId,
  203. "CityName":$(`[data-id="${stateId}"`).html(),
  204. "addressline1": $('#addressdes').val(),
  205. "OrganizationType": 2,
  206. "organizationname": name,
  207. //"OrganizationId":,
  208. "ContactName": name,
  209. "ContactId": userId,
  210. "countryname": 'india',
  211. "countryid": ctyId,
  212. "statename":$(`[data-id="${stateId}"`).html(),
  213. "phonenumber": $('#phonenumber').val(),
  214. "OrganizationId": userId,
  215. "currencyid": 2,
  216. "taxno": '0',
  217. "BillingInfoExists": false,
  218. "lobid": 0,
  219. "lobname": "IT Products",
  220. "gstindetailid": 0,
  221. zipcode:$('#zipcode').val()
  222. }
  223. const res = await API_SERVICES_ACTIONS.postAPIService('apis/v4/bizgaze/crm/address/savebillinginfo', payload);
  224. // http://localhost:3088/apis/v4/bizgaze/crm/address/savebillinginfo
  225. setAddressHeader({name,phonenumber:$('#phonenumber').val(),addressline: $('#addressdes').val(),cityname:$('#state').val(),zipcode:$('#zipcode').val()});
  226. return new Promise((reslove,reject) => {
  227. reslove(res);
  228. })
  229. console.log(res);
  230. }
  231. async function saveForm() {
  232. let cookieRes = COOKIE_HELPER_ACTIONS.getCookie();
  233. let { userId, name } = cookieRes;
  234. const { errorMsg, isError, response } = await API_SERVICES_ACTIONS.getAPIService(`apis/v4/bizgaze/integrations/anwiauth/getbillinginfo/contactid/${cookieRes.userId}`);
  235. let resAnwi = JSON.parse(response.result);
  236. console.log(resAnwi, 'befores');
  237. resAnwi = resAnwi[resAnwi.length - 1];
  238. let stateId = parseInt($('#state').data('id'));
  239. let payload = {
  240. ...resAnwi,
  241. phonenumber:$('#phonenumber').val(),
  242. addressline1:$('#addressdes').val(),
  243. zipcode:$('#zipcode').val(),
  244. cityid:stateId,
  245. CityName:$('#state').val(),
  246. }
  247. console.log(payload,"ertyuioghjkl");
  248. //
  249. const res = await API_SERVICES_ACTIONS.postAPIService('apis/v4/bizgaze/crm/address/savebillinginfo', payload);
  250. return new Promise((reslove,reject) => {
  251. reslove(res);
  252. })
  253. }
  254. function onChangeState(e){
  255. let userItem = e.target.value.toLowerCase();
  256. let limit = 10;
  257. let results = [];
  258. let maxLen = stateArr.length > 10 ? 10 :stateArr.length;
  259. debugger
  260. for(let i=0;i<stateArr.length;i++){
  261. let currItem = stateArr[i];
  262. let stateName = currItem.cityname.toLowerCase();
  263. if(stateName.includes(userItem)){
  264. results.push(currItem);
  265. if(results.length>=10) break;
  266. }
  267. }
  268. renderCustomStateDropdown(results);
  269. loadDropdownStateEvents();
  270. }
  271. function loadDropdownStateEvents(){
  272. $('#state').off().focus(function (){
  273. $('.stateBox').removeClass('d-none');
  274. $(document).off('click').click(closeDrop);
  275. })
  276. $(document).off().click(closeDrop);
  277. function closeDrop(e){
  278. let id = $(e.target).hasClass('stateoption');
  279. if($(e.target).attr('id')==='state') return;
  280. if(id) {
  281. $('.stateBox').addClass('d-none');
  282. $(document).off();
  283. }else{
  284. $('.stateBox').addClass('d-none');
  285. $(document).off();
  286. }
  287. }
  288. $('#state').keyup(debounce(function (event){
  289. onChangeState(event)
  290. }));
  291. }
  292. async function loadEvents() {
  293. loadDropdownStateEvents();
  294. $('.addnewAddressContainer').off('click').click(function (e) {
  295. $('.addnewAddressContainer').addClass('d-none');
  296. $('.addresslist').removeClass('d-none');
  297. changeAddressBtnAction.removeChangeAddressBtn();
  298. changesaveCancelBtnAction.addChangeCancelBtn();
  299. });
  300. $('.saveanddeliverCanel').off('click').click(function (){
  301. if(!editMode){
  302. $('.addnewAddressContainer').removeClass('d-none');
  303. $('.addresslist').addClass('d-none');
  304. changeAddressBtnAction.removeChangeAddressBtn();
  305. changesaveCancelBtnAction.removeChangeCancelBtn();
  306. }else{
  307. loadShippingProducts();
  308. addresslistAction.removeAddressContainer()
  309. changeAddressBtnAction.addChangeAddressBtn();
  310. paymentContainerAction.paymentContainerAdd();
  311. $('.displayadress').removeClass('d-none');
  312. }
  313. clearAllInputs();
  314. });
  315. $('.changeAddressBtn').off('click').click(function (e){
  316. console.log(e.target);
  317. //getAddressRes();
  318. appendFormDetails();
  319. removeOrderSummary();
  320. changeAddressBtnAction.removeChangeAddressBtn();
  321. $('.displayadress').addClass('d-none')
  322. })
  323. $('.saveanddeliver').off('click').click(async function (e) {
  324. debugger;
  325. saveFormLoading.addSpinner()
  326. let isErrorForm = checkForm();
  327. if(isErrorForm){
  328. saveFormLoading.removeSpinner();
  329. return;
  330. }
  331. let res;
  332. if(editMode){
  333. res = await saveForm();
  334. }else{
  335. res = await createBillingForm();
  336. }
  337. saveFormLoading.removeSpinner();
  338. const {isError,errorMsg,response} = res;
  339. console.log(errorMsg);
  340. if(isError){
  341. $('.errMsgFormEdit').removeClass('d-none');
  342. $('.errMsgFormEdit').html(`${errorMsg.message}`);
  343. return;
  344. }
  345. debugger;
  346. editMode = true;
  347. let {name} = COOKIE_HELPER.getCookie();
  348. // phonenumber:$('#phonenumber').val(),
  349. // addressline1:$('#addressdes').val(),
  350. // zipcode:$('#zipcode').val(),
  351. // cityid:stateId,
  352. // CityName:$(`[data-id="${stateId}"`).html(),
  353. let stateId = parseInt($('#state').data('id'));
  354. setAddressHeader({name,addressline:$('#addressdes').val(),cityname:$(`#state`).val(),phonenumber:$('#phonenumber').val(),zipcode:$('#zipcode').val()});
  355. $('.errMsgFormEdit').html('');
  356. loadShippingProducts();
  357. addresslistAction.removeAddressContainer()
  358. changeAddressBtnAction.addChangeAddressBtn();
  359. paymentContainerAction.paymentContainerAdd();
  360. $('.displayadress').removeClass('d-none');
  361. });
  362. $('.ordernowbtn').off().click(async function (e){
  363. let cookieRes = COOKIE_HELPER_ACTIONS.getCookie();
  364. let { userId, name } = cookieRes;
  365. paymentgatewaypageAction.addPaymentgatewaypage();
  366. let payload = {
  367. "OrganizationName": name,
  368. "BranchId": 106632280000001,
  369. "OrderItems": [
  370. {
  371. "UnitPrice": 20,
  372. "Quantity": 1,
  373. "SKU": "11",
  374. "DiscountValue": 0,
  375. "DiscountPercent": 0
  376. }
  377. ]
  378. }
  379. $('.paymentgatewaypage').removeClass('d-none');
  380. const data = getCartData();
  381. let orderItems = [];
  382. for(let i in data){
  383. const {price,quantity,sku} = data[i];
  384. let payload = {
  385. "UnitPrice": price,
  386. "Quantity": quantity,
  387. "SKU": sku,
  388. "DiscountValue": 0,
  389. "DiscountPercent": 0
  390. }
  391. orderItems.push(payload)
  392. }
  393. payload['OrderItems'] = orderItems;
  394. debugger;
  395. try {
  396. const res = await API_SERVICES_ACTIONS.postAPIService(`apis/v4/bizgaze/integrations/salesorder/save`,payload);
  397. console.log(res.response.result);;
  398. if(!res.response.result){
  399. paymentgatewaypageAction.removePaymentgatewaypage();
  400. }
  401. // `http://localhost:3088/apis/v4/bizgaze/transact/orders/getpaymentgatewaytransaction/refid/106633780000069`
  402. let response = await API_SERVICES_ACTIONS.getAPIService(`apis/v4/bizgaze/transact/orders/getpaymentgatewaytransaction/refid/${res.response.result}`);
  403. let {PaymentLink} = JSON.parse(response.response.result);
  404. window.location.href = PaymentLink;
  405. } catch (error) {
  406. paymentgatewaypageAction.removePaymentgatewaypage();
  407. }
  408. });
  409. }
  410. function getItemProductHTML(item) {
  411. const { img, name, price, quantity, sku, id } = item;
  412. return ` <div class="align-items-center item-product-add d-flex w-100" data-id="${id}" data-sku="${sku}">
  413. <div style="max-width: 100px;" class="">
  414. <img class="w-100" src="${img}" alt="">
  415. </div>
  416. <div class="" style="margin-left:10px">
  417. <div>
  418. <div style="font-size:12px">${name}</div>
  419. </div>
  420. <div>
  421. <span style="font-size:12px" class="font-weight-600">${getCurrencySymbol(price)}</span> <span>x <span class="qtyitem" style="font-size:12px">${quantity}</span></span>
  422. </div>
  423. </div>
  424. </div>`;
  425. return ` <div class="item-product-add" data-id="${id}" data-sku="${sku}">
  426. <div class="row py-2">
  427. <div class="col-sm-2">
  428. <div class="w-100 d-flex justify-content-around">
  429. <div class="d-flex flex-column align-items-baseline">
  430. <div class="px-4 py-2 selectaddressimgshow">
  431. <img class="w-100" src="${img}" alt="" class="w-100">
  432. </div>
  433. <div class="addresscontrol w-100 d-flex justify-content-center gap-1">
  434. <div class="rounded-contain btnminus">
  435. -
  436. </div>
  437. <div class="w-100p">
  438. <input class="qtyshowinput" disabled value="${quantity}" type="number">
  439. </div>
  440. <div class="rounded-contain btnplus">
  441. +
  442. </div>
  443. </div>
  444. </div>
  445. </div>
  446. </div>
  447. <div class="col-sm-10">
  448. <div class="row h-100">
  449. <div class="col-sm-8">
  450. <div class="h-100 d-flex flex-column justify-content-between">
  451. <div> ${name}</div>
  452. <div>
  453. <span>$</span> ${price} <span class="d-none">56% Off 2 offers applied</span>
  454. </div>
  455. <div class="d-flex gap-3">
  456. <span class="text-uppercase d-none">Save for later</span>
  457. <span class="text-uppercase cursor-pointer removecartItem">Remove</span>
  458. </div>
  459. </div>
  460. </div>
  461. </div>
  462. </div>
  463. </div>
  464. </div>`;
  465. }
  466. async function getCountryId(){
  467. const countryRes = await API_SERVICES_ACTIONS.getAPIService('apis/v4/bizgaze/integrations/anwiauth/getcountry');;
  468. if (countryRes.isError) {
  469. alert("something went wrong");
  470. console.log(countryRes);
  471. return;
  472. }
  473. let ctyId = 0
  474. let countryData = JSON.parse(countryRes.response.result);
  475. console.log(countryData);
  476. for (let i = 0; i < countryData.length; i++) {
  477. if (countryData[i].countryname.toLowerCase() === 'india') {
  478. debugger;
  479. countryId = countryData[i].countryid;
  480. ctyId = countryId
  481. countrynameData = countryData[i].countryname;
  482. break;
  483. }
  484. }
  485. return ctyId;
  486. }
  487. function renderStates(data){
  488. $('#state').off('select2:select');
  489. let html = '';
  490. for (let i = 0; i < 10; i++) {
  491. html += `<option value="${data[i].cityid}" data-id="${data[i].cityid}">${data[i].cityname}</option>`
  492. }
  493. $('#state').append(html);
  494. $("#state").select2({
  495. placeholder: "Select a City",
  496. allowClear: true
  497. });
  498. }
  499. async function getCountryStateCurrency() {
  500. const countryRes = await API_SERVICES_ACTIONS.getAPIService('apis/v4/bizgaze/integrations/anwiauth/getcountry');;
  501. if (countryRes.isError) {
  502. alert("something went wrong");
  503. console.log(countryRes);
  504. return;
  505. }
  506. let countryData = JSON.parse(countryRes.response.result);
  507. console.log(countryData);
  508. for (let i = 0; i < countryData.length; i++) {
  509. if (countryData[i].countryname.toLowerCase() === 'india') {
  510. countryID = countryData[i].countryid;
  511. countrynameData = countryData[i].countryname;
  512. break;
  513. }
  514. }
  515. // const stateRes = await API_SERVICES_ACTIONS.getAPIService(`apis/v4/unibase/platform/forms/autocomplete/docpropertyid/116631530005773/columnname/statusid/value/1%7C/formpropertyid/116631620000066/formid/116631640000040/bindeddata/undefined/term/h/authtoken/2cd31fdd-440b-4eea-9039-659ab090628a?term=h&type=GET`);
  516. const stateRes = await API_SERVICES_ACTIONS.getAPIService(`apis/v4/bizgaze/integrations/anwiauth/getcities/countryid/${countryID}`);
  517. if (stateRes.isError) {
  518. alert("something went wrong");
  519. console.log(stateRes);
  520. return;
  521. }
  522. let stateData = JSON.parse(stateRes.response.result);
  523. // console.log(stateData, 'state');
  524. $('#state').val(null);
  525. console.log("start")
  526. let html = '';
  527. statesList = stateData;
  528. stateArr = stateData;
  529. renderCustomStateDropdown(stateArr);
  530. //renderStates(stateArr)
  531. const currencyRes = await API_SERVICES_ACTIONS.getAPIService('apis/v4/bizgaze/integrations/anwiauth/getcurrencies');
  532. if(currencyRes.isError){
  533. alert("something went wrong");
  534. console.log(currencyRes);
  535. return;
  536. }
  537. let currencyData = JSON.parse(currencyRes.response.result);
  538. console.log(currencyData,'currencyDatacurrencyDatacurrencyData');
  539. for(let i=0;i<currencyData.length;i++){
  540. const curr = currencyData[i];
  541. if(curr.currencyname.toLowerCase().includes('india')){
  542. currencyid = curr.currencyid;
  543. }
  544. }
  545. }
  546. function getCustomDropDownHTML({cityid,cityname,countryid}){
  547. return ` <div class="bg-white stateoption px-2 border-bottom py-2 cursor-pointer" data-name="${cityname}" data-value="${cityid}">${cityname}</div>`;
  548. }
  549. function renderCustomStateDropdown(stateList){
  550. let html = ``;
  551. debugger;;
  552. let maxLen = stateList.length > 10 ? 10 :stateList.length
  553. for(let i=0;i<maxLen;i++){
  554. let currItem = stateList[i];
  555. html+=getCustomDropDownHTML(currItem);
  556. }
  557. $('.stateBox').html(html);
  558. $('.stateoption').off().click(function(e){
  559. debugger;
  560. const name = $(e.target).data('name');
  561. const id = $(e.target).data('value');
  562. $('#state').val(name);
  563. $('#state').attr('data-id',id);
  564. })
  565. }
  566. function loadShippingProducts(){
  567. $('.detailsAddressBg').removeClass('detailsAddressBg');
  568. $('.ordersummaryheader ').addClass('detailsAddressBg')
  569. debugger;
  570. const products = getCartData();
  571. console.log(products);
  572. if (Object.keys(products||{}).length) orderBtnAction.addOrdernowBtn();
  573. let productsHTML = '';
  574. for (let item in products) {
  575. const currItem = products[item];
  576. productsHTML += getItemProductHTML({ ...currItem, id: item })
  577. }
  578. $('.orderlistcart').html(productsHTML);
  579. // $('.orderslist').html(productsHTML);
  580. $('.orderslist').addClass("p-3")
  581. $('.orderslist').html(` <label for="online">
  582. <input checked data-op="online" name="payment" type="radio" class="paymentbtn " id="online">
  583. <span>Pay Via (Card, Net Banking, Wallet)</span>
  584. </label>
  585. <label for="cod" class="d-none">
  586. Cash on delivery
  587. <input data-op="cod" name="payment" type="radio" class="paymentbtn " id="cod">
  588. </label>`);
  589. $('.paymentbtn').off().click(function (e){
  590. const data = $(e.target).data('op');
  591. if(data == 'online'){
  592. orderBtnAction.addOrdernowBtn();
  593. }else{
  594. orderBtnAction.removeOrdernowBtn();
  595. }
  596. })
  597. $('.btnminus').each(function (i, el) {
  598. $(el).off().click(function (elm) {
  599. let id = $(elm.target).parents('.item-product-add').data('id');
  600. let val = parseInt($(elm.target).parents('.item-product-add').find('.qtyshowinput').val());
  601. if (val <= 1) return;
  602. val--;
  603. updateCartQuantity(id, val)
  604. $(elm.target).parents('.item-product-add').find('.qtyshowinput').val(val)
  605. });
  606. })
  607. $('.btnplus').each(function (i, el) {
  608. $(el).off().click(function (elm) {
  609. let id = $(elm.target).parents('.item-product-add').data('id');
  610. let val = parseInt($(elm.target).parents('.item-product-add').find('.qtyshowinput').val());
  611. if (val >= 11) return;
  612. val++;
  613. updateCartQuantity(id, val)
  614. $(elm.target).parents('.item-product-add').find('.qtyshowinput').val(val);
  615. });
  616. })
  617. $('.removecartItem').each(function (i, el) {
  618. $(el).click(function (elm) {
  619. let id = $(elm.target).parents('.item-product-add').data('id');
  620. let len = removeCartItem(id);
  621. $(`.item-product-add[data-id="${id}"]`).remove();
  622. if (!len) {
  623. orderBtnAction.removeOrdernowBtn();
  624. }
  625. });
  626. })
  627. }
  628. function removeOrderSummary(){
  629. $('.detailsAddressBg').removeClass('detailsAddressBg');
  630. $('.selectAddress').addClass('detailsAddressBg');
  631. $('.orderslist').html('');
  632. $('.orderslist').removeClass("p-3");
  633. orderBtnAction.removeOrdernowBtn();
  634. // $('.detailsAddressBtn').addClass('d-none');
  635. addresslistAction.addAddressContainer();
  636. $('.saveanddeliver').removeClass('d-none');
  637. $('.saveanddeliverCanel').removeClass('d-none')
  638. }
  639. function factoryErrorControl(){
  640. let inputsArr = ['phonenumber','addressdes','zipcode','state'];
  641. let controls = {};
  642. for(let i=0;i<inputsArr.length;i++){
  643. const id =inputsArr[i];
  644. controls[`${id}_errorhandler`] = {
  645. addError(){
  646. debugger;
  647. $(`#${id}`).parents('.col-sm-6').find('.invalid-feedback').addClass('d-block');
  648. },
  649. removeError(){
  650. $(`#${id}`).parents('.col-sm-6').find('.invalid-feedback').addClass('d-block');
  651. }
  652. }
  653. }
  654. return controls;
  655. }
  656. init();
  657. }
  658. checkValidAuth(initSelectDevlivery);