var userCode=null; var adv_data={}; function translateStatus(status){ if(status==0) return "In bozza"; else if(status==1) return "Da validare"; else if(status==2) return "Validato"; else if(status==3) return "Chiuso"; else if(status==4) return "In preventivo"; else if(status==5) return "Sospeso"; } function translateActionStatus(status){ if(status==0) return "Metti in bozza"; else if(status==1) return "Da validare"; else if(status==2) return "Valida"; else if(status==3) return "Chiudi"; else if(status==4) return "Calcola Preventivo"; else if(status==5) return "Sospendi"; } function getFlatObject(object) { function iter(o, p) { if (Array.isArray(o) ){ o.forEach(function (a, i) { iter(a, p.concat(i)); }); return; } if (o !== null && typeof o === 'object') { Object.keys(o).forEach(function (k) { iter(o[k], p.concat(k)); }); return; } path[p.join('.')] = o; } var path = {}; iter(object, []); return path; } /*function isQuoteCalcolable(){ var create_deferred = $.Deferred(); $.ajax({ url: remoteAPIurl+"/api/v1/ad/"+adv_id+"/quote/get?api_token="+token, crossDomain: true, type: "get", data: "", dataType: 'json', success: function(result, statusText, resObject){ var code=result.code; if(code=="200"){ var adv_data=result.data; var quotable=adv_data.quotable; if(quotable==true){ create_deferred.resolve(true); }else{ create_deferred.resolve(false); return; } } }, error: function() { console.log('error'); } }); return create_deferred; }*/ function displayQuote(adv_id){ //preloader(true); var create_deferred_2 = $.Deferred(); $.ajax({ url: remoteAPIurl+"/api/v1/ad/"+adv_id+"/quote/get?api_token="+token, crossDomain: true, type: "get", data: "", dataType: 'json', success: function(result, statusText, resObject){ //location.reload(); //preloader(false); var total_to_pay=0; var code=result.code; if(code=="200"){ var adv_data=result.data; var quotable=adv_data.quotable; var adv_quote_price=adv_data.advertising.quote_price; var adv_quote_notes=adv_data.advertising.quote_notes; var advance_price=adv_data.advance_price; var status=adv_data.advertising['status']; var payed_at=adv_data.advertising['payed_at']; var closed_at=adv_data.advertising['closed_at']; var accepted_quote_at=adv_data.advertising['accepted_quote_at']; var end_trial_at=adv_data.advertising['end_trial_at']; var refused_quote_at=adv_data.advertising['refused_quote_at']; if(quotable==false && adv_quote_price==-1){ $('quote-content').append("Preventivo non calcolabile"); create_deferred_2.resolve(-1); return; }else{ if(adv_quote_price!=-1 && adv_quote_price!=null){ new_quote_voice="1Quota di pubblicazione annuncio"+ ""+advance_price+" crediti "; $('quote-content').append(new_quote_voice); new_quote_voice="2Quota di collocamento personale + Quota maggiorazioni"+ ""+adv_quote_price+" crediti "; $('quote-content').append(new_quote_voice); //stampo costo TOTALE annuncio new_quote_voice="Saldo totale servizio"+ ""+(parseInt(advance_price)+parseInt(adv_quote_price))+" crediti "; $('quote-content').append(new_quote_voice); $('quote-content').append(""+adv_quote_notes+""); //$("quote-content").append(""); total=adv_quote_price; }else{ var main_voices=adv_data.main_voices; //console.log(main_voices); main_voices=getFlatObject(main_voices); //console.log(main_voices); var more_voices=adv_data.more_voices; more_voices=getFlatObject(more_voices); var tot_more_voices=adv_data.tot_more_voices; var total=adv_data.total; var profession_name=adv_data.profession_name; var new_quote_voice; // new_quote_voice="1Quota di pubblicazione annuncio"+ ""+advance_price+" crediti "; $('quote-content').append(new_quote_voice); new_quote_voice="2Quota di collocamento personale"+ ""+main_voices[Object.keys(main_voices)[0]]+" crediti "; $('quote-content').append(new_quote_voice); new_quote_voice=""+quote_dets[Object.keys(main_voices)[0]]+ " per "+profession_name+" "+main_voices[Object.keys(main_voices)[0]]+" crediti "; $('quote-content').append(new_quote_voice); new_quote_voice="3Quota maggiorazioni"+ ""+tot_more_voices+" crediti "; $('quote-content').append(new_quote_voice); $.each(more_voices,function(index,elem){ //console.log("index="+index); new_quote_voice=""+quote_dets[index]+ " "+elem+" crediti "; $('quote-content').append(new_quote_voice); }); // //stampo costo TOTALE annuncio new_quote_voice="Saldo totale servizio"+ ""+(total+advance_price)+" crediti "; $('quote-content').append(new_quote_voice); } $("quote-content").append(""); //console.log("TOTAL="+total); if(status==2 && closed_at==null && end_trial_at!=null){ total_to_pay=total; }else if(status==4 && accepted_quote_at!=null && payed_at==null){ total_to_pay=advance_price; } if(accepted_quote_at!=null){ var accepted_quote_at = moment(accepted_quote_at).format("DD/MM/YYYY")+" alle "+moment(accepted_quote_at).format("HH:mm"); $("quote-content > quote-buttons").append("Preventivo accettato in data "+accepted_quote_at+""); }else if(refused_quote_at!=null){ var refused_quote_at = moment(refused_quote_at).format("DD/MM/YYYY")+" alle "+moment(refused_quote_at).format("HH:mm"); $("quote-content > quote-buttons").append("Preventivo rifiutato in data "+refused_quote_at+""); } if(payed_at!=null){ //console.log("accepted_quote_at="+closed_at); var payed_at = moment(payed_at).format("DD/MM/YYYY")+" alle "+moment(payed_at).format("HH:mm"); $("quote-content > quote-buttons").append("Costo di pubblicazione del preventivo pagato in data "+payed_at+""); } if(end_trial_at!=null){ var end_trial_at = moment(end_trial_at).format("DD/MM/YYYY")+" alle "+moment(end_trial_at).format("HH:mm"); $("quote-content > quote-buttons").append("Fine delle prove candidati effettuata in data "+end_trial_at+""); } if(closed_at!=null){ var closed_at = moment(closed_at).format("DD/MM/YYYY")+" alle "+moment(closed_at).format("HH:mm"); $("quote-content > quote-buttons").append("Preventivo saldato in data "+closed_at+""); } create_deferred_2.resolve(total_to_pay); } } //console.log(create_deferred_2.state()); }, error: function() { console.log('error'); } }); return create_deferred_2.promise(); } function changeAdvStatusAndPay(ad_code,sub_status){ if(!sub_status) sub_status=""; if(sub_status=="pay-last"){ new_status=3; var text="Sei sicuro di voler saldare il costo del preventivo (il costo di pubblicazione è stato già saldato)?"; }else if(sub_status=="pay"){ new_status=2; var text="Sei sicuro di voler pagare il costo di pubblicazione?"; }else{ return false; } //confirm(text).done(function(data){ var create_deferred = $.Deferred(); var moreFields={}; $('.pay-sub-menu:visible').find('input').each(function(id,elem){ moreFields[$(elem).attr("id")]=$(elem).val(); }); if($('#pay-mode-generate-invoice').is(':checked')){ moreFields["pay-mode-generate-invoice"]=1; }else{ moreFields["pay-mode-generate-invoice"]=0; } moreFields['selected']=parseInt($('[name=pay-mode]:checked').val()); //console.log(moreFields); //return; var adData={ "new_status": new_status, "moreFields": moreFields }; adData.sub_status=sub_status; //console.log(adData); $.ajax({ url: remoteAPIurl+'/api/v1/ad/'+ad_code+'/status/change?api_token='+token, crossDomain: true, type: "put", data: adData, dataType: 'json', success: function(result, statusText, resObject){ location.reload(); create_deferred.resolve(result); }, error: function() { console.log('error'); } }); return create_deferred; //}); } function changeAdvStatus(ad_code,new_status,sub_status){ if(!sub_status) sub_status=""; if(new_status==4 && sub_status=="generate") var text="Sei sicuro di voler generare il preventivo?"; else if(new_status==4 && sub_status=="generate-manual") var text="Sei sicuro di voler inserire il preventivo?"; else if(new_status==4 && sub_status=="accept") var text="Sei sicuro di voler accettare il preventivo?"; else if(new_status==4 && sub_status=="refuse") var text="Sei sicuro di voler rifiutare il preventivo?"; else if(new_status==4 && sub_status=="request") var text="Sei sicuro di voler richiedere un preventivo?"; //else if(new_status==4 && sub_status=="pay-last") var text="Sei sicuro di voler saldare il costo del preventivo (il costo di pubblicazione è stato già saldato)?"; //else if(new_status==4 && sub_status=="pay") var text="Sei sicuro di voler pagare il costo di pubblicazione?"; else if(new_status==2 && sub_status=="end-trial") var text="Sei sicuro di voler chiudere il periodo di prova?"; else var text="Sei sicuro di voler cambiare lo stato dell'annuncio?"; var textarea_value=""; var input_value=""; if(new_status==4 && sub_status=="generate-manual"){ textarea_value=$(".quote-manual-text textarea").val(); input_value=$(".quote-manual-price input").val(); if(input_value=="" || textarea_value==""){ alert("Prezzo e testo del preventivo sono campi obbligatori."); return; } } confirm(text).done(function(data){ var create_deferred = $.Deferred(); var adData={ "new_status": new_status, "quote_manual_price": input_value, "quote_manual_text": textarea_value, "sub_status": sub_status }; $.ajax({ url: remoteAPIurl+'/api/v1/ad/'+ad_code+'/status/change?api_token='+token, crossDomain: true, type: "put", data: adData, dataType: 'json', success: function(result, statusText, resObject){ location.reload(); create_deferred.resolve(result); }, error: function() { console.log('error'); } }); return create_deferred; }); } function getAdv(ad_code){ var create_deferred = $.Deferred(); $.ajax({ url: remoteAPIurl+'/api/v1/ad/'+ad_code+'?api_token='+token, crossDomain: true, type: "get", dataType: 'json', success: function(result, statusText, resObject){ create_deferred.resolve(result); }, error: function() { console.log('error'); } }); return create_deferred.promise(); } function checkPayParams(){ var checkVar=true; $('.has-error').removeClass("has-error"); $('.pay-sub-menu:visible').find('[required]').each(function(id,elem){ if($(elem).val()==""){ checkVar=false; $(elem).parent().addClass("has-error"); } }); var selected_mode=parseInt($('[name=pay-mode]:checked').val()); if(selected_mode==0){ var total_credits=parseInt($('.credits-total').attr("total")); var total_cost=parseInt($('.pay-total-cost').val()); if(total_credits < total_cost){ $('.pay-sub-menu-0 h4').html("Pagamento in crediti (Totale crediti insufficiente)"); $('.credits-total').addClass("has-error"); checkVar=false; } } console.log("selected_mode="+selected_mode); return checkVar; } function displayConfirmPay(mode){ getUser(adv_data.user.slug).done(function(result){ var name=null; data=result.data; if(data.business_name!="" && data.business_name!=null) name=data.business_name; else name=data.first_name+" "+data.last_name; if(data.addresses==null || data.addresses.length==0 || (data.addresses[0].vat_number=="" && data.addresses[0].tax_code=="")){ var directUrl = "/users/addresses.php?ucode="+data.slug+"&redirectUrl="+encodeURIComponent("/advertisings/status.php?acd="+ad_code); alert("Prima di proseguire con l'operazione è necessario compilare l'indirizzo di fatturazione di questo utente, comprensivo di codice fiscale e/o partita iva",directUrl); return; }else{ $('.credits-name').html(name); apiCall("GET","/user/"+userCode+"/credit?api_token="+token,function(result, statusText, resObject){ $('.credits-total').html(result.data.total); $('.credits-total').attr("total",result.data.total); }); displayPayPanel({}).done(function(data){ var credit_cost=$('#pay-total-cost').val(); var main_text="Seleziona la modalità di pagamento per coprire il costo di "+credit_cost+ " crediti."; data=data.replace('
','
'+main_text+'
'); confirmNoDismiss(data,false,checkPayParams).done(function(){ //console.log("INSIDE"); changeAdvStatusAndPay(ad_code,mode); }); }); } }); } $(function(){ var new_statuses=[]; var badges=[]; getAdvModel().done(function(model_result){ getAllModels().done(function(models){ global_models=models; for(var key in models) { model=models[key]; //console.log(model); var tot_basic=0; badges[key]={}; $.each(model.groups, function(id2,group) { if(group.master_id==null) $('.sub_block_title_'+key).html(group.title+" "); $.each(group.inputs, function(id3,input){ if(input.type!="9") return true; displayInput(".fields > .competences > .sub_block_content_"+key, input,".fields > .competences > .sub_block_content_"+key+" > .input#"+input.id); if(typeof(badges[key])=="undefined") badges[key]={}; badges[key].name=""+model.name; temp_groups=model.groups; badges[key].image=""+temp_groups[Object.keys(temp_groups)[0]].image; if(input.badgeType=="0") tot_basic++; if(typeof(badges[key].fields)=="undefined") badges[key].fields=[]; badges[key].fields.push({code:input.code,badgeType:input.badgeType,name:input.labels}); }); }); badges[key].tot_basic=tot_basic; } var adv_model={}; var code=model_result.code; if(code=="200"){ adv_model=model_result.data; getAdv(ad_code).done(function(result){ adv_data=result.data; displayADV(adv_model, adv_data); adv_data=result.data.advertising[0]; adv_status=adv_data.status; adv_type=adv_data.type; //console.log(adv_data); getUser(adv_data.user.slug).done(function(result){ var busname=result.data.business_name; var uname=result.data.first_name; var sname=result.data.last_name; if(busname!="") user_adv_name=busname; else user_adv_name=uname+" "+sname; //console.log(adv_type); if(parseInt(adv_type)==0) adv_title_type="Smart"; else if(parseInt(adv_type)==1) adv_title_type="Exclusive"; $('.page-title').html("Gestisci annuncio "+adv_title_type+" per "+user_adv_name); }); adv_quote_price=adv_data.quote_price; adv_requested_quote_at=adv_data.requested_quote_at; adv_quoted_at=adv_data.quoted_at; adv_accepted_quote_at=adv_data.accepted_quote_at; adv_refused_quote_at=adv_data.refused_quote_at; adv_payed_at=adv_data.payed_at; adv_end_trial_at=adv_data.end_trial_at; userCode=adv_data.user.slug; if(adv_type==0){ if(adv_status==0){ //1 new_statuses=[1]; }else if(adv_status==1){ //0 | 2 new_statuses=[0,2]; }else if(adv_status==2){ //3 | 5 new_statuses=[3,5]; }else if(adv_status==5){ //2 | 3 new_statuses=[2,3]; } }else{ //type==1 || type==2 if(adv_status==0){ //4 new_statuses=[4]; }else if(adv_status==4){ //0 | 1 new_statuses=[0,1]; }else if(adv_status==1){ //2 new_statuses=[2]; }else if(adv_status==2){ //3 | 5 new_statuses=[3,5]; }else if(adv_status==5){//2 | 3 new_statuses=[2,3]; } } var more_class=""; var adv_status_text=translateStatus(adv_status); var more_text=""; var quote_insert=""; //console.log("adv_status="+adv_status); var buttons=[]; if(adv_type==1 && (adv_status==4 || adv_status==2)){ if(adv_end_trial_at!=null){ var cr_deferred=displayQuote(ad_code); more_text=" FINE DEL PERIODO DI PROVA"; buttons.push("
Salda costo del preventivo
"); cr_deferred.done(function(data2){ //console.log("data2 after = "+data2); $('.pay-total-cost').val(data2); }); }else if(adv_payed_at!=null){ displayQuote(ad_code); more_text=" PAGATO (costo di PUBBLICAZIONE)"; buttons.push("
Fine del periodo di prova
"); }else if(adv_accepted_quote_at!=null){ var cr_deferred=displayQuote(ad_code); //console.log(cr_deferred); //console.log(cr_deferred.state()); more_text=" ACCETTATO"; buttons.push("
Paga quota di pubblicazione
"); cr_deferred.done(function(data2){ $('.pay-total-cost').val(data2); }); }else if(adv_refused_quote_at!=null){ //displayQuote(ad_code); more_text=" RIFIUTATO"; buttons.push("
Modifica Annuncio
","
Genera nuovo preventivo
"); }else if(adv_quoted_at!=null){ displayQuote(ad_code); more_text=" CALCOLATO"; buttons.push("
Accetta
","
Rifiuta
"); }else if(adv_quote_price==-1){ more_text=" NON CALCOLABILE"; quote_insert="
Costo del preventivo (in crediti)
"; quote_insert+="
Testo del preventivo
"; buttons.push("
Inserisci preventivo
"); }else if(adv_requested_quote_at!=null){ more_text=" RICHIESTO"; buttons.push("
Modifica Annuncio
","
Genera preventivo
"); } }else if(adv_type==1 && adv_status==3){ displayQuote(ad_code); more_text=""; }else if(adv_status==0){ if(adv_type==1){ more_text=""; buttons.push("
Richiedi Preventivo
"); }else{ more_text=""; buttons.push("
Valida
"); } }else if(adv_status==1){ if(adv_type==0){ more_text=""; buttons.push("
Valida
"); } } if(adv_status==2) buttons.push("
Disabilita l'annuncio
"); if(adv_status==5) buttons.push("
Riattiva l'annuncio
"); $.each(buttons,function(id,btn){ $('hirebox').append(btn); }); $('advheader').append("
Stato attuale dell'annuncio: "+adv_status_text+more_text+"
"); if(quote_insert!="") $('quote-content').append(quote_insert); if(adv_status!=4){ $.each(new_statuses,function(id,elem){ if(elem==3) more_class="closed"; else more_class=""; }); }else{ more_class="closed"; } }); } }); }); getAdv(ad_code).done(function(result){ }); });