29796/backend/src/db/seeders/20231127130745-sample-data.js
2025-03-11 18:35:51 +00:00

807 lines
18 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const AttendanceRecords = db.attendance_records;
const CustomFields = db.custom_fields;
const Equipment = db.equipment;
const Lockers = db.lockers;
const Members = db.members;
const Payrolls = db.payrolls;
const Popups = db.popups;
const PosTransactions = db.pos_transactions;
const SpaSessions = db.spa_sessions;
const AttendanceRecordsData = [
{
check_in_time: new Date('2023-04-01T08:00:00Z'),
check_out_time: new Date('2023-04-01T10:00:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
check_in_time: new Date('2023-04-02T09:00:00Z'),
check_out_time: new Date('2023-04-02T11:00:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
check_in_time: new Date('2023-04-03T07:30:00Z'),
check_out_time: new Date('2023-04-03T09:30:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
check_in_time: new Date('2023-04-04T10:00:00Z'),
check_out_time: new Date('2023-04-04T12:00:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const CustomFieldsData = [
{
field_name: 'Emergency Contact',
field_value: 'Jane Doe',
},
{
field_name: 'Preferred Workout Time',
field_value: 'Morning',
},
{
field_name: 'Certifications',
field_value: 'CPR, First Aid',
},
{
field_name: 'Training Specialties',
field_value: 'Strength Training, Cardio',
},
];
const EquipmentData = [
{
name: 'Treadmill',
description: 'High-end treadmill for cardio workouts',
purchase_date: new Date('2022-01-15T00:00:00Z'),
warranty_information: '2 years',
status: 'Available',
},
{
name: 'Dumbbells',
description: 'Set of dumbbells ranging from 5 to 50 lbs',
purchase_date: new Date('2021-06-10T00:00:00Z'),
warranty_information: '1 year',
status: 'OutofService',
},
{
name: 'Stationary Bike',
description: 'Stationary bike with adjustable resistance',
purchase_date: new Date('2020-11-20T00:00:00Z'),
warranty_information: '3 years',
status: 'OutofService',
},
{
name: 'Rowing Machine',
description: 'Rowing machine for full-body workouts',
purchase_date: new Date('2021-03-05T00:00:00Z'),
warranty_information: '2 years',
status: 'InMaintenance',
},
];
const LockersData = [
{
locker_number: 101,
status: 'Occupied',
// type code here for "relation_one" field
},
{
locker_number: 102,
status: 'Occupied',
// type code here for "relation_one" field
},
{
locker_number: 103,
status: 'Available',
// type code here for "relation_one" field
},
{
locker_number: 104,
status: 'Occupied',
// type code here for "relation_one" field
},
];
const MembersData = [
{
first_name: 'John',
last_name: 'Doe',
email: 'john.doe@example.com',
phone_number: '1234567890',
// type code here for "relation_one" field
membership_status: 'Active',
membership_start_date: new Date('2023-01-01T00:00:00Z'),
membership_end_date: new Date('2023-12-31T00:00:00Z'),
},
{
first_name: 'Jane',
last_name: 'Smith',
email: 'jane.smith@example.com',
phone_number: '0987654321',
// type code here for "relation_one" field
membership_status: 'Inactive',
membership_start_date: new Date('2023-02-01T00:00:00Z'),
membership_end_date: new Date('2023-11-30T00:00:00Z'),
},
{
first_name: 'Alice',
last_name: 'Johnson',
email: 'alice.johnson@example.com',
phone_number: '1122334455',
// type code here for "relation_one" field
membership_status: 'Active',
membership_start_date: new Date('2023-03-01T00:00:00Z'),
membership_end_date: new Date('2023-12-01T00:00:00Z'),
},
{
first_name: 'Bob',
last_name: 'Brown',
email: 'bob.brown@example.com',
phone_number: '2233445566',
// type code here for "relation_one" field
membership_status: 'Active',
membership_start_date: new Date('2022-01-01T00:00:00Z'),
membership_end_date: new Date('2022-12-31T00:00:00Z'),
},
];
const PayrollsData = [
{
// type code here for "relation_one" field
amount: 2000,
pay_date: new Date('2023-04-30T00:00:00Z'),
},
{
// type code here for "relation_one" field
amount: 1800,
pay_date: new Date('2023-04-30T00:00:00Z'),
},
{
// type code here for "relation_one" field
amount: 2200,
pay_date: new Date('2023-04-30T00:00:00Z'),
},
{
// type code here for "relation_one" field
amount: 1900,
pay_date: new Date('2023-04-30T00:00:00Z'),
},
];
const PopupsData = [
{
title: 'Welcome Offer',
content: 'Get 20% off on your first month!',
start_date: new Date('2023-04-01T00:00:00Z'),
end_date: new Date('2023-04-30T00:00:00Z'),
target_role: 'FrontDeskStaff',
},
{
title: 'New Class Alert',
content: 'Join our new yoga class every Monday!',
start_date: new Date('2023-04-05T00:00:00Z'),
end_date: new Date('2023-04-12T00:00:00Z'),
target_role: 'FrontDeskStaff',
},
{
title: 'Maintenance Notice',
content: 'The gym will be closed for maintenance on April 10th.',
start_date: new Date('2023-04-08T00:00:00Z'),
end_date: new Date('2023-04-10T00:00:00Z'),
target_role: 'Member',
},
{
title: 'Special Event',
content: 'Join us for a special fitness event on April 20th.',
start_date: new Date('2023-04-15T00:00:00Z'),
end_date: new Date('2023-04-20T00:00:00Z'),
target_role: 'Administrator',
},
];
const PosTransactionsData = [
{
amount: 50,
transaction_date: new Date('2023-04-01T12:00:00Z'),
// type code here for "relation_one" field
payment_method: 'CreditCard',
},
{
amount: 30,
transaction_date: new Date('2023-04-02T15:30:00Z'),
// type code here for "relation_one" field
payment_method: 'PayPal',
},
{
amount: 75,
transaction_date: new Date('2023-04-03T10:45:00Z'),
// type code here for "relation_one" field
payment_method: 'CreditCard',
},
{
amount: 20,
transaction_date: new Date('2023-04-04T09:15:00Z'),
// type code here for "relation_one" field
payment_method: 'Cash',
},
];
const SpaSessionsData = [
{
service_name: 'Full Body Massage',
session_start: new Date('2023-05-01T10:00:00Z'),
session_end: new Date('2023-05-01T11:00:00Z'),
// type code here for "relation_one" field
vip_status: 'VIP',
},
{
service_name: 'Facial Treatment',
session_start: new Date('2023-05-02T14:00:00Z'),
session_end: new Date('2023-05-02T15:00:00Z'),
// type code here for "relation_one" field
vip_status: 'Regular',
},
{
service_name: 'Hot Stone Therapy',
session_start: new Date('2023-05-03T09:00:00Z'),
session_end: new Date('2023-05-03T10:00:00Z'),
// type code here for "relation_one" field
vip_status: 'Regular',
},
{
service_name: 'Aromatherapy',
session_start: new Date('2023-05-04T13:00:00Z'),
session_end: new Date('2023-05-04T14:00:00Z'),
// type code here for "relation_one" field
vip_status: 'VIP',
},
];
// Similar logic for "relation_many"
async function associateAttendanceRecordWithMember() {
const relatedMember0 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const AttendanceRecord0 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (AttendanceRecord0?.setMember) {
await AttendanceRecord0.setMember(relatedMember0);
}
const relatedMember1 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const AttendanceRecord1 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (AttendanceRecord1?.setMember) {
await AttendanceRecord1.setMember(relatedMember1);
}
const relatedMember2 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const AttendanceRecord2 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (AttendanceRecord2?.setMember) {
await AttendanceRecord2.setMember(relatedMember2);
}
const relatedMember3 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const AttendanceRecord3 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (AttendanceRecord3?.setMember) {
await AttendanceRecord3.setMember(relatedMember3);
}
}
async function associateAttendanceRecordWithStaff() {
const relatedStaff0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const AttendanceRecord0 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (AttendanceRecord0?.setStaff) {
await AttendanceRecord0.setStaff(relatedStaff0);
}
const relatedStaff1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const AttendanceRecord1 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (AttendanceRecord1?.setStaff) {
await AttendanceRecord1.setStaff(relatedStaff1);
}
const relatedStaff2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const AttendanceRecord2 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (AttendanceRecord2?.setStaff) {
await AttendanceRecord2.setStaff(relatedStaff2);
}
const relatedStaff3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const AttendanceRecord3 = await AttendanceRecords.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (AttendanceRecord3?.setStaff) {
await AttendanceRecord3.setStaff(relatedStaff3);
}
}
async function associateLockerWithAssigned_member() {
const relatedAssigned_member0 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const Locker0 = await Lockers.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Locker0?.setAssigned_member) {
await Locker0.setAssigned_member(relatedAssigned_member0);
}
const relatedAssigned_member1 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const Locker1 = await Lockers.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Locker1?.setAssigned_member) {
await Locker1.setAssigned_member(relatedAssigned_member1);
}
const relatedAssigned_member2 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const Locker2 = await Lockers.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Locker2?.setAssigned_member) {
await Locker2.setAssigned_member(relatedAssigned_member2);
}
const relatedAssigned_member3 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const Locker3 = await Lockers.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Locker3?.setAssigned_member) {
await Locker3.setAssigned_member(relatedAssigned_member3);
}
}
async function associateMemberWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Member0 = await Members.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Member0?.setUser) {
await Member0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Member1 = await Members.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Member1?.setUser) {
await Member1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Member2 = await Members.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Member2?.setUser) {
await Member2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Member3 = await Members.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Member3?.setUser) {
await Member3.setUser(relatedUser3);
}
}
async function associatePayrollWithStaff() {
const relatedStaff0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payroll0 = await Payrolls.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Payroll0?.setStaff) {
await Payroll0.setStaff(relatedStaff0);
}
const relatedStaff1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payroll1 = await Payrolls.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Payroll1?.setStaff) {
await Payroll1.setStaff(relatedStaff1);
}
const relatedStaff2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payroll2 = await Payrolls.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Payroll2?.setStaff) {
await Payroll2.setStaff(relatedStaff2);
}
const relatedStaff3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payroll3 = await Payrolls.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Payroll3?.setStaff) {
await Payroll3.setStaff(relatedStaff3);
}
}
async function associatePosTransactionWithMember() {
const relatedMember0 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const PosTransaction0 = await PosTransactions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (PosTransaction0?.setMember) {
await PosTransaction0.setMember(relatedMember0);
}
const relatedMember1 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const PosTransaction1 = await PosTransactions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (PosTransaction1?.setMember) {
await PosTransaction1.setMember(relatedMember1);
}
const relatedMember2 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const PosTransaction2 = await PosTransactions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (PosTransaction2?.setMember) {
await PosTransaction2.setMember(relatedMember2);
}
const relatedMember3 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const PosTransaction3 = await PosTransactions.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (PosTransaction3?.setMember) {
await PosTransaction3.setMember(relatedMember3);
}
}
async function associateSpaSessionWithMember() {
const relatedMember0 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const SpaSession0 = await SpaSessions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (SpaSession0?.setMember) {
await SpaSession0.setMember(relatedMember0);
}
const relatedMember1 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const SpaSession1 = await SpaSessions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (SpaSession1?.setMember) {
await SpaSession1.setMember(relatedMember1);
}
const relatedMember2 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const SpaSession2 = await SpaSessions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (SpaSession2?.setMember) {
await SpaSession2.setMember(relatedMember2);
}
const relatedMember3 = await Members.findOne({
offset: Math.floor(Math.random() * (await Members.count())),
});
const SpaSession3 = await SpaSessions.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (SpaSession3?.setMember) {
await SpaSession3.setMember(relatedMember3);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await AttendanceRecords.bulkCreate(AttendanceRecordsData);
await CustomFields.bulkCreate(CustomFieldsData);
await Equipment.bulkCreate(EquipmentData);
await Lockers.bulkCreate(LockersData);
await Members.bulkCreate(MembersData);
await Payrolls.bulkCreate(PayrollsData);
await Popups.bulkCreate(PopupsData);
await PosTransactions.bulkCreate(PosTransactionsData);
await SpaSessions.bulkCreate(SpaSessionsData);
await Promise.all([
// Similar logic for "relation_many"
await associateAttendanceRecordWithMember(),
await associateAttendanceRecordWithStaff(),
await associateLockerWithAssigned_member(),
await associateMemberWithUser(),
await associatePayrollWithStaff(),
await associatePosTransactionWithMember(),
await associateSpaSessionWithMember(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('attendance_records', null, {});
await queryInterface.bulkDelete('custom_fields', null, {});
await queryInterface.bulkDelete('equipment', null, {});
await queryInterface.bulkDelete('lockers', null, {});
await queryInterface.bulkDelete('members', null, {});
await queryInterface.bulkDelete('payrolls', null, {});
await queryInterface.bulkDelete('popups', null, {});
await queryInterface.bulkDelete('pos_transactions', null, {});
await queryInterface.bulkDelete('spa_sessions', null, {});
},
};