MCPcopy Create free account
hub / github.com/RealDevSquad/website-backend / batchUpdateUsersStatus

Function batchUpdateUsersStatus

models/userStatus.js:502–619  ·  view source on GitHub ↗
(users)

Source from the content-addressed store, hash-verified

500
501 if (!userStatusExists || !data?.currentStatus) {
502 const newUserStatusRef = userStatusModel.doc();
503 const newUserStatusData = {
504 userId,
505 lastOooUntil: null,
506 currentStatus: statusToUpdate,
507 };
508 state === userState.ACTIVE ? summary.activeUsersAltered++ : summary.idleUsersAltered++;
509 if (state === userState.IDLE) await addGroupIdleRoleToDiscordUser(userId);
510 batch.set(newUserStatusRef, newUserStatusData);
511 } else {
512 const currentStatusData = data?.currentStatus || {};
513 const currentState = currentStatusData.state;
514 const currentUntil = currentStatusData.until;
515 if (currentState === state) {
516 currentState === userState.ACTIVE ? summary.activeUsersUnaltered++ : summary.idleUsersUnaltered++;
517 continue;
518 } else if (currentState === userState.ONBOARDING) {
519 const docRef = userStatusModel.doc(id);
520 if (state === userState.ACTIVE) {
521 const updatedStatusData = {
522 currentStatus: statusToUpdate,
523 };
524 summary.onboardingUsersAltered++;
525 batch.update(docRef, updatedStatusData);
526 } else {
527 summary.onboardingUsersUnaltered++;
528 }
529 } else if (currentState === userState.OOO) {
530 const docRef = userStatusModel.doc(id);
531 state === userState.ACTIVE ? summary.activeUsersAltered++ : summary.idleUsersAltered++;
532
533 const currentDate = new Date();
534 const untilDate = new Date(currentUntil);
535
536 const timeDifferenceMilliseconds = currentDate.setUTCHours(0, 0, 0, 0) - untilDate.setUTCHours(0, 0, 0, 0);
537 const timeDifferenceDays = Math.floor(timeDifferenceMilliseconds / (24 * 60 * 60 * 1000));
538
539 if (timeDifferenceDays >= 1) {
540 if (state === userState.IDLE) await addGroupIdleRoleToDiscordUser(userId);
541 const lastOooUntilUpdate = resolveLastOooUntil({
542 previousState: currentState,
543 previousUntil: currentUntil,
544 nextState: state,
545 fallbackTimestamp: currentTimeStamp,
546 });
547 batch.update(docRef, {
548 currentStatus: statusToUpdate,
549 ...(lastOooUntilUpdate !== undefined && { lastOooUntil: lastOooUntilUpdate }),
550 });
551 } else {
552 const getNextDayAfterUntil = getNextDayTimeStamp(currentUntil);
553 batch.update(docRef, {
554 futureStatus: {
555 ...statusToUpdate,
556 from: getNextDayAfterUntil,
557 },
558 });
559 }

Callers 1

Calls 4

resolveLastOooUntilFunction · 0.85
getNextDayTimeStampFunction · 0.85
getUserStatusFunction · 0.70

Tested by

no test coverage detected