Files
alrahma_sunday_school_api/apps/api/dist/modules/auth/auth.company.repo.js
T
2026-06-11 03:22:12 -04:00

102 lines
3.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.findCompanyBySlug = findCompanyBySlug;
exports.findCompanyByEmail = findCompanyByEmail;
exports.findEmployeeByEmail = findEmployeeByEmail;
exports.createCompanySignup = createCompanySignup;
const prisma_1 = require("../../lib/prisma");
function findCompanyBySlug(slug) {
return prisma_1.prisma.company.findUnique({ where: { slug } });
}
function findCompanyByEmail(email) {
return prisma_1.prisma.company.findUnique({ where: { email } });
}
function findEmployeeByEmail(email) {
return prisma_1.prisma.employee.findFirst({ where: { email } });
}
async function createCompanySignup(db, input) {
const company = await db.company.create({
data: {
name: input.companyName,
slug: input.slug,
email: input.companyEmail,
phone: input.companyPhone,
address: {
streetAddress: input.streetAddress,
city: input.city,
country: input.country,
zipCode: input.zipCode,
legalName: input.legalName,
legalForm: input.legalForm,
companyEmail: input.companyEmail,
managerName: input.managerName,
iceNumber: input.iceNumber,
operatingLicenseNumber: input.operatingLicenseNumber,
operatingLicenseIssuedAt: input.operatingLicenseIssuedAt,
operatingLicenseIssuedBy: input.operatingLicenseIssuedBy,
fax: input.fax || null,
yearsActive: input.yearsActive,
representativeName: input.representativeName || null,
representativeTitle: input.representativeTitle || null,
responsibleName: input.responsibleName,
responsibleRole: input.responsibleRole,
responsibleIdentityNumber: input.responsibleIdentityNumber,
responsibleQualification: input.responsibleQualification || null,
responsiblePhone: input.responsiblePhone,
responsibleEmail: input.responsibleEmail,
},
status: 'TRIALING',
},
});
await db.brandSettings.create({
data: {
companyId: company.id,
displayName: input.companyName,
subdomain: input.slug,
publicEmail: input.companyEmail,
publicPhone: input.companyPhone,
publicAddress: input.streetAddress,
publicCity: input.city,
publicCountry: input.country,
defaultLocale: input.preferredLanguage,
defaultCurrency: input.currency,
},
});
await db.contractSettings.create({
data: {
companyId: company.id,
legalName: input.legalName,
registrationNumber: input.registrationNumber,
taxId: input.taxId,
},
});
await db.subscription.create({
data: {
companyId: company.id,
plan: input.plan,
billingPeriod: input.billingPeriod,
currency: input.currency,
status: 'TRIALING',
trialStartAt: input.now,
trialEndAt: input.trialEndAt,
currentPeriodStart: input.now,
currentPeriodEnd: input.trialEndAt,
},
});
const employee = await db.employee.create({
data: {
companyId: company.id,
clerkUserId: `local_owner_${company.id}`,
firstName: input.firstName,
lastName: input.lastName,
email: input.ownerEmail,
phone: input.companyPhone,
passwordHash: input.passwordHash,
role: 'OWNER',
preferredLanguage: input.preferredLanguage,
isActive: true,
},
});
return { company, employee };
}
//# sourceMappingURL=auth.company.repo.js.map