I have tried to build a member page to show the reports based on the login user email.
Here is my code on back-end and front-end.
member.jsw
import wixData from 'wix-data';
let options = {
"suppressAuth": true,
"suppressHooks": false
};
export function getEmail(userId) {
return wixData.query("Members/PrivateMembersData")
.eq("_id", userId)
.find(options)
.then((results) => {
let email = results.items[0].loginEmail;
return email;
});
}
export async function getReports(dateStart, dateEnd, statuses, userId) {
let email = await getEmail(userId);
return wixData.query("project_data")
.eq("email", email)
.hasSome("status", statuses)
.ge("startDate", dateStart)
.le("endTime", dateEnd)
.ascending("startDate")
.find(options)
.then((queryResults) => {
return queryResults.items;
})
.catch((error) => {
Promise.reject(
new Error('mmeber.jsw > getReports error - details - ' + error.message));
});
}
page code
import { getEmail, getReports } from 'backend/member_data/member.jsw';
import wixUsers from 'wix-users';
$w.onReady(function () {
initElements();
});
function initElements() {
$w('#submitButton').onClick(() => loadReports());
$w('#checkbox').options = [
{ "value": "STARTED", "label": "STARTED" },
{ "value": "PENDING", "label": "PENDING" },
{ "value": "COMPLETED", "label": "COMPLETED" },
{ "value": "CANCELED", "label": "CANCELED" }
];
$w('#checkbox').value = ["STARTED"];
$w('#dateStart').value = new Date("2022-01-01T17:00:00.000Z");
$w('#dateEnd').value = new Date("2022-01-08T17:00:00.000Z");
$w('#reportsRepeater').onItemReady(($item, data) => {
$item('#projectDate').text = data.startDate.toLocaleString();
$item('#serviceName').text = data.service;
$item('#statusText').text = data.status;
$item('#document').src = data.document1;
});
$w('#reportsRepeater').data = [];
}
async function loadReports() {
$w('#errorText').hide();
if (!($w('#dateStart').valid && $w('#dateEnd').valid && $w('#checkbox').valid)) {
$w('#errorText').show();
$w('#errorText').text = "Error in form fields"
return;
}
}
$w('#submitButton').disable();
const dateStart = $w('#dateStart').value;
const dateEndTemp = $w('#dateEnd').value;
const dateEnd = new Date(dateEndTemp.getTime() + 60 * 60 * 24 * 1000);
const statuses = $w('#checkbox').value;
let email = function memberData() {
let user = wixUsers.currentUser;
if (user.loggedIn) {
let userId = wixUsers.currentUser.id;
return getEmail(userId)
.then((emailquery) => {
//$w("#welcome").text = String(name);
let email = emailquery;
return email;
});
}
}
getReports(dateStart, dateEnd, statuses, email).then((results) => {
$w('#reportsRepeater').data = results;
if (results.length == 0) {
$w('#errorText').show();
$w('#errorText').text = "No reports found";
} else {
//$w('#titles').show();
}
}).catch((error) => {
console.error('getReports error - ' + error.message);
}).finally(() => {
$w('#submitButton').enable();
})
What I have after running the page code is:
Anyone who can help me for these errors?