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){
});
});