manager info view job notes working correctly now.
This commit is contained in:
+46
-24
@@ -1900,36 +1900,55 @@
|
|||||||
const currentUserName = getDisplayName();
|
const currentUserName = getDisplayName();
|
||||||
const noteType = isManagerNote ? 'manager' : 'job';
|
const noteType = isManagerNote ? 'manager' : 'job';
|
||||||
const typeLabel = isManagerNote ? '[MANAGER NOTE]' : '';
|
const typeLabel = isManagerNote ? '[MANAGER NOTE]' : '';
|
||||||
const formatted = `${typeLabel}[${currentUserName} - ${timestamp}] [Job #${job?.Job_Number||'N/A'}] ${html}`;
|
const formatted = `${typeLabel}[${currentUserName} - ${timestamp}] ${html}`;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// If it's a job note, first update Job_Info_Prod.Notes field
|
||||||
|
let jobRecordId = job?.id || '';
|
||||||
|
|
||||||
|
if(!isManagerNote) {
|
||||||
|
// Fetch the latest notes from PocketBase to ensure we have the full chain
|
||||||
|
const fetchLatest = await fetch(`${PB_COLLECTION_URL}/${job.id}`, {
|
||||||
|
headers: authHeaders()
|
||||||
|
});
|
||||||
|
|
||||||
|
if(fetchLatest.ok) {
|
||||||
|
const latestJob = await fetchLatest.json();
|
||||||
|
const currentNotes = latestJob.Notes || '';
|
||||||
|
const updatedNotes = formatted + '\n\n' + currentNotes;
|
||||||
|
|
||||||
|
const resJob = await fetch(`${PB_COLLECTION_URL}/${job.id}`, {
|
||||||
|
method: 'PATCH',
|
||||||
|
headers: {'Content-Type': 'application/json', ...authHeaders()},
|
||||||
|
body: JSON.stringify({Notes: updatedNotes})
|
||||||
|
});
|
||||||
|
|
||||||
|
if(!resJob.ok) {
|
||||||
|
console.error('Job_Info update failed:', resJob.status);
|
||||||
|
throw new Error('Failed to update Job_Info: ' + resJob.status);
|
||||||
|
}
|
||||||
|
|
||||||
|
const updated = await resJob.json();
|
||||||
|
jobRecordId = updated.id || job.id;
|
||||||
|
|
||||||
|
// Update both current job object and the passed job parameter
|
||||||
|
currentJob.Notes = updatedNotes;
|
||||||
|
job.Notes = updatedNotes;
|
||||||
|
console.log('Updated Job_Info_Prod.Notes for job:', jobRecordId);
|
||||||
|
} else {
|
||||||
|
throw new Error('Failed to fetch latest job data: ' + fetchLatest.status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create payload - only include job_info_id, not Job_Number_Id array
|
||||||
const payloadNote = {
|
const payloadNote = {
|
||||||
Note: formatted.trim(),
|
Note: formatted.trim(),
|
||||||
Job_Number: job?.Job_Number || '',
|
Job_Number: job?.Job_Number || '',
|
||||||
Job_Number_Id: job?.id ? [job.id] : [],
|
job_info_id: jobRecordId,
|
||||||
type: noteType
|
type: noteType
|
||||||
};
|
};
|
||||||
|
|
||||||
// If it's a job note, also update Job_Info_Prod.Notes field
|
console.log('Submitting note payload:', payloadNote);
|
||||||
if(!isManagerNote) {
|
|
||||||
const updatedNotes = formatted + '\n\n' + (job.Notes || '');
|
|
||||||
const resJob = await fetch(`${PB_COLLECTION_URL}/${job.id}`, {
|
|
||||||
method: 'PATCH',
|
|
||||||
headers: {'Content-Type': 'application/json', ...authHeaders()},
|
|
||||||
body: JSON.stringify({Notes: updatedNotes})
|
|
||||||
});
|
|
||||||
|
|
||||||
if(!resJob.ok) {
|
|
||||||
console.error('Job_Info update failed:', resJob.status);
|
|
||||||
throw new Error('Failed to update Job_Info: ' + resJob.status);
|
|
||||||
}
|
|
||||||
|
|
||||||
const updated = await resJob.json();
|
|
||||||
payloadNote.Job_Number_Id = [updated.id || job.id];
|
|
||||||
|
|
||||||
// Update current job object
|
|
||||||
currentJob.Notes = updatedNotes;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create note in notes collection with type
|
// Create note in notes collection with type
|
||||||
const resNote = await fetch(`${NOTES_COLLECTION_URL}`, {
|
const resNote = await fetch(`${NOTES_COLLECTION_URL}`, {
|
||||||
@@ -1947,6 +1966,9 @@
|
|||||||
} else {
|
} else {
|
||||||
throw new Error('Failed to save note: ' + resNote.status);
|
throw new Error('Failed to save note: ' + resNote.status);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
const savedNote = await resNote.json();
|
||||||
|
console.log('Note created successfully in Notes collection:', savedNote);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear editor
|
// Clear editor
|
||||||
@@ -1968,8 +1990,8 @@
|
|||||||
if(!job?.id) return;
|
if(!job?.id) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Fetch all notes for this job
|
// Fetch all notes for this job using job_info_id
|
||||||
const filter = `Job_Number_Id?~"${job.id}"`;
|
const filter = `job_info_id="${job.id}"`;
|
||||||
const resp = await fetch(`${NOTES_COLLECTION_URL}?filter=${encodeURIComponent(filter)}&sort=-created`, {
|
const resp = await fetch(`${NOTES_COLLECTION_URL}?filter=${encodeURIComponent(filter)}&sort=-created`, {
|
||||||
headers: authHeaders()
|
headers: authHeaders()
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user