Hi does anyone know how to do this? its for a repeater advert, i want it to expire once 10 people have enquired about the job thanks
my page code and what Ive tried so far but it doesn’t work
import wixLocation from 'wix-location';
import wixUsers from 'wix-users';
import wixData from 'wix-data';
import { sendEmail } from 'backend/emailJobPosts';
$w.onReady(() => {
$w("#dynamicDataset").onReady(() => {
var currentItem = $w("#dynamicDataset").getCurrentItem();
$w("#textTitle").text = "Send a message to - " + currentItem.firstName;
//added by snshah, to send email after applicants successfully applied for the job.
$w("#dataset1").onAfterSave(() => {
wixData.query("Trader-Job-Post-Clicks").find().then((result) => {
let SearchStatsitem = result.items[0]; //item with values
let id = SearchStatsitem._id;
id = $w('#dataset4').getCurrentItem().traderJobPostsClickLimit;
// this will be used for
//writing data back
SearchStatsitem.traderJobPostsClickLimit++;
// increment field with yes by 1
// write updated value back to collection
wixData.insert("Trader-Job-Post-Clicks", SearchStatsitem).then(() => {
// refresh dataset to show new value
//(this should be done in promise,
//after updating collection)
$w("#dataset4").refresh();
});
});
// $w('#uploadGif').hide('FadeOut');
// let jobTitleVal = currentItem.traderBusinessName;
//let contactId = $w("#idFieldText").text;
let jobPosterFirstName = currentItem.firstName;
//let contactId = currentItem._id;
let emails = $w("#JobPosterEmail").text;
let jobPostersJob = $w("#jobPostersJob").text;
let contactNumber = $w("#contactMobileNumber").text;
let jobPostersHomeNumber = $w("#jobPostersHomeNumber").text;
let jobLocation = $w('#jobLocation').text;
let jobDescription = $w('#jobPosterMessage').text;
let jobId = $w('#jobId').text;
let lastName = $w('#lastName').text;
let messageBack = $w("#messageTextBox").value;
let companyName = $w("#traderName").value;
let fullName = $w("#traderFullName").text;
let traderEmail = $w("#traderEmailAddress").value;
let traderContactNumber = $w("#traderContactNumber").value;
$w("#postingMailTo").show();
$w("#postingMailTo").text = "Posting message to " + jobPosterFirstName;
sendEmail(emails, fullName, jobPostersJob, jobDescription, contactNumber, jobPostersHomeNumber,
jobLocation, companyName, messageBack, lastName, jobId, jobPosterFirstName, traderEmail, traderContactNumber)
.then(sendEmailStat => {
//$w("#successMessage").show();
$w("#successMessage").text = 'Email Status is : ' + sendEmailStat;
console.log(sendEmailStat);
})
.catch(error => {
console.log(error);
$w("#error").show();
$w("#error").text = "There was an Error sending message! please try again later! " + error;
});
});
});
})
$w.onReady(function () {
$w('#dataset4').onReady(() => {
const myCount = $w('#dataset4').getCurrentItem().traderJobPostsClickLimit;
$w('#count').text = myCount.toLocaleString('en');
$w('#submitMessage').onClick(() => {
if(myCount > 2){
let ID = $w('#dynamicDataset').getCurrentItem()._id
wixData.remove("JobPosts", ID)
.then( (results) => {
let item = results;
console.log(results) //see item below
} )
.catch( (err) => {
let errorMsg = err;
console.log(err)
} );
}
})
})
})
// This function was added from the Properties & Events panel. To learn more, visit http://wix.to/UcBnC-4
// Add your code for this event here:
Hi thanks J.D i tried calling your code from the backend like you said but i kept getting errors with either _id is undefined or itemId isn’t a string or ’ Cannot create property ‘numberOfClicks’ on string ‘e484ca01-46f9-4811-a59e-327881d97adb’’ ?
so basically when they click contact on the advert it takes them through to a page where they can submit a message to and when different trades click on the submit message button x amount of times i want the advert (repeater item) to expire that has the contact button in if that makes sense
I’ve sorted it now thanks @J.D i altered a little bit of code here in backend and frontend code also changed my database permissions from who can delete content to anyone and it now works
working code:
frontend
import wixLocation from 'wix-location';
import wixUsers from 'wix-users';
import wixData from 'wix-data';
import { sendEmail } from 'backend/emailJobPosts';
import { updateClicks } from 'backend/clicks';
$w.onReady(() => {
$w("#dynamicDataset").onReady(() => {
let userId = $w('#idFieldText').text;
var item;
var currentItem = $w("#dynamicDataset").getCurrentItem();
$w("#textTitle").text = "Send a message to - " + currentItem.firstName;
item = $w("#dynamicDataset").getCurrentItem();
$w("#dataset1").onAfterSave(() => {
updateClicks(item)
.catch(error => {
console.log(error);
$w("#error").show();
$w("#error").text = "There was an Error sending message! please try again later! " + error;
});
//let contactId = $w("#idFieldText").text;
let jobPosterFirstName = currentItem.firstName;
//let contactId = currentItem._id;
let emails = $w("#JobPosterEmail").text;
let jobPostersJob = $w("#jobPostersJob").text;
let contactNumber = $w("#contactMobileNumber").text;
let jobPostersHomeNumber = $w("#jobPostersHomeNumber").text;
let jobLocation = $w('#jobLocation').text;
let jobDescription = $w('#jobPosterMessage').text;
let jobId = $w('#jobId').text;
let lastName = $w('#lastName').text;
let messageBack = $w("#messageTextBox").value;
let companyName = $w("#traderName").value;
let fullName = $w("#traderFullName").text;
let traderEmail = $w("#traderEmailAddress").value;
let traderContactNumber = $w("#traderContactNumber").value;
$w("#postingMailTo").show();
$w("#postingMailTo").text = "Posting message to " + jobPosterFirstName;
sendEmail(emails, fullName, jobPostersJob, jobDescription, contactNumber, jobPostersHomeNumber,
jobLocation, companyName, messageBack, lastName, jobId, jobPosterFirstName, traderEmail, traderContactNumber)
.then(sendEmailStat => {
//$w("#successMessage").show();
$w("#successMessage").text = 'Email Status is : ' + sendEmailStat;
console.log(sendEmailStat);
})
.catch(error => {
console.log(error);
$w("#error").show();
$w("#error").text = "There was an Error sending message! please try again later! " + error;
});
});
});
})