@eeplatform/basic-edu 1.3.10 → 1.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1844,7 +1844,7 @@ var addressSchema = import_joi3.default.object({
1844
1844
  sitio: import_joi3.default.string().optional().allow("", null),
1845
1845
  barangay: import_joi3.default.string().required(),
1846
1846
  municipalityCity: import_joi3.default.string().required(),
1847
- province: import_joi3.default.string().required(),
1847
+ province: import_joi3.default.string().optional().allow("", null),
1848
1848
  country: import_joi3.default.string().optional().allow("", null),
1849
1849
  zipCode: import_joi3.default.string().optional().allow("", null)
1850
1850
  });
@@ -1855,93 +1855,98 @@ var personContactSchema = import_joi3.default.object({
1855
1855
  contactNumber: import_joi3.default.string().optional().allow("", null)
1856
1856
  });
1857
1857
  var learnerInfoSchema = import_joi3.default.object({
1858
+ psaBirthCertificateNo: import_joi3.default.string().optional().allow("", null),
1858
1859
  lrn: import_joi3.default.string().optional().allow("", null),
1859
1860
  lastName: import_joi3.default.string().required(),
1860
1861
  firstName: import_joi3.default.string().required(),
1861
1862
  middleName: import_joi3.default.string().optional().allow("", null),
1862
1863
  extensionName: import_joi3.default.string().optional().allow("", null),
1863
- birthDate: import_joi3.default.string().isoDate().required(),
1864
- sex: import_joi3.default.string().valid("Male", "Female").required(),
1864
+ birthDate: import_joi3.default.string().required(),
1865
+ sex: import_joi3.default.string().required(),
1866
+ // Changed to accept any string to match frontend
1865
1867
  age: import_joi3.default.number().integer().min(0).max(150).required(),
1866
- placeOfBirth: import_joi3.default.object({
1867
- municipalityCity: import_joi3.default.string().required(),
1868
- province: import_joi3.default.string().optional().allow("", null),
1869
- country: import_joi3.default.string().optional().allow("", null)
1870
- }).optional(),
1868
+ placeOfBirth: import_joi3.default.string().required(),
1869
+ // Made required to match frontend
1871
1870
  motherTongue: import_joi3.default.string().optional().allow("", null),
1872
- hasDisability: import_joi3.default.boolean().required(),
1873
- disabilityTypes: import_joi3.default.array().items(
1874
- import_joi3.default.string().valid(
1875
- "Visual Impairment",
1876
- "Visual Impairment(Blind)",
1877
- "Visual Impairment(Low Vision)",
1878
- "Hearing Impairment",
1879
- "Learning Disability",
1880
- "Intellectual Disability",
1881
- "Autism Spectrum Disorder",
1882
- "Emotional-Behavioral Disorder",
1883
- "Orthopedic/Physical Handicap",
1884
- "Speech/Language Disorder",
1885
- "Cerebral Palsy",
1886
- "Special Health Problem/Chronic Disease",
1887
- "Multiple Disorder",
1888
- "Cancer"
1889
- )
1890
- ).optional(),
1891
- otherDisabilityDetails: import_joi3.default.string().optional().allow("", null),
1892
- isIndigenous: import_joi3.default.boolean().optional(),
1871
+ fourPsHouseholdId: import_joi3.default.string().optional().allow("", null),
1893
1872
  indigenousCommunity: import_joi3.default.string().optional().allow("", null),
1894
- is4PsBeneficiary: import_joi3.default.boolean().optional(),
1895
- fourPsHouseholdId: import_joi3.default.string().optional().allow("", null)
1873
+ withDisability: import_joi3.default.boolean().required(),
1874
+ // Added to match frontend
1875
+ disabilities: import_joi3.default.array().items(import_joi3.default.string()).optional(),
1876
+ // Changed from disabilityTypes to disabilities
1877
+ otherDisabilityDetails: import_joi3.default.string().optional().allow("", null)
1896
1878
  });
1879
+ var gradeLevels = [
1880
+ "K1",
1881
+ "K2",
1882
+ "grade-1",
1883
+ "grade-2",
1884
+ "grade-3",
1885
+ "grade-4",
1886
+ "grade-5",
1887
+ "grade-6",
1888
+ "grade-7",
1889
+ "grade-8",
1890
+ "grade-9",
1891
+ "grade-10",
1892
+ "grade-11",
1893
+ "grade-12"
1894
+ ];
1897
1895
  var schemaEnrollment = import_joi3.default.object({
1898
- _id: import_joi3.default.string().hex().optional(),
1899
- region: import_joi3.default.string().hex().required(),
1900
- sdo: import_joi3.default.string().hex().required(),
1901
- school: import_joi3.default.string().hex().required(),
1896
+ _id: import_joi3.default.string().optional(),
1897
+ region: import_joi3.default.string().required(),
1898
+ // Changed from hex to string to match frontend
1899
+ regionName: import_joi3.default.string().optional().allow("", null),
1900
+ province: import_joi3.default.string().optional().allow("", null),
1901
+ // Made required to match frontend
1902
+ cityMunicipality: import_joi3.default.string().required(),
1903
+ // Made required to match frontend
1904
+ division: import_joi3.default.string().required(),
1905
+ // Changed from hex to string to match frontend
1906
+ divisionName: import_joi3.default.string().optional().allow("", null),
1907
+ school: import_joi3.default.string().required(),
1908
+ // Changed from hex to string to match frontend
1909
+ schoolName: import_joi3.default.string().optional().allow("", null),
1910
+ // Added to match frontend
1902
1911
  schoolYear: import_joi3.default.string().required(),
1903
- gradeLevelToEnroll: import_joi3.default.string().required(),
1912
+ gradeLevel: import_joi3.default.string().valid(...gradeLevels).required(),
1913
+ returningLearner: import_joi3.default.boolean().required(),
1914
+ // Added to match frontend
1904
1915
  learnerInfo: learnerInfoSchema.required(),
1905
1916
  parentGuardianInfo: import_joi3.default.object({
1906
- father: personContactSchema.optional(),
1907
- mother: personContactSchema.optional(),
1908
- legalGuardian: personContactSchema.optional()
1917
+ father: personContactSchema.required(),
1918
+ // Made required to match frontend
1919
+ mother: personContactSchema.required(),
1920
+ // Made required to match frontend
1921
+ legalGuardian: personContactSchema.required()
1922
+ // Made required to match frontend
1909
1923
  }).required(),
1910
- addressInfo: import_joi3.default.object({
1911
- currentAddress: addressSchema.required(),
1912
- permanentAddress: addressSchema.optional(),
1924
+ address: import_joi3.default.object({
1925
+ // Changed from addressInfo to address
1926
+ current: addressSchema.required(),
1927
+ // Changed from currentAddress to current
1928
+ permanent: addressSchema.required(),
1929
+ // Changed from permanentAddress to permanent and made required
1913
1930
  sameAsCurrent: import_joi3.default.boolean().optional()
1914
1931
  }).required(),
1915
1932
  returningLearnerInfo: import_joi3.default.object({
1916
- lastGradeLevelCompleted: import_joi3.default.string().required(),
1917
- lastSchoolYearCompleted: import_joi3.default.string().required(),
1918
- lastSchoolAttended: import_joi3.default.string().required(),
1919
- lastSchoolId: import_joi3.default.string().optional().allow("", null),
1920
- isReturningLearner: import_joi3.default.boolean().required(),
1921
- isTransferIn: import_joi3.default.boolean().required()
1933
+ lastGradeLevelCompleted: import_joi3.default.string().optional().allow("", null),
1934
+ lastSchoolYearCompleted: import_joi3.default.string().optional().allow("", null),
1935
+ lastSchoolAttended: import_joi3.default.string().optional().allow("", null),
1936
+ lastSchoolId: import_joi3.default.string().optional().allow("", null)
1922
1937
  }).optional(),
1923
1938
  seniorHighInfo: import_joi3.default.object({
1924
- semester: import_joi3.default.string().valid("1st", "2nd").required(),
1925
- track: import_joi3.default.string().required(),
1926
- strand: import_joi3.default.string().required()
1939
+ semester: import_joi3.default.string().optional().allow("", null),
1940
+ track: import_joi3.default.string().optional().allow("", null),
1941
+ strand: import_joi3.default.string().optional().allow("", null)
1927
1942
  }).optional(),
1928
- preferredLearningModalities: import_joi3.default.array().items(
1929
- import_joi3.default.string().valid(
1930
- "Modular (Print)",
1931
- "Modular (Digital)",
1932
- "Online",
1933
- "Radio-Based Instruction",
1934
- "Educational Television",
1935
- "Blended",
1936
- "Homeschooling"
1937
- )
1938
- ).optional(),
1939
- certification: import_joi3.default.object({
1940
- certifiedBy: import_joi3.default.string().required(),
1941
- date: import_joi3.default.string().isoDate().required(),
1942
- consentGiven: import_joi3.default.boolean().required()
1943
- }).required(),
1943
+ alternativeLearningOptions: import_joi3.default.array().items(import_joi3.default.string()).optional(),
1944
+ // Added to match frontend
1945
+ isCertifiedAndConsented: import_joi3.default.boolean().required(),
1946
+ // Simplified certification to match frontend
1944
1947
  status: import_joi3.default.string().optional().allow("", null),
1948
+ remarks: import_joi3.default.string().optional().allow("", null),
1949
+ // Added to match frontend
1945
1950
  rejectionReason: import_joi3.default.string().optional().allow("", null),
1946
1951
  createdAt: import_joi3.default.date().optional().allow("", null),
1947
1952
  updatedAt: import_joi3.default.date().optional().allow("", null),
@@ -1963,42 +1968,34 @@ function MEnrollment(value) {
1963
1968
  throw new import_nodejs_utils4.BadRequestError("Invalid _id format");
1964
1969
  }
1965
1970
  }
1966
- if (typeof value.region === "string") {
1967
- try {
1968
- value.region = new import_mongodb3.ObjectId(value.region);
1969
- } catch (error2) {
1970
- throw new import_nodejs_utils4.BadRequestError("Invalid region format");
1971
- }
1972
- }
1973
- if (typeof value.sdo === "string") {
1974
- try {
1975
- value.sdo = new import_mongodb3.ObjectId(value.sdo);
1976
- } catch (error2) {
1977
- throw new import_nodejs_utils4.BadRequestError("Invalid sdo format");
1978
- }
1979
- }
1980
- if (typeof value.school === "string") {
1981
- try {
1982
- value.school = new import_mongodb3.ObjectId(value.school);
1983
- } catch (error2) {
1984
- throw new import_nodejs_utils4.BadRequestError("Invalid school format");
1985
- }
1986
- }
1987
1971
  return {
1988
1972
  _id: value._id ?? void 0,
1989
1973
  region: value.region,
1990
- sdo: value.sdo,
1974
+ regionName: value.regionName ?? "",
1975
+ province: value.province ?? "",
1976
+ cityMunicipality: value.cityMunicipality ?? "",
1977
+ division: value.division,
1978
+ divisionName: value.divisionName ?? "",
1991
1979
  school: value.school,
1980
+ schoolName: value.schoolName ?? "",
1981
+ // Added to match frontend
1992
1982
  schoolYear: value.schoolYear ?? "",
1993
- gradeLevelToEnroll: value.gradeLevelToEnroll ?? "",
1983
+ gradeLevel: value.gradeLevel ?? "",
1984
+ returningLearner: value.returningLearner ?? false,
1985
+ // Added to match frontend
1994
1986
  learnerInfo: value.learnerInfo,
1995
1987
  parentGuardianInfo: value.parentGuardianInfo,
1996
- addressInfo: value.addressInfo,
1988
+ address: value.address,
1989
+ // Changed from addressInfo to address
1997
1990
  returningLearnerInfo: value.returningLearnerInfo,
1998
1991
  seniorHighInfo: value.seniorHighInfo,
1999
- preferredLearningModalities: value.preferredLearningModalities ?? [],
2000
- certification: value.certification,
2001
- status: value.status ?? "active",
1992
+ alternativeLearningOptions: value.alternativeLearningOptions ?? [],
1993
+ // Added to match frontend
1994
+ isCertifiedAndConsented: value.isCertifiedAndConsented ?? true,
1995
+ // Simplified certification
1996
+ status: value.status ?? "pending",
1997
+ remarks: value.remarks ?? "",
1998
+ // Added to match frontend
2002
1999
  rejectionReason: value.rejectionReason ?? "",
2003
2000
  createdAt: value.createdAt ?? /* @__PURE__ */ new Date(),
2004
2001
  updatedAt: value.updatedAt ?? "",
@@ -2012,28 +2009,18 @@ function MEnrollment(value) {
2012
2009
  // src/resources/enrollment/enrollment.repository.ts
2013
2010
  var import_nodejs_utils5 = require("@eeplatform/nodejs-utils");
2014
2011
  var import_mongodb4 = require("mongodb");
2012
+ var import_joi4 = __toESM(require("joi"));
2015
2013
  function useEnrollmentRepo() {
2016
2014
  const db = import_nodejs_utils5.useAtlas.getDb();
2017
2015
  if (!db) {
2018
2016
  throw new Error("Unable to connect to server.");
2019
2017
  }
2020
- const namespace_collection = "school.enrollments";
2018
+ const namespace_collection = "deped.school.enrollments";
2021
2019
  const collection = db.collection(namespace_collection);
2022
2020
  const { getCache, setCache, delNamespace } = (0, import_nodejs_utils5.useCache)(namespace_collection);
2023
2021
  async function createIndexes() {
2024
2022
  try {
2025
2023
  await collection.createIndexes([
2026
- {
2027
- key: {
2028
- school: 1,
2029
- schoolYear: 1,
2030
- "learnerInfo.lrn": 1,
2031
- status: 1
2032
- },
2033
- unique: true,
2034
- partialFilterExpression: { status: "active" },
2035
- name: "unique_enrollment_index"
2036
- },
2037
2024
  { key: { status: 1 } },
2038
2025
  { key: { school: 1, status: 1 } },
2039
2026
  { key: { "learnerInfo.lrn": 1 } },
@@ -2122,11 +2109,7 @@ function useEnrollmentRepo() {
2122
2109
  status
2123
2110
  };
2124
2111
  if (school) {
2125
- try {
2126
- query.school = new import_mongodb4.ObjectId(school);
2127
- } catch (error) {
2128
- throw new import_nodejs_utils5.BadRequestError("Invalid school ID format.");
2129
- }
2112
+ query.school = school;
2130
2113
  }
2131
2114
  if (schoolYear) {
2132
2115
  query.schoolYear = schoolYear;
@@ -2180,6 +2163,7 @@ function useEnrollmentRepo() {
2180
2163
  from: "admin.schools",
2181
2164
  localField: "school",
2182
2165
  foreignField: "_id",
2166
+ // School collection still uses ObjectId, we'll need to convert during lookup
2183
2167
  as: "schoolInfo"
2184
2168
  }
2185
2169
  },
@@ -2188,15 +2172,19 @@ function useEnrollmentRepo() {
2188
2172
  from: "admin.regions",
2189
2173
  localField: "region",
2190
2174
  foreignField: "_id",
2175
+ // Region collection still uses ObjectId, we'll need to convert during lookup
2191
2176
  as: "regionInfo"
2192
2177
  }
2193
2178
  },
2194
2179
  {
2195
2180
  $lookup: {
2196
2181
  from: "admin.divisions",
2197
- localField: "sdo",
2182
+ localField: "division",
2183
+ // Changed from sdo to division to match frontend
2198
2184
  foreignField: "_id",
2199
- as: "sdoInfo"
2185
+ // Division collection still uses ObjectId, we'll need to convert during lookup
2186
+ as: "divisionInfo"
2187
+ // Changed from sdoInfo to divisionInfo
2200
2188
  }
2201
2189
  },
2202
2190
  { $sort: sort },
@@ -2265,7 +2253,7 @@ function useEnrollmentRepo() {
2265
2253
  async function getByLrn(lrn, schoolYear) {
2266
2254
  const query = {
2267
2255
  "learnerInfo.lrn": lrn,
2268
- status: "active"
2256
+ status: "accepted"
2269
2257
  };
2270
2258
  if (schoolYear) {
2271
2259
  query.schoolYear = schoolYear;
@@ -2335,12 +2323,8 @@ function useEnrollmentRepo() {
2335
2323
  }
2336
2324
  }
2337
2325
  async function getBySchoolAndYear(school, schoolYear) {
2338
- try {
2339
- if (typeof school === "string") {
2340
- school = new import_mongodb4.ObjectId(school);
2341
- }
2342
- } catch (error) {
2343
- throw new import_nodejs_utils5.BadRequestError("Invalid school ID format.");
2326
+ if (typeof school === "object") {
2327
+ school = school.toString();
2344
2328
  }
2345
2329
  const query = {
2346
2330
  school,
@@ -2380,6 +2364,110 @@ function useEnrollmentRepo() {
2380
2364
  );
2381
2365
  }
2382
2366
  }
2367
+ async function getByApplicantInfo({
2368
+ school = "",
2369
+ schoolYear = "",
2370
+ gradeLevel = "",
2371
+ firstName = "",
2372
+ lastName = "",
2373
+ middleName = "",
2374
+ birthDate = "",
2375
+ placeOfBirth = ""
2376
+ } = {}) {
2377
+ const validation = import_joi4.default.object({
2378
+ school: import_joi4.default.string().required(),
2379
+ schoolYear: import_joi4.default.string().required(),
2380
+ gradeLevel: import_joi4.default.string().required(),
2381
+ firstName: import_joi4.default.string().required(),
2382
+ lastName: import_joi4.default.string().required(),
2383
+ middleName: import_joi4.default.string().optional().allow("", null),
2384
+ birthDate: import_joi4.default.string().required(),
2385
+ placeOfBirth: import_joi4.default.string().required()
2386
+ });
2387
+ const { error } = validation.validate({
2388
+ school,
2389
+ schoolYear,
2390
+ gradeLevel,
2391
+ firstName,
2392
+ lastName,
2393
+ middleName,
2394
+ birthDate,
2395
+ placeOfBirth
2396
+ });
2397
+ if (error) {
2398
+ throw new import_nodejs_utils5.BadRequestError(`Validation error: ${error.message}`);
2399
+ }
2400
+ const query = {
2401
+ school,
2402
+ schoolYear,
2403
+ gradeLevel,
2404
+ "learnerInfo.firstName": {
2405
+ $regex: `^${firstName}$`,
2406
+ $options: "i"
2407
+ },
2408
+ "learnerInfo.lastName": {
2409
+ $regex: `^${lastName}$`,
2410
+ $options: "i"
2411
+ },
2412
+ "learnerInfo.birthDate": birthDate,
2413
+ "learnerInfo.placeOfBirth": {
2414
+ $regex: `^${placeOfBirth}$`,
2415
+ $options: "i"
2416
+ }
2417
+ };
2418
+ const cacheKeyOptions = {
2419
+ school,
2420
+ schoolYear,
2421
+ gradeLevel,
2422
+ firstName,
2423
+ lastName,
2424
+ birthDate,
2425
+ placeOfBirth
2426
+ };
2427
+ if (middleName && middleName.trim() !== "") {
2428
+ query["learnerInfo.middleName"] = {
2429
+ $regex: `^${middleName}$`,
2430
+ $options: "i"
2431
+ };
2432
+ cacheKeyOptions.middleName = middleName;
2433
+ }
2434
+ const cacheKey = (0, import_nodejs_utils5.makeCacheKey)(namespace_collection, cacheKeyOptions);
2435
+ const cachedData = await getCache(cacheKey);
2436
+ if (cachedData) {
2437
+ import_nodejs_utils5.logger.log({
2438
+ level: "info",
2439
+ message: `Cache hit for enrollment by applicant info: ${cacheKey}`
2440
+ });
2441
+ return cachedData;
2442
+ }
2443
+ try {
2444
+ const data = await collection.findOne({
2445
+ ...query,
2446
+ status: "accepted"
2447
+ });
2448
+ const length = await collection.countDocuments({
2449
+ ...query,
2450
+ status: { $nin: ["accepted", "deleted"] }
2451
+ });
2452
+ const result = { accepted: data ? true : false, length };
2453
+ setCache(cacheKey, result, 600).then(() => {
2454
+ import_nodejs_utils5.logger.log({
2455
+ level: "info",
2456
+ message: `Cache set for enrollment by applicant info: ${cacheKey}`
2457
+ });
2458
+ }).catch((err) => {
2459
+ import_nodejs_utils5.logger.log({
2460
+ level: "error",
2461
+ message: `Failed to set cache for enrollment by applicant info: ${err.message}`
2462
+ });
2463
+ });
2464
+ return result;
2465
+ } catch (error2) {
2466
+ throw new import_nodejs_utils5.InternalServerError(
2467
+ "Failed to get enrollment by applicant info."
2468
+ );
2469
+ }
2470
+ }
2383
2471
  return {
2384
2472
  createIndexes,
2385
2473
  add,
@@ -2388,6 +2476,7 @@ function useEnrollmentRepo() {
2388
2476
  getById,
2389
2477
  getByLrn,
2390
2478
  deleteById,
2479
+ getByApplicantInfo,
2391
2480
  getBySchoolAndYear
2392
2481
  };
2393
2482
  }
@@ -2402,39 +2491,52 @@ function useEnrollmentService() {
2402
2491
  getById: _getById,
2403
2492
  getByLrn: _getByLrn,
2404
2493
  deleteById: _deleteById,
2405
- getBySchoolAndYear: _getBySchoolAndYear
2494
+ getBySchoolAndYear: _getBySchoolAndYear,
2495
+ getByApplicantInfo: _getByApplicantInfo
2406
2496
  } = useEnrollmentRepo();
2407
2497
  async function createEnrollment(value) {
2408
2498
  try {
2409
- if (value.learnerInfo.lrn) {
2410
- const existingEnrollment = await _getByLrn(
2411
- value.learnerInfo.lrn,
2412
- value.schoolYear
2499
+ const applicantInfo = await _getByApplicantInfo({
2500
+ firstName: value.learnerInfo.firstName,
2501
+ lastName: value.learnerInfo.lastName,
2502
+ middleName: value.learnerInfo.middleName,
2503
+ birthDate: value.learnerInfo.birthDate,
2504
+ placeOfBirth: value.learnerInfo.placeOfBirth,
2505
+ gradeLevel: value.gradeLevel,
2506
+ schoolYear: value.schoolYear,
2507
+ school: value.school
2508
+ });
2509
+ if (applicantInfo.accepted) {
2510
+ throw new import_nodejs_utils6.BadRequestError(
2511
+ "This applicant already has an accepted application for the same school year and grade level."
2413
2512
  );
2414
- if (existingEnrollment) {
2415
- throw new import_nodejs_utils6.BadRequestError(
2416
- "Learner is already enrolled for this school year."
2417
- );
2418
- }
2419
2513
  }
2420
- const gradeLevel = value.gradeLevelToEnroll.toLowerCase();
2514
+ if (applicantInfo.length >= 3) {
2515
+ throw new import_nodejs_utils6.BadRequestError(
2516
+ "This applicant has already submitted applications to 3 schools for the same school year and grade level. Maximum limit reached."
2517
+ );
2518
+ }
2519
+ const gradeLevel = value.gradeLevel.toLowerCase();
2421
2520
  const age = value.learnerInfo.age;
2422
- if (gradeLevel.includes("kindergarten") && age < 5) {
2521
+ if (["K1", "K2"].includes(gradeLevel) && age < 5) {
2423
2522
  throw new import_nodejs_utils6.BadRequestError("Learner is too young for Kindergarten.");
2424
2523
  }
2425
- if (gradeLevel.includes("grade 1") && age < 6) {
2524
+ if (gradeLevel === "grade-1" && age < 6) {
2426
2525
  throw new import_nodejs_utils6.BadRequestError("Learner is too young for Grade 1.");
2427
2526
  }
2428
2527
  const { father, mother, legalGuardian } = value.parentGuardianInfo;
2429
- if (!father && !mother && !legalGuardian) {
2528
+ const hasFatherInfo = father && (father.firstName || father.lastName);
2529
+ const hasMotherInfo = mother && (mother.firstName || mother.lastName);
2530
+ const hasGuardianInfo = legalGuardian && (legalGuardian.firstName || legalGuardian.lastName);
2531
+ if (!hasFatherInfo && !hasMotherInfo && !hasGuardianInfo) {
2430
2532
  throw new import_nodejs_utils6.BadRequestError(
2431
2533
  "At least one parent or legal guardian information is required."
2432
2534
  );
2433
2535
  }
2434
- if (gradeLevel.includes("grade 11") || gradeLevel.includes("grade 12")) {
2435
- if (!value.seniorHighInfo) {
2536
+ if (gradeLevel.includes("grade-11") || gradeLevel.includes("grade-12")) {
2537
+ if (!value.seniorHighInfo || !value.seniorHighInfo.track || !value.seniorHighInfo.strand) {
2436
2538
  throw new import_nodejs_utils6.BadRequestError(
2437
- "Senior high school information is required for Grade 11 and 12."
2539
+ "Senior high school information (track and strand) is required for Grade 11 and 12."
2438
2540
  );
2439
2541
  }
2440
2542
  }
@@ -2668,7 +2770,7 @@ function useEnrollmentService() {
2668
2770
 
2669
2771
  // src/resources/enrollment/enrollment.controller.ts
2670
2772
  var import_nodejs_utils7 = require("@eeplatform/nodejs-utils");
2671
- var import_joi4 = __toESM(require("joi"));
2773
+ var import_joi5 = __toESM(require("joi"));
2672
2774
  function useEnrollmentController() {
2673
2775
  const {
2674
2776
  createEnrollment: _createEnrollment,
@@ -2700,18 +2802,18 @@ function useEnrollmentController() {
2700
2802
  async function updateById(req, res, next) {
2701
2803
  const value = req.body;
2702
2804
  const id = req.params.id ?? "";
2703
- const validation = import_joi4.default.object({
2704
- id: import_joi4.default.string().hex().required(),
2705
- value: import_joi4.default.object({
2706
- learnerInfo: import_joi4.default.object().optional(),
2707
- parentGuardianInfo: import_joi4.default.object().optional(),
2708
- addressInfo: import_joi4.default.object().optional(),
2709
- returningLearnerInfo: import_joi4.default.object().optional(),
2710
- seniorHighInfo: import_joi4.default.object().optional(),
2711
- preferredLearningModalities: import_joi4.default.array().optional(),
2712
- certification: import_joi4.default.object().optional(),
2713
- status: import_joi4.default.string().valid("active", "pending", "approved", "rejected", "deleted").optional(),
2714
- rejectionReason: import_joi4.default.string().optional().allow("", null)
2805
+ const validation = import_joi5.default.object({
2806
+ id: import_joi5.default.string().hex().required(),
2807
+ value: import_joi5.default.object({
2808
+ learnerInfo: import_joi5.default.object().optional(),
2809
+ parentGuardianInfo: import_joi5.default.object().optional(),
2810
+ addressInfo: import_joi5.default.object().optional(),
2811
+ returningLearnerInfo: import_joi5.default.object().optional(),
2812
+ seniorHighInfo: import_joi5.default.object().optional(),
2813
+ preferredLearningModalities: import_joi5.default.array().optional(),
2814
+ certification: import_joi5.default.object().optional(),
2815
+ status: import_joi5.default.string().valid("active", "pending", "approved", "rejected", "deleted").optional(),
2816
+ rejectionReason: import_joi5.default.string().optional().allow("", null)
2715
2817
  }).min(1)
2716
2818
  });
2717
2819
  const { error } = validation.validate({ id, value });
@@ -2730,14 +2832,14 @@ function useEnrollmentController() {
2730
2832
  }
2731
2833
  async function getAll(req, res, next) {
2732
2834
  const query = req.query;
2733
- const validation = import_joi4.default.object({
2734
- page: import_joi4.default.number().min(1).optional().allow("", null),
2735
- limit: import_joi4.default.number().min(1).max(100).optional().allow("", null),
2736
- search: import_joi4.default.string().optional().allow("", null),
2737
- status: import_joi4.default.string().optional().allow("", null),
2738
- school: import_joi4.default.string().hex().optional().allow("", null),
2739
- schoolYear: import_joi4.default.string().optional().allow("", null),
2740
- gradeLevelToEnroll: import_joi4.default.string().optional().allow("", null)
2835
+ const validation = import_joi5.default.object({
2836
+ page: import_joi5.default.number().min(1).optional().allow("", null),
2837
+ limit: import_joi5.default.number().min(1).max(100).optional().allow("", null),
2838
+ search: import_joi5.default.string().optional().allow("", null),
2839
+ status: import_joi5.default.string().optional().allow("", null),
2840
+ school: import_joi5.default.string().hex().optional().allow("", null),
2841
+ schoolYear: import_joi5.default.string().optional().allow("", null),
2842
+ gradeLevelToEnroll: import_joi5.default.string().optional().allow("", null)
2741
2843
  });
2742
2844
  const { error } = validation.validate(query);
2743
2845
  if (error) {
@@ -2775,7 +2877,7 @@ function useEnrollmentController() {
2775
2877
  }
2776
2878
  async function getById(req, res, next) {
2777
2879
  const id = req.params.id ?? "";
2778
- const validation = import_joi4.default.string().hex().required();
2880
+ const validation = import_joi5.default.string().hex().required();
2779
2881
  const { error } = validation.validate(id);
2780
2882
  if (error) {
2781
2883
  next(new import_nodejs_utils7.BadRequestError(error.message));
@@ -2792,9 +2894,9 @@ function useEnrollmentController() {
2792
2894
  async function getByLrn(req, res, next) {
2793
2895
  const lrn = req.params.lrn ?? "";
2794
2896
  const schoolYear = req.query.schoolYear;
2795
- const validation = import_joi4.default.object({
2796
- lrn: import_joi4.default.string().required(),
2797
- schoolYear: import_joi4.default.string().optional().allow("", null)
2897
+ const validation = import_joi5.default.object({
2898
+ lrn: import_joi5.default.string().required(),
2899
+ schoolYear: import_joi5.default.string().optional().allow("", null)
2798
2900
  });
2799
2901
  const { error } = validation.validate({ lrn, schoolYear });
2800
2902
  if (error) {
@@ -2812,9 +2914,9 @@ function useEnrollmentController() {
2812
2914
  async function deleteById(req, res, next) {
2813
2915
  const id = req.params.id ?? "";
2814
2916
  const deletedBy = req.body.deletedBy;
2815
- const validation = import_joi4.default.object({
2816
- id: import_joi4.default.string().hex().required(),
2817
- deletedBy: import_joi4.default.string().optional().allow("", null)
2917
+ const validation = import_joi5.default.object({
2918
+ id: import_joi5.default.string().hex().required(),
2919
+ deletedBy: import_joi5.default.string().optional().allow("", null)
2818
2920
  });
2819
2921
  const { error } = validation.validate({ id, deletedBy });
2820
2922
  if (error) {
@@ -2832,9 +2934,9 @@ function useEnrollmentController() {
2832
2934
  async function getBySchoolAndYear(req, res, next) {
2833
2935
  const school = req.params.school ?? "";
2834
2936
  const schoolYear = req.params.schoolYear ?? "";
2835
- const validation = import_joi4.default.object({
2836
- school: import_joi4.default.string().hex().required(),
2837
- schoolYear: import_joi4.default.string().required()
2937
+ const validation = import_joi5.default.object({
2938
+ school: import_joi5.default.string().hex().required(),
2939
+ schoolYear: import_joi5.default.string().required()
2838
2940
  });
2839
2941
  const { error } = validation.validate({ school, schoolYear });
2840
2942
  if (error) {
@@ -2852,9 +2954,9 @@ function useEnrollmentController() {
2852
2954
  async function approve(req, res, next) {
2853
2955
  const id = req.params.id ?? "";
2854
2956
  const approvedBy = req.body.approvedBy;
2855
- const validation = import_joi4.default.object({
2856
- id: import_joi4.default.string().hex().required(),
2857
- approvedBy: import_joi4.default.string().required()
2957
+ const validation = import_joi5.default.object({
2958
+ id: import_joi5.default.string().hex().required(),
2959
+ approvedBy: import_joi5.default.string().required()
2858
2960
  });
2859
2961
  const { error } = validation.validate({ id, approvedBy });
2860
2962
  if (error) {
@@ -2874,10 +2976,10 @@ function useEnrollmentController() {
2874
2976
  const id = req.params.id ?? "";
2875
2977
  const rejectedBy = req.body.rejectedBy;
2876
2978
  const rejectionReason = req.body.rejectionReason;
2877
- const validation = import_joi4.default.object({
2878
- id: import_joi4.default.string().hex().required(),
2879
- rejectedBy: import_joi4.default.string().required(),
2880
- rejectionReason: import_joi4.default.string().optional().allow("", null)
2979
+ const validation = import_joi5.default.object({
2980
+ id: import_joi5.default.string().hex().required(),
2981
+ rejectedBy: import_joi5.default.string().required(),
2982
+ rejectionReason: import_joi5.default.string().optional().allow("", null)
2881
2983
  });
2882
2984
  const { error } = validation.validate({ id, rejectedBy, rejectionReason });
2883
2985
  if (error) {
@@ -2896,9 +2998,9 @@ function useEnrollmentController() {
2896
2998
  async function getStatsBySchool(req, res, next) {
2897
2999
  const school = req.params.school ?? "";
2898
3000
  const schoolYear = req.query.schoolYear;
2899
- const validation = import_joi4.default.object({
2900
- school: import_joi4.default.string().hex().required(),
2901
- schoolYear: import_joi4.default.string().optional().allow("", null)
3001
+ const validation = import_joi5.default.object({
3002
+ school: import_joi5.default.string().hex().required(),
3003
+ schoolYear: import_joi5.default.string().optional().allow("", null)
2902
3004
  });
2903
3005
  const { error } = validation.validate({ school, schoolYear });
2904
3006
  if (error) {
@@ -2965,26 +3067,26 @@ function useEnrollmentController() {
2965
3067
 
2966
3068
  // src/resources/grade-level/grade-level.model.ts
2967
3069
  var import_nodejs_utils8 = require("@eeplatform/nodejs-utils");
2968
- var import_joi5 = __toESM(require("joi"));
3070
+ var import_joi6 = __toESM(require("joi"));
2969
3071
  var import_mongodb5 = require("mongodb");
2970
- var schemaGradeLevel = import_joi5.default.object({
2971
- _id: import_joi5.default.string().hex().optional(),
2972
- school: import_joi5.default.string().hex().optional(),
2973
- educationLevel: import_joi5.default.string().required(),
2974
- gradeLevel: import_joi5.default.string().required(),
2975
- tracks: import_joi5.default.array().items(import_joi5.default.string()).optional(),
2976
- trackStrands: import_joi5.default.array().items(import_joi5.default.string()).optional(),
2977
- teachingStyle: import_joi5.default.string().required(),
2978
- maxNumberOfLearners: import_joi5.default.number().required(),
2979
- defaultStartTime: import_joi5.default.string().optional().allow("", null),
2980
- defaultEndTime: import_joi5.default.string().optional().allow("", null),
2981
- status: import_joi5.default.string().optional().allow("", null),
2982
- createdAt: import_joi5.default.date().optional().allow("", null),
2983
- updatedAt: import_joi5.default.date().optional().allow("", null),
2984
- deletedAt: import_joi5.default.date().optional().allow("", null),
2985
- createdBy: import_joi5.default.string().optional().allow("", null),
2986
- updatedBy: import_joi5.default.string().optional().allow("", null),
2987
- deletedBy: import_joi5.default.string().optional().allow("", null)
3072
+ var schemaGradeLevel = import_joi6.default.object({
3073
+ _id: import_joi6.default.string().hex().optional(),
3074
+ school: import_joi6.default.string().hex().optional(),
3075
+ educationLevel: import_joi6.default.string().required(),
3076
+ gradeLevel: import_joi6.default.string().required(),
3077
+ tracks: import_joi6.default.array().items(import_joi6.default.string()).optional(),
3078
+ trackStrands: import_joi6.default.array().items(import_joi6.default.string()).optional(),
3079
+ teachingStyle: import_joi6.default.string().required(),
3080
+ maxNumberOfLearners: import_joi6.default.number().required(),
3081
+ defaultStartTime: import_joi6.default.string().optional().allow("", null),
3082
+ defaultEndTime: import_joi6.default.string().optional().allow("", null),
3083
+ status: import_joi6.default.string().optional().allow("", null),
3084
+ createdAt: import_joi6.default.date().optional().allow("", null),
3085
+ updatedAt: import_joi6.default.date().optional().allow("", null),
3086
+ deletedAt: import_joi6.default.date().optional().allow("", null),
3087
+ createdBy: import_joi6.default.string().optional().allow("", null),
3088
+ updatedBy: import_joi6.default.string().optional().allow("", null),
3089
+ deletedBy: import_joi6.default.string().optional().allow("", null)
2988
3090
  });
2989
3091
  function MGradeLevel(value) {
2990
3092
  const { error } = schemaGradeLevel.validate(value);
@@ -3387,7 +3489,7 @@ function useGradeLevelRepo() {
3387
3489
 
3388
3490
  // src/resources/grade-level/grade-level.controller.ts
3389
3491
  var import_nodejs_utils10 = require("@eeplatform/nodejs-utils");
3390
- var import_joi6 = __toESM(require("joi"));
3492
+ var import_joi7 = __toESM(require("joi"));
3391
3493
  function useGradeLevelController() {
3392
3494
  const {
3393
3495
  getAll: _getAll,
@@ -3419,17 +3521,17 @@ function useGradeLevelController() {
3419
3521
  async function updateById(req, res, next) {
3420
3522
  const value = req.body;
3421
3523
  const id = req.params.id ?? "";
3422
- const validation = import_joi6.default.object({
3423
- id: import_joi6.default.string().hex().required(),
3424
- value: import_joi6.default.object({
3425
- school: import_joi6.default.string().hex().optional(),
3426
- educationLevel: import_joi6.default.string().optional(),
3427
- gradeLevel: import_joi6.default.string().optional(),
3428
- teachingStyle: import_joi6.default.string().optional(),
3429
- maxTeachingHoursPerDay: import_joi6.default.number().integer().min(0).optional(),
3430
- maxTeachingHoursPerWeek: import_joi6.default.number().integer().min(0).optional(),
3431
- defaultStartTime: import_joi6.default.string().optional().allow("", null),
3432
- defaultEndTime: import_joi6.default.string().optional().allow("", null)
3524
+ const validation = import_joi7.default.object({
3525
+ id: import_joi7.default.string().hex().required(),
3526
+ value: import_joi7.default.object({
3527
+ school: import_joi7.default.string().hex().optional(),
3528
+ educationLevel: import_joi7.default.string().optional(),
3529
+ gradeLevel: import_joi7.default.string().optional(),
3530
+ teachingStyle: import_joi7.default.string().optional(),
3531
+ maxTeachingHoursPerDay: import_joi7.default.number().integer().min(0).optional(),
3532
+ maxTeachingHoursPerWeek: import_joi7.default.number().integer().min(0).optional(),
3533
+ defaultStartTime: import_joi7.default.string().optional().allow("", null),
3534
+ defaultEndTime: import_joi7.default.string().optional().allow("", null)
3433
3535
  }).min(1)
3434
3536
  });
3435
3537
  const { error } = validation.validate({ id, value });
@@ -3451,15 +3553,15 @@ function useGradeLevelController() {
3451
3553
  }
3452
3554
  async function getAll(req, res, next) {
3453
3555
  const query = req.query;
3454
- const validation = import_joi6.default.object({
3455
- page: import_joi6.default.number().min(1).optional().allow("", null),
3456
- limit: import_joi6.default.number().min(1).optional().allow("", null),
3457
- search: import_joi6.default.string().optional().allow("", null),
3458
- educationLevel: import_joi6.default.string().optional().allow("", null),
3459
- gradeLevel: import_joi6.default.string().optional().allow("", null),
3460
- teachingStyle: import_joi6.default.string().optional().allow("", null),
3461
- school: import_joi6.default.string().hex().optional().allow("", null),
3462
- status: import_joi6.default.string().optional().allow("", null)
3556
+ const validation = import_joi7.default.object({
3557
+ page: import_joi7.default.number().min(1).optional().allow("", null),
3558
+ limit: import_joi7.default.number().min(1).optional().allow("", null),
3559
+ search: import_joi7.default.string().optional().allow("", null),
3560
+ educationLevel: import_joi7.default.string().optional().allow("", null),
3561
+ gradeLevel: import_joi7.default.string().optional().allow("", null),
3562
+ teachingStyle: import_joi7.default.string().optional().allow("", null),
3563
+ school: import_joi7.default.string().hex().optional().allow("", null),
3564
+ status: import_joi7.default.string().optional().allow("", null)
3463
3565
  });
3464
3566
  const { error } = validation.validate(query);
3465
3567
  if (error) {
@@ -3484,7 +3586,7 @@ function useGradeLevelController() {
3484
3586
  const school = req.query.school ?? "";
3485
3587
  const search = req.query.search ?? "";
3486
3588
  try {
3487
- const gradeLevels = await _getAll({
3589
+ const gradeLevels2 = await _getAll({
3488
3590
  page,
3489
3591
  limit,
3490
3592
  sort: sortObj,
@@ -3495,7 +3597,7 @@ function useGradeLevelController() {
3495
3597
  school,
3496
3598
  search
3497
3599
  });
3498
- res.json(gradeLevels);
3600
+ res.json(gradeLevels2);
3499
3601
  return;
3500
3602
  } catch (error2) {
3501
3603
  next(error2);
@@ -3503,8 +3605,8 @@ function useGradeLevelController() {
3503
3605
  }
3504
3606
  async function getById(req, res, next) {
3505
3607
  const id = req.params.id;
3506
- const validation = import_joi6.default.object({
3507
- id: import_joi6.default.string().hex().required()
3608
+ const validation = import_joi7.default.object({
3609
+ id: import_joi7.default.string().hex().required()
3508
3610
  });
3509
3611
  const { error } = validation.validate({ id });
3510
3612
  if (error) {
@@ -3524,8 +3626,8 @@ function useGradeLevelController() {
3524
3626
  }
3525
3627
  async function deleteById(req, res, next) {
3526
3628
  const id = req.params.id;
3527
- const validation = import_joi6.default.object({
3528
- id: import_joi6.default.string().hex().required()
3629
+ const validation = import_joi7.default.object({
3630
+ id: import_joi7.default.string().hex().required()
3529
3631
  });
3530
3632
  const { error } = validation.validate({ id });
3531
3633
  if (error) {
@@ -3546,9 +3648,9 @@ function useGradeLevelController() {
3546
3648
  async function getByEducationLevel(req, res, next) {
3547
3649
  const educationLevel = req.params.educationLevel;
3548
3650
  const school = req.query.school;
3549
- const validation = import_joi6.default.object({
3550
- educationLevel: import_joi6.default.string().required(),
3551
- school: import_joi6.default.string().hex().optional().allow("", null)
3651
+ const validation = import_joi7.default.object({
3652
+ educationLevel: import_joi7.default.string().required(),
3653
+ school: import_joi7.default.string().hex().optional().allow("", null)
3552
3654
  });
3553
3655
  const { error } = validation.validate({ educationLevel, school });
3554
3656
  if (error) {
@@ -3556,10 +3658,10 @@ function useGradeLevelController() {
3556
3658
  return;
3557
3659
  }
3558
3660
  try {
3559
- const gradeLevels = await _getByEducationLevel(educationLevel, school);
3661
+ const gradeLevels2 = await _getByEducationLevel(educationLevel, school);
3560
3662
  res.json({
3561
3663
  message: "Successfully retrieved grade levels by education level.",
3562
- data: { gradeLevels }
3664
+ data: { gradeLevels: gradeLevels2 }
3563
3665
  });
3564
3666
  return;
3565
3667
  } catch (error2) {
@@ -3578,14 +3680,14 @@ function useGradeLevelController() {
3578
3680
 
3579
3681
  // src/resources/region/region.model.ts
3580
3682
  var import_nodejs_utils11 = require("@eeplatform/nodejs-utils");
3581
- var import_joi7 = __toESM(require("joi"));
3683
+ var import_joi8 = __toESM(require("joi"));
3582
3684
  var import_mongodb7 = require("mongodb");
3583
- var schemaRegion = import_joi7.default.object({
3584
- _id: import_joi7.default.string().hex().optional().allow(null, ""),
3585
- name: import_joi7.default.string().min(1).max(100).required(),
3586
- createdAt: import_joi7.default.string().isoDate().optional(),
3587
- updatedAt: import_joi7.default.string().isoDate().optional(),
3588
- deletedAt: import_joi7.default.string().isoDate().optional().allow(null, "")
3685
+ var schemaRegion = import_joi8.default.object({
3686
+ _id: import_joi8.default.string().hex().optional().allow(null, ""),
3687
+ name: import_joi8.default.string().min(1).max(100).required(),
3688
+ createdAt: import_joi8.default.string().isoDate().optional(),
3689
+ updatedAt: import_joi8.default.string().isoDate().optional(),
3690
+ deletedAt: import_joi8.default.string().isoDate().optional().allow(null, "")
3589
3691
  });
3590
3692
  function modelRegion(value) {
3591
3693
  const { error } = schemaRegion.validate(value);
@@ -3864,7 +3966,7 @@ function useRegionRepo() {
3864
3966
 
3865
3967
  // src/resources/region/region.controller.ts
3866
3968
  var import_nodejs_utils13 = require("@eeplatform/nodejs-utils");
3867
- var import_joi8 = __toESM(require("joi"));
3969
+ var import_joi9 = __toESM(require("joi"));
3868
3970
  function useRegionController() {
3869
3971
  const {
3870
3972
  add: _add,
@@ -3894,11 +3996,11 @@ function useRegionController() {
3894
3996
  }
3895
3997
  async function getAll(req, res, next) {
3896
3998
  const query = req.query;
3897
- const validation = import_joi8.default.object({
3898
- page: import_joi8.default.number().min(1).optional().allow("", null),
3899
- limit: import_joi8.default.number().min(1).optional().allow("", null),
3900
- search: import_joi8.default.string().optional().allow("", null),
3901
- status: import_joi8.default.string().optional().allow("", null)
3999
+ const validation = import_joi9.default.object({
4000
+ page: import_joi9.default.number().min(1).optional().allow("", null),
4001
+ limit: import_joi9.default.number().min(1).optional().allow("", null),
4002
+ search: import_joi9.default.string().optional().allow("", null),
4003
+ status: import_joi9.default.string().optional().allow("", null)
3902
4004
  });
3903
4005
  const { error } = validation.validate(query);
3904
4006
  const page = typeof req.query.page === "string" ? Number(req.query.page) : 1;
@@ -3929,8 +4031,8 @@ function useRegionController() {
3929
4031
  }
3930
4032
  async function getById(req, res, next) {
3931
4033
  const id = req.params.id;
3932
- const validation = import_joi8.default.object({
3933
- id: import_joi8.default.string().hex().required()
4034
+ const validation = import_joi9.default.object({
4035
+ id: import_joi9.default.string().hex().required()
3934
4036
  });
3935
4037
  const { error } = validation.validate({ id });
3936
4038
  if (error) {
@@ -3950,8 +4052,8 @@ function useRegionController() {
3950
4052
  }
3951
4053
  async function getByName(req, res, next) {
3952
4054
  const name = req.params.name;
3953
- const validation = import_joi8.default.object({
3954
- name: import_joi8.default.string().required()
4055
+ const validation = import_joi9.default.object({
4056
+ name: import_joi9.default.string().required()
3955
4057
  });
3956
4058
  const { error } = validation.validate({ name });
3957
4059
  if (error) {
@@ -3972,10 +4074,10 @@ function useRegionController() {
3972
4074
  async function updateField(req, res, next) {
3973
4075
  const _id = req.params.id;
3974
4076
  const { field, value } = req.body;
3975
- const validation = import_joi8.default.object({
3976
- _id: import_joi8.default.string().hex().required(),
3977
- field: import_joi8.default.string().valid("name", "director", "directorName").required(),
3978
- value: import_joi8.default.string().required()
4077
+ const validation = import_joi9.default.object({
4078
+ _id: import_joi9.default.string().hex().required(),
4079
+ field: import_joi9.default.string().valid("name", "director", "directorName").required(),
4080
+ value: import_joi9.default.string().required()
3979
4081
  });
3980
4082
  const { error } = validation.validate({ _id, field, value });
3981
4083
  if (error) {
@@ -3992,8 +4094,8 @@ function useRegionController() {
3992
4094
  }
3993
4095
  async function deleteById(req, res, next) {
3994
4096
  const _id = req.params.id;
3995
- const validation = import_joi8.default.object({
3996
- _id: import_joi8.default.string().hex().required()
4097
+ const validation = import_joi9.default.object({
4098
+ _id: import_joi9.default.string().hex().required()
3997
4099
  });
3998
4100
  const { error } = validation.validate({ _id });
3999
4101
  if (error) {
@@ -4020,26 +4122,26 @@ function useRegionController() {
4020
4122
 
4021
4123
  // src/resources/division/division.model.ts
4022
4124
  var import_nodejs_utils14 = require("@eeplatform/nodejs-utils");
4023
- var import_joi9 = __toESM(require("joi"));
4125
+ var import_joi10 = __toESM(require("joi"));
4024
4126
  var import_mongodb9 = require("mongodb");
4025
- var schemaDivision = import_joi9.default.object({
4026
- _id: import_joi9.default.string().hex().optional().allow(null, ""),
4027
- name: import_joi9.default.string().min(1).max(100).required(),
4028
- region: import_joi9.default.string().hex().required(),
4029
- regionName: import_joi9.default.string().min(1).max(100).required(),
4030
- superintendent: import_joi9.default.string().hex().optional().allow(null, ""),
4031
- superintendentName: import_joi9.default.string().min(1).max(100).optional().allow(null, ""),
4032
- createdAt: import_joi9.default.string().isoDate().optional(),
4033
- updatedAt: import_joi9.default.string().isoDate().optional(),
4034
- deletedAt: import_joi9.default.string().isoDate().optional().allow(null, "")
4127
+ var schemaDivision = import_joi10.default.object({
4128
+ _id: import_joi10.default.string().hex().optional().allow(null, ""),
4129
+ name: import_joi10.default.string().min(1).max(100).required(),
4130
+ region: import_joi10.default.string().hex().required(),
4131
+ regionName: import_joi10.default.string().min(1).max(100).required(),
4132
+ superintendent: import_joi10.default.string().hex().optional().allow(null, ""),
4133
+ superintendentName: import_joi10.default.string().min(1).max(100).optional().allow(null, ""),
4134
+ createdAt: import_joi10.default.string().isoDate().optional(),
4135
+ updatedAt: import_joi10.default.string().isoDate().optional(),
4136
+ deletedAt: import_joi10.default.string().isoDate().optional().allow(null, "")
4035
4137
  });
4036
- var schemaDivisionUpdate = import_joi9.default.object({
4037
- _id: import_joi9.default.string().hex().optional().allow(null, ""),
4038
- name: import_joi9.default.string().min(1).max(100).required(),
4039
- region: import_joi9.default.string().hex().required(),
4040
- regionName: import_joi9.default.string().min(1).max(100).required(),
4041
- superintendent: import_joi9.default.string().hex().optional().allow(null, ""),
4042
- superintendentName: import_joi9.default.string().min(1).max(100).optional().allow(null, "")
4138
+ var schemaDivisionUpdate = import_joi10.default.object({
4139
+ _id: import_joi10.default.string().hex().optional().allow(null, ""),
4140
+ name: import_joi10.default.string().min(1).max(100).required(),
4141
+ region: import_joi10.default.string().hex().required(),
4142
+ regionName: import_joi10.default.string().min(1).max(100).required(),
4143
+ superintendent: import_joi10.default.string().hex().optional().allow(null, ""),
4144
+ superintendentName: import_joi10.default.string().min(1).max(100).optional().allow(null, "")
4043
4145
  });
4044
4146
  function modelDivision(value) {
4045
4147
  const { error } = schemaDivision.validate(value);
@@ -4385,49 +4487,49 @@ var import_core2 = require("@eeplatform/core");
4385
4487
 
4386
4488
  // src/resources/school/school.model.ts
4387
4489
  var import_nodejs_utils16 = require("@eeplatform/nodejs-utils");
4388
- var import_joi10 = __toESM(require("joi"));
4490
+ var import_joi11 = __toESM(require("joi"));
4389
4491
  var import_mongodb11 = require("mongodb");
4390
- var schemaSchool = import_joi10.default.object({
4391
- _id: import_joi10.default.string().hex().optional().allow(null, ""),
4392
- id: import_joi10.default.string().min(1).max(50).required(),
4393
- name: import_joi10.default.string().min(1).max(100).required(),
4394
- region: import_joi10.default.string().hex().required(),
4395
- regionName: import_joi10.default.string().min(1).max(100).optional().allow(null, ""),
4396
- division: import_joi10.default.string().hex().required(),
4397
- divisionName: import_joi10.default.string().min(1).max(100).optional().allow(null, ""),
4398
- principal: import_joi10.default.string().hex().optional().allow(null, ""),
4399
- principalName: import_joi10.default.string().min(1).max(100).optional().allow(null, ""),
4400
- street: import_joi10.default.string().max(200).optional().allow(null, ""),
4401
- barangay: import_joi10.default.string().max(200).optional().allow(null, ""),
4402
- cityMunicipality: import_joi10.default.string().max(100).optional().allow(null, ""),
4403
- province: import_joi10.default.string().max(100).optional().allow(null, ""),
4404
- cityMunicipalityPSGC: import_joi10.default.string().length(10).optional().allow(null, ""),
4405
- postalCode: import_joi10.default.string().max(20).optional().allow(null, ""),
4406
- contactNumber: import_joi10.default.string().max(20).optional().allow(null, ""),
4407
- email: import_joi10.default.string().email().max(100).optional().allow(null, ""),
4408
- status: import_joi10.default.string().optional().allow(null, ""),
4409
- createdBy: import_joi10.default.string().optional().allow(null, ""),
4410
- createdAt: import_joi10.default.string().isoDate().optional().allow(null, ""),
4411
- updatedAt: import_joi10.default.string().isoDate().optional().allow(null, ""),
4412
- deletedAt: import_joi10.default.string().isoDate().optional().allow(null, "")
4492
+ var schemaSchool = import_joi11.default.object({
4493
+ _id: import_joi11.default.string().hex().optional().allow(null, ""),
4494
+ id: import_joi11.default.string().min(1).max(50).required(),
4495
+ name: import_joi11.default.string().min(1).max(100).required(),
4496
+ region: import_joi11.default.string().hex().required(),
4497
+ regionName: import_joi11.default.string().min(1).max(100).optional().allow(null, ""),
4498
+ division: import_joi11.default.string().hex().required(),
4499
+ divisionName: import_joi11.default.string().min(1).max(100).optional().allow(null, ""),
4500
+ principal: import_joi11.default.string().hex().optional().allow(null, ""),
4501
+ principalName: import_joi11.default.string().min(1).max(100).optional().allow(null, ""),
4502
+ street: import_joi11.default.string().max(200).optional().allow(null, ""),
4503
+ barangay: import_joi11.default.string().max(200).optional().allow(null, ""),
4504
+ cityMunicipality: import_joi11.default.string().max(100).optional().allow(null, ""),
4505
+ province: import_joi11.default.string().max(100).optional().allow(null, ""),
4506
+ cityMunicipalityPSGC: import_joi11.default.string().length(10).optional().allow(null, ""),
4507
+ postalCode: import_joi11.default.string().max(20).optional().allow(null, ""),
4508
+ contactNumber: import_joi11.default.string().max(20).optional().allow(null, ""),
4509
+ email: import_joi11.default.string().email().max(100).optional().allow(null, ""),
4510
+ status: import_joi11.default.string().optional().allow(null, ""),
4511
+ createdBy: import_joi11.default.string().optional().allow(null, ""),
4512
+ createdAt: import_joi11.default.string().isoDate().optional().allow(null, ""),
4513
+ updatedAt: import_joi11.default.string().isoDate().optional().allow(null, ""),
4514
+ deletedAt: import_joi11.default.string().isoDate().optional().allow(null, "")
4413
4515
  });
4414
- var schemaSchoolUpdate = import_joi10.default.object({
4415
- id: import_joi10.default.string().min(1).max(50).required(),
4416
- name: import_joi10.default.string().min(1).max(100).required(),
4417
- region: import_joi10.default.string().hex().required(),
4418
- regionName: import_joi10.default.string().min(1).max(100).optional().allow(null, ""),
4419
- division: import_joi10.default.string().hex().required(),
4420
- divisionName: import_joi10.default.string().min(1).max(100).optional().allow(null, ""),
4421
- principal: import_joi10.default.string().hex().optional().allow(null, ""),
4422
- principalName: import_joi10.default.string().min(1).max(100).optional().allow(null, ""),
4423
- street: import_joi10.default.string().max(200).optional().allow(null, ""),
4424
- barangay: import_joi10.default.string().max(200).optional().allow(null, ""),
4425
- cityMunicipality: import_joi10.default.string().max(100).optional().allow(null, ""),
4426
- province: import_joi10.default.string().max(100).optional().allow(null, ""),
4427
- cityMunicipalityPSGC: import_joi10.default.string().length(10).optional().allow(null, ""),
4428
- postalCode: import_joi10.default.string().max(20).optional().allow(null, ""),
4429
- contactNumber: import_joi10.default.string().max(20).optional().allow(null, ""),
4430
- email: import_joi10.default.string().email().max(100).optional().allow(null, "")
4516
+ var schemaSchoolUpdate = import_joi11.default.object({
4517
+ id: import_joi11.default.string().min(1).max(50).required(),
4518
+ name: import_joi11.default.string().min(1).max(100).required(),
4519
+ region: import_joi11.default.string().hex().required(),
4520
+ regionName: import_joi11.default.string().min(1).max(100).optional().allow(null, ""),
4521
+ division: import_joi11.default.string().hex().required(),
4522
+ divisionName: import_joi11.default.string().min(1).max(100).optional().allow(null, ""),
4523
+ principal: import_joi11.default.string().hex().optional().allow(null, ""),
4524
+ principalName: import_joi11.default.string().min(1).max(100).optional().allow(null, ""),
4525
+ street: import_joi11.default.string().max(200).optional().allow(null, ""),
4526
+ barangay: import_joi11.default.string().max(200).optional().allow(null, ""),
4527
+ cityMunicipality: import_joi11.default.string().max(100).optional().allow(null, ""),
4528
+ province: import_joi11.default.string().max(100).optional().allow(null, ""),
4529
+ cityMunicipalityPSGC: import_joi11.default.string().length(10).optional().allow(null, ""),
4530
+ postalCode: import_joi11.default.string().max(20).optional().allow(null, ""),
4531
+ contactNumber: import_joi11.default.string().max(20).optional().allow(null, ""),
4532
+ email: import_joi11.default.string().email().max(100).optional().allow(null, "")
4431
4533
  });
4432
4534
  function modelSchool(value) {
4433
4535
  const { error } = schemaSchool.validate(value);
@@ -33350,7 +33452,7 @@ ${errors.slice(0, 5).join("\n")}${errors.length > 5 ? `
33350
33452
 
33351
33453
  // src/resources/school/school.controller.ts
33352
33454
  var import_nodejs_utils19 = require("@eeplatform/nodejs-utils");
33353
- var import_joi11 = __toESM(require("joi"));
33455
+ var import_joi12 = __toESM(require("joi"));
33354
33456
  function useSchoolController() {
33355
33457
  const {
33356
33458
  getAll: _getAll,
@@ -33383,16 +33485,16 @@ function useSchoolController() {
33383
33485
  }
33384
33486
  }
33385
33487
  async function getAll(req, res, next) {
33386
- const validation = import_joi11.default.object({
33387
- page: import_joi11.default.number().optional().allow(null, ""),
33388
- limit: import_joi11.default.number().optional().allow(null, ""),
33389
- sort: import_joi11.default.string().optional().allow(null, ""),
33390
- sortOrder: import_joi11.default.string().optional().allow(null, ""),
33391
- status: import_joi11.default.string().optional().allow(null, ""),
33392
- org: import_joi11.default.string().hex().optional().allow(null, ""),
33393
- app: import_joi11.default.string().optional().allow(null, ""),
33394
- search: import_joi11.default.string().optional().allow(null, ""),
33395
- psgc: import_joi11.default.string().optional().allow(null, "")
33488
+ const validation = import_joi12.default.object({
33489
+ page: import_joi12.default.number().optional().allow(null, ""),
33490
+ limit: import_joi12.default.number().optional().allow(null, ""),
33491
+ sort: import_joi12.default.string().optional().allow(null, ""),
33492
+ sortOrder: import_joi12.default.string().optional().allow(null, ""),
33493
+ status: import_joi12.default.string().optional().allow(null, ""),
33494
+ org: import_joi12.default.string().hex().optional().allow(null, ""),
33495
+ app: import_joi12.default.string().optional().allow(null, ""),
33496
+ search: import_joi12.default.string().optional().allow(null, ""),
33497
+ psgc: import_joi12.default.string().optional().allow(null, "")
33396
33498
  });
33397
33499
  const { error } = validation.validate(req.query);
33398
33500
  if (error) {
@@ -33430,7 +33532,7 @@ function useSchoolController() {
33430
33532
  }
33431
33533
  async function getByCreatedBy(req, res, next) {
33432
33534
  const createdBy = req.params.createdBy;
33433
- const validation = import_joi11.default.string().hex().required();
33535
+ const validation = import_joi12.default.string().hex().required();
33434
33536
  const { error } = validation.validate(createdBy);
33435
33537
  if (error) {
33436
33538
  next(new import_nodejs_utils19.BadRequestError(`Validation error: ${error.message}`));
@@ -33447,9 +33549,9 @@ function useSchoolController() {
33447
33549
  async function updateStatusById(req, res, next) {
33448
33550
  const schoolId = req.params.id;
33449
33551
  const status = req.params.status;
33450
- const validation = import_joi11.default.object({
33451
- id: import_joi11.default.string().hex().required(),
33452
- status: import_joi11.default.string().valid("active", "deleted", "suspended").required()
33552
+ const validation = import_joi12.default.object({
33553
+ id: import_joi12.default.string().hex().required(),
33554
+ status: import_joi12.default.string().valid("active", "deleted", "suspended").required()
33453
33555
  });
33454
33556
  const { error } = validation.validate({ id: schoolId, status });
33455
33557
  if (error) {
@@ -33482,8 +33584,8 @@ function useSchoolController() {
33482
33584
  }
33483
33585
  async function approveSchool(req, res, next) {
33484
33586
  const schoolId = req.params.id;
33485
- const validation = import_joi11.default.object({
33486
- id: import_joi11.default.string().hex().required()
33587
+ const validation = import_joi12.default.object({
33588
+ id: import_joi12.default.string().hex().required()
33487
33589
  });
33488
33590
  const { error } = validation.validate({ id: schoolId });
33489
33591
  if (error) {
@@ -33506,11 +33608,11 @@ function useSchoolController() {
33506
33608
  return;
33507
33609
  }
33508
33610
  const { region, regionName, division, divisionName } = req.body;
33509
- const validation = import_joi11.default.object({
33510
- region: import_joi11.default.string().hex().required(),
33511
- regionName: import_joi11.default.string().min(1).required(),
33512
- division: import_joi11.default.string().hex().required(),
33513
- divisionName: import_joi11.default.string().min(1).required()
33611
+ const validation = import_joi12.default.object({
33612
+ region: import_joi12.default.string().hex().required(),
33613
+ regionName: import_joi12.default.string().min(1).required(),
33614
+ division: import_joi12.default.string().hex().required(),
33615
+ divisionName: import_joi12.default.string().min(1).required()
33514
33616
  });
33515
33617
  const { error } = validation.validate({
33516
33618
  region,
@@ -33539,10 +33641,10 @@ function useSchoolController() {
33539
33641
  async function updateFieldById(req, res, next) {
33540
33642
  const _id = req.params.id;
33541
33643
  const { field, value } = req.body;
33542
- const validation = import_joi11.default.object({
33543
- _id: import_joi11.default.string().hex().required(),
33544
- field: import_joi11.default.string().valid("name", "director", "directorName").required(),
33545
- value: import_joi11.default.string().required()
33644
+ const validation = import_joi12.default.object({
33645
+ _id: import_joi12.default.string().hex().required(),
33646
+ field: import_joi12.default.string().valid("name", "director", "directorName").required(),
33647
+ value: import_joi12.default.string().required()
33546
33648
  });
33547
33649
  const { error } = validation.validate({ _id, field, value });
33548
33650
  if (error) {
@@ -33560,8 +33662,8 @@ function useSchoolController() {
33560
33662
  async function updateById(req, res, next) {
33561
33663
  const id = req.params.id;
33562
33664
  const payload = req.body;
33563
- const validation = import_joi11.default.object({
33564
- id: import_joi11.default.string().hex().required()
33665
+ const validation = import_joi12.default.object({
33666
+ id: import_joi12.default.string().hex().required()
33565
33667
  });
33566
33668
  const { error: idError } = validation.validate({ id });
33567
33669
  if (idError) {
@@ -33583,8 +33685,8 @@ function useSchoolController() {
33583
33685
  }
33584
33686
  async function deleteById(req, res, next) {
33585
33687
  const _id = req.params.id;
33586
- const validation = import_joi11.default.object({
33587
- _id: import_joi11.default.string().hex().required()
33688
+ const validation = import_joi12.default.object({
33689
+ _id: import_joi12.default.string().hex().required()
33588
33690
  });
33589
33691
  const { error } = validation.validate({ _id });
33590
33692
  if (error) {
@@ -33679,7 +33781,7 @@ function useDivisionService() {
33679
33781
 
33680
33782
  // src/resources/division/division.controller.ts
33681
33783
  var import_nodejs_utils21 = require("@eeplatform/nodejs-utils");
33682
- var import_joi12 = __toESM(require("joi"));
33784
+ var import_joi13 = __toESM(require("joi"));
33683
33785
  function useDivisionController() {
33684
33786
  const { add: _add, updateById: _updateById } = useDivisionService();
33685
33787
  const {
@@ -33709,12 +33811,12 @@ function useDivisionController() {
33709
33811
  }
33710
33812
  async function getAll(req, res, next) {
33711
33813
  const query = req.query;
33712
- const validation = import_joi12.default.object({
33713
- page: import_joi12.default.number().min(1).optional().allow("", null),
33714
- limit: import_joi12.default.number().min(1).optional().allow("", null),
33715
- search: import_joi12.default.string().optional().allow("", null),
33716
- status: import_joi12.default.string().optional().allow("", null),
33717
- region: import_joi12.default.string().hex().optional().allow("", null)
33814
+ const validation = import_joi13.default.object({
33815
+ page: import_joi13.default.number().min(1).optional().allow("", null),
33816
+ limit: import_joi13.default.number().min(1).optional().allow("", null),
33817
+ search: import_joi13.default.string().optional().allow("", null),
33818
+ status: import_joi13.default.string().optional().allow("", null),
33819
+ region: import_joi13.default.string().hex().optional().allow("", null)
33718
33820
  });
33719
33821
  const { error } = validation.validate(query);
33720
33822
  const page = typeof req.query.page === "string" ? Number(req.query.page) : 1;
@@ -33746,8 +33848,8 @@ function useDivisionController() {
33746
33848
  }
33747
33849
  async function getById(req, res, next) {
33748
33850
  const id = req.params.id;
33749
- const validation = import_joi12.default.object({
33750
- id: import_joi12.default.string().hex().required()
33851
+ const validation = import_joi13.default.object({
33852
+ id: import_joi13.default.string().hex().required()
33751
33853
  });
33752
33854
  const { error } = validation.validate({ id });
33753
33855
  if (error) {
@@ -33767,8 +33869,8 @@ function useDivisionController() {
33767
33869
  }
33768
33870
  async function getByName(req, res, next) {
33769
33871
  const name = req.params.name;
33770
- const validation = import_joi12.default.object({
33771
- name: import_joi12.default.string().required()
33872
+ const validation = import_joi13.default.object({
33873
+ name: import_joi13.default.string().required()
33772
33874
  });
33773
33875
  const { error } = validation.validate({ name });
33774
33876
  if (error) {
@@ -33789,10 +33891,10 @@ function useDivisionController() {
33789
33891
  async function updateField(req, res, next) {
33790
33892
  const _id = req.params.id;
33791
33893
  const { field, value } = req.body;
33792
- const validation = import_joi12.default.object({
33793
- _id: import_joi12.default.string().hex().required(),
33794
- field: import_joi12.default.string().valid("name", "director", "directorName").required(),
33795
- value: import_joi12.default.string().required()
33894
+ const validation = import_joi13.default.object({
33895
+ _id: import_joi13.default.string().hex().required(),
33896
+ field: import_joi13.default.string().valid("name", "director", "directorName").required(),
33897
+ value: import_joi13.default.string().required()
33796
33898
  });
33797
33899
  const { error } = validation.validate({ _id, field, value });
33798
33900
  if (error) {
@@ -33825,8 +33927,8 @@ function useDivisionController() {
33825
33927
  }
33826
33928
  async function deleteById(req, res, next) {
33827
33929
  const _id = req.params.id;
33828
- const validation = import_joi12.default.object({
33829
- _id: import_joi12.default.string().hex().required()
33930
+ const validation = import_joi13.default.object({
33931
+ _id: import_joi13.default.string().hex().required()
33830
33932
  });
33831
33933
  const { error } = validation.validate({ _id });
33832
33934
  if (error) {
@@ -33854,48 +33956,48 @@ function useDivisionController() {
33854
33956
 
33855
33957
  // src/resources/asset/asset.model.ts
33856
33958
  var import_nodejs_utils22 = require("@eeplatform/nodejs-utils");
33857
- var import_joi13 = __toESM(require("joi"));
33959
+ var import_joi14 = __toESM(require("joi"));
33858
33960
  var import_mongodb13 = require("mongodb");
33859
- var schemaAsset = import_joi13.default.object({
33860
- _id: import_joi13.default.string().hex().optional(),
33861
- school: import_joi13.default.string().hex().required(),
33862
- asset_type: import_joi13.default.string().required().allow("supply", "furniture-equipment", "fixed-asset"),
33863
- name: import_joi13.default.string().required(),
33864
- category: import_joi13.default.string().optional().allow("", null),
33865
- type: import_joi13.default.string().optional().allow("", null),
33866
- brand: import_joi13.default.string().optional().allow("", null),
33867
- unit: import_joi13.default.string().required(),
33868
- status: import_joi13.default.string().optional().allow("", null),
33869
- createdAt: import_joi13.default.date().optional().allow("", null),
33870
- updatedAt: import_joi13.default.date().optional().allow("", null),
33871
- deletedAt: import_joi13.default.date().optional().allow("", null),
33872
- metadata: import_joi13.default.object({
33873
- title: import_joi13.default.string().optional().allow("", null),
33874
- isbn: import_joi13.default.string().optional().allow("", null),
33875
- author: import_joi13.default.string().optional().allow("", null),
33876
- edition: import_joi13.default.string().optional().allow("", null),
33877
- subject: import_joi13.default.string().optional().allow("", null),
33878
- grade_level: import_joi13.default.number().integer().min(0).optional().allow("", null),
33879
- publisher: import_joi13.default.string().optional().allow("", null),
33880
- language: import_joi13.default.string().optional().allow("", null)
33961
+ var schemaAsset = import_joi14.default.object({
33962
+ _id: import_joi14.default.string().hex().optional(),
33963
+ school: import_joi14.default.string().hex().required(),
33964
+ asset_type: import_joi14.default.string().required().allow("supply", "furniture-equipment", "fixed-asset"),
33965
+ name: import_joi14.default.string().required(),
33966
+ category: import_joi14.default.string().optional().allow("", null),
33967
+ type: import_joi14.default.string().optional().allow("", null),
33968
+ brand: import_joi14.default.string().optional().allow("", null),
33969
+ unit: import_joi14.default.string().required(),
33970
+ status: import_joi14.default.string().optional().allow("", null),
33971
+ createdAt: import_joi14.default.date().optional().allow("", null),
33972
+ updatedAt: import_joi14.default.date().optional().allow("", null),
33973
+ deletedAt: import_joi14.default.date().optional().allow("", null),
33974
+ metadata: import_joi14.default.object({
33975
+ title: import_joi14.default.string().optional().allow("", null),
33976
+ isbn: import_joi14.default.string().optional().allow("", null),
33977
+ author: import_joi14.default.string().optional().allow("", null),
33978
+ edition: import_joi14.default.string().optional().allow("", null),
33979
+ subject: import_joi14.default.string().optional().allow("", null),
33980
+ grade_level: import_joi14.default.number().integer().min(0).optional().allow("", null),
33981
+ publisher: import_joi14.default.string().optional().allow("", null),
33982
+ language: import_joi14.default.string().optional().allow("", null)
33881
33983
  }).optional().allow(null)
33882
33984
  });
33883
- var schemaAssetUpdateOption = import_joi13.default.object({
33884
- name: import_joi13.default.string().optional().allow("", null),
33885
- category: import_joi13.default.string().optional().allow("", null),
33886
- type: import_joi13.default.string().optional().allow("", null),
33887
- brand: import_joi13.default.string().optional().allow("", null),
33888
- qty: import_joi13.default.number().integer().min(0).optional().allow("", null),
33889
- unit: import_joi13.default.string().optional().allow("", null),
33890
- metadata: import_joi13.default.object({
33891
- title: import_joi13.default.string().optional().allow("", null),
33892
- isbn: import_joi13.default.string().optional().allow("", null),
33893
- author: import_joi13.default.string().optional().allow("", null),
33894
- edition: import_joi13.default.string().optional().allow("", null),
33895
- subject: import_joi13.default.string().optional().allow("", null),
33896
- grade_level: import_joi13.default.number().integer().min(0).optional().allow("", null),
33897
- publisher: import_joi13.default.string().optional().allow("", null),
33898
- language: import_joi13.default.string().optional().allow("", null)
33985
+ var schemaAssetUpdateOption = import_joi14.default.object({
33986
+ name: import_joi14.default.string().optional().allow("", null),
33987
+ category: import_joi14.default.string().optional().allow("", null),
33988
+ type: import_joi14.default.string().optional().allow("", null),
33989
+ brand: import_joi14.default.string().optional().allow("", null),
33990
+ qty: import_joi14.default.number().integer().min(0).optional().allow("", null),
33991
+ unit: import_joi14.default.string().optional().allow("", null),
33992
+ metadata: import_joi14.default.object({
33993
+ title: import_joi14.default.string().optional().allow("", null),
33994
+ isbn: import_joi14.default.string().optional().allow("", null),
33995
+ author: import_joi14.default.string().optional().allow("", null),
33996
+ edition: import_joi14.default.string().optional().allow("", null),
33997
+ subject: import_joi14.default.string().optional().allow("", null),
33998
+ grade_level: import_joi14.default.number().integer().min(0).optional().allow("", null),
33999
+ publisher: import_joi14.default.string().optional().allow("", null),
34000
+ language: import_joi14.default.string().optional().allow("", null)
33899
34001
  }).optional().allow(null)
33900
34002
  });
33901
34003
  function MAsset(value) {
@@ -34327,7 +34429,7 @@ function useAssetRepo() {
34327
34429
 
34328
34430
  // src/resources/asset/asset.controller.ts
34329
34431
  var import_nodejs_utils24 = require("@eeplatform/nodejs-utils");
34330
- var import_joi14 = __toESM(require("joi"));
34432
+ var import_joi15 = __toESM(require("joi"));
34331
34433
  function useAssetController() {
34332
34434
  const {
34333
34435
  add: _add,
@@ -34355,13 +34457,13 @@ function useAssetController() {
34355
34457
  }
34356
34458
  async function getAll(req, res, next) {
34357
34459
  const query = req.query;
34358
- const validation = import_joi14.default.object({
34359
- page: import_joi14.default.number().min(1).optional().allow("", null),
34360
- limit: import_joi14.default.number().min(1).optional().allow("", null),
34361
- search: import_joi14.default.string().optional().allow("", null),
34362
- status: import_joi14.default.string().optional().allow("", null),
34363
- school: import_joi14.default.string().hex().optional().allow("", null),
34364
- asset_type: import_joi14.default.string().required().allow("supply", "furniture-equipment", "fixed-asset")
34460
+ const validation = import_joi15.default.object({
34461
+ page: import_joi15.default.number().min(1).optional().allow("", null),
34462
+ limit: import_joi15.default.number().min(1).optional().allow("", null),
34463
+ search: import_joi15.default.string().optional().allow("", null),
34464
+ status: import_joi15.default.string().optional().allow("", null),
34465
+ school: import_joi15.default.string().hex().optional().allow("", null),
34466
+ asset_type: import_joi15.default.string().required().allow("supply", "furniture-equipment", "fixed-asset")
34365
34467
  });
34366
34468
  const { error } = validation.validate(query);
34367
34469
  const page = typeof req.query.page === "string" ? Number(req.query.page) : 1;
@@ -34401,7 +34503,7 @@ function useAssetController() {
34401
34503
  }
34402
34504
  async function deleteById(req, res, next) {
34403
34505
  const id = req.params.id;
34404
- const validation = import_joi14.default.string().hex().required();
34506
+ const validation = import_joi15.default.string().hex().required();
34405
34507
  const { error } = validation.validate(id);
34406
34508
  if (error) {
34407
34509
  next(new import_nodejs_utils24.BadRequestError(error.message));
@@ -34416,7 +34518,7 @@ function useAssetController() {
34416
34518
  }
34417
34519
  async function getById(req, res, next) {
34418
34520
  const id = req.params.id;
34419
- const validation = import_joi14.default.string().hex().required();
34521
+ const validation = import_joi15.default.string().hex().required();
34420
34522
  const { error } = validation.validate(id);
34421
34523
  if (error) {
34422
34524
  next(new import_nodejs_utils24.BadRequestError(error.message));
@@ -34447,7 +34549,7 @@ function useAssetController() {
34447
34549
  async function getCategories(req, res, next) {
34448
34550
  const school = req.params.school;
34449
34551
  const asset_type = req.params.asset_type;
34450
- const validation = import_joi14.default.string().hex().required();
34552
+ const validation = import_joi15.default.string().hex().required();
34451
34553
  const { error } = validation.validate(school);
34452
34554
  if (error) {
34453
34555
  next(new import_nodejs_utils24.BadRequestError(error.message));
@@ -34463,7 +34565,7 @@ function useAssetController() {
34463
34565
  async function getTypes(req, res, next) {
34464
34566
  const school = req.params.school;
34465
34567
  const asset_type = req.params.asset_type;
34466
- const validation = import_joi14.default.string().hex().required();
34568
+ const validation = import_joi15.default.string().hex().required();
34467
34569
  const { error } = validation.validate(school);
34468
34570
  if (error) {
34469
34571
  next(new import_nodejs_utils24.BadRequestError(error.message));
@@ -34478,7 +34580,7 @@ function useAssetController() {
34478
34580
  }
34479
34581
  async function getUnitsBySchool(req, res, next) {
34480
34582
  const school = req.params.school;
34481
- const validation = import_joi14.default.string().hex().required();
34583
+ const validation = import_joi15.default.string().hex().required();
34482
34584
  const { error } = validation.validate(school);
34483
34585
  if (error) {
34484
34586
  next(new import_nodejs_utils24.BadRequestError(error.message));
@@ -34505,26 +34607,26 @@ function useAssetController() {
34505
34607
 
34506
34608
  // src/resources/stock-card/stock-card.model.ts
34507
34609
  var import_nodejs_utils25 = require("@eeplatform/nodejs-utils");
34508
- var import_joi15 = __toESM(require("joi"));
34610
+ var import_joi16 = __toESM(require("joi"));
34509
34611
  var import_mongodb15 = require("mongodb");
34510
- var schemaStockCard = import_joi15.default.object({
34511
- _id: import_joi15.default.string().hex().optional().allow("", null),
34512
- school: import_joi15.default.string().hex().required(),
34513
- item: import_joi15.default.string().hex().required(),
34514
- balance: import_joi15.default.number().optional().allow(null, 0),
34515
- qty: import_joi15.default.number().required(),
34516
- unitCost: import_joi15.default.number().optional().allow(null, 0),
34517
- totalCost: import_joi15.default.number().optional().allow(null, 0),
34518
- status: import_joi15.default.string().optional().allow(null, ""),
34519
- condition: import_joi15.default.string().required(),
34520
- supplier: import_joi15.default.string().optional().allow("", null),
34521
- location: import_joi15.default.string().optional().allow("", null),
34522
- locationName: import_joi15.default.string().optional().allow("", null),
34523
- reason: import_joi15.default.string().optional().allow("", null),
34524
- remarks: import_joi15.default.string().optional().allow("", null),
34525
- createdAt: import_joi15.default.date().optional().allow("", null),
34526
- updatedAt: import_joi15.default.date().optional().allow("", null),
34527
- deletedAt: import_joi15.default.date().optional().allow("", null)
34612
+ var schemaStockCard = import_joi16.default.object({
34613
+ _id: import_joi16.default.string().hex().optional().allow("", null),
34614
+ school: import_joi16.default.string().hex().required(),
34615
+ item: import_joi16.default.string().hex().required(),
34616
+ balance: import_joi16.default.number().optional().allow(null, 0),
34617
+ qty: import_joi16.default.number().required(),
34618
+ unitCost: import_joi16.default.number().optional().allow(null, 0),
34619
+ totalCost: import_joi16.default.number().optional().allow(null, 0),
34620
+ status: import_joi16.default.string().optional().allow(null, ""),
34621
+ condition: import_joi16.default.string().required(),
34622
+ supplier: import_joi16.default.string().optional().allow("", null),
34623
+ location: import_joi16.default.string().optional().allow("", null),
34624
+ locationName: import_joi16.default.string().optional().allow("", null),
34625
+ reason: import_joi16.default.string().optional().allow("", null),
34626
+ remarks: import_joi16.default.string().optional().allow("", null),
34627
+ createdAt: import_joi16.default.date().optional().allow("", null),
34628
+ updatedAt: import_joi16.default.date().optional().allow("", null),
34629
+ deletedAt: import_joi16.default.date().optional().allow("", null)
34528
34630
  });
34529
34631
  function MStockCard(value) {
34530
34632
  const { error } = schemaStockCard.validate(value);
@@ -34812,7 +34914,7 @@ function useStockCardService() {
34812
34914
 
34813
34915
  // src/resources/stock-card/stock-card.controller.ts
34814
34916
  var import_nodejs_utils28 = require("@eeplatform/nodejs-utils");
34815
- var import_joi16 = __toESM(require("joi"));
34917
+ var import_joi17 = __toESM(require("joi"));
34816
34918
  function useStockCardController() {
34817
34919
  const {
34818
34920
  getAll: _getAll,
@@ -34836,11 +34938,11 @@ function useStockCardController() {
34836
34938
  }
34837
34939
  async function getAll(req, res, next) {
34838
34940
  const query = req.query;
34839
- const validation = import_joi16.default.object({
34840
- page: import_joi16.default.number().min(1).optional().allow("", null),
34841
- limit: import_joi16.default.number().min(1).optional().allow("", null),
34842
- school: import_joi16.default.string().hex().optional().allow("", null),
34843
- id: import_joi16.default.string().hex().required()
34941
+ const validation = import_joi17.default.object({
34942
+ page: import_joi17.default.number().min(1).optional().allow("", null),
34943
+ limit: import_joi17.default.number().min(1).optional().allow("", null),
34944
+ school: import_joi17.default.string().hex().optional().allow("", null),
34945
+ id: import_joi17.default.string().hex().required()
34844
34946
  });
34845
34947
  const { error } = validation.validate(query);
34846
34948
  const page = typeof req.query.page === "string" ? Number(req.query.page) : 1;
@@ -34876,7 +34978,7 @@ function useStockCardController() {
34876
34978
  }
34877
34979
  async function getById(req, res, next) {
34878
34980
  const id = req.params.id;
34879
- const validation = import_joi16.default.string().hex().required();
34981
+ const validation = import_joi17.default.string().hex().required();
34880
34982
  const { error } = validation.validate(id);
34881
34983
  if (error) {
34882
34984
  next(new import_nodejs_utils28.BadRequestError(error.message));
@@ -34891,7 +34993,7 @@ function useStockCardController() {
34891
34993
  }
34892
34994
  async function getSuppliers(req, res, next) {
34893
34995
  const school = req.params.school;
34894
- const validation = import_joi16.default.string().hex().required();
34996
+ const validation = import_joi17.default.string().hex().required();
34895
34997
  const { error } = validation.validate(school);
34896
34998
  if (error) {
34897
34999
  next(new import_nodejs_utils28.BadRequestError(error.message));
@@ -34914,30 +35016,30 @@ function useStockCardController() {
34914
35016
 
34915
35017
  // src/resources/plantilla/plantilla.model.ts
34916
35018
  var import_nodejs_utils29 = require("@eeplatform/nodejs-utils");
34917
- var import_joi17 = __toESM(require("joi"));
35019
+ var import_joi18 = __toESM(require("joi"));
34918
35020
  var import_mongodb17 = require("mongodb");
34919
- var schemaPlantilla = import_joi17.default.object({
34920
- _id: import_joi17.default.string().hex().optional().allow(null, ""),
34921
- org: import_joi17.default.string().hex().required(),
34922
- orgUnitCode: import_joi17.default.string().optional().allow(null, ""),
34923
- employmentType: import_joi17.default.string().optional().allow(null, ""),
34924
- personnelType: import_joi17.default.string().required(),
34925
- itemNumber: import_joi17.default.string().required(),
34926
- positionTitle: import_joi17.default.string().required(),
34927
- positionCategory: import_joi17.default.string().required(),
34928
- region: import_joi17.default.string().hex().optional().allow(null, ""),
34929
- regionName: import_joi17.default.string().optional().allow(null, ""),
34930
- division: import_joi17.default.string().hex().optional().allow(null, ""),
34931
- divisionName: import_joi17.default.string().optional().allow(null, ""),
34932
- salaryGrade: import_joi17.default.number().required(),
34933
- employeeName: import_joi17.default.string().optional().allow(null, ""),
34934
- annualSalary: import_joi17.default.number().optional().allow(null, 0),
34935
- monthlySalary: import_joi17.default.number().optional().allow(null, 0),
34936
- status: import_joi17.default.string().required(),
34937
- employee: import_joi17.default.string().hex().optional().allow(null, ""),
34938
- createdAt: import_joi17.default.date().iso().optional().allow(null, ""),
34939
- updatedAt: import_joi17.default.date().iso().optional().allow(null, ""),
34940
- deletedAt: import_joi17.default.date().iso().optional().allow(null, "")
35021
+ var schemaPlantilla = import_joi18.default.object({
35022
+ _id: import_joi18.default.string().hex().optional().allow(null, ""),
35023
+ org: import_joi18.default.string().hex().required(),
35024
+ orgUnitCode: import_joi18.default.string().optional().allow(null, ""),
35025
+ employmentType: import_joi18.default.string().optional().allow(null, ""),
35026
+ personnelType: import_joi18.default.string().required(),
35027
+ itemNumber: import_joi18.default.string().required(),
35028
+ positionTitle: import_joi18.default.string().required(),
35029
+ positionCategory: import_joi18.default.string().required(),
35030
+ region: import_joi18.default.string().hex().optional().allow(null, ""),
35031
+ regionName: import_joi18.default.string().optional().allow(null, ""),
35032
+ division: import_joi18.default.string().hex().optional().allow(null, ""),
35033
+ divisionName: import_joi18.default.string().optional().allow(null, ""),
35034
+ salaryGrade: import_joi18.default.number().required(),
35035
+ employeeName: import_joi18.default.string().optional().allow(null, ""),
35036
+ annualSalary: import_joi18.default.number().optional().allow(null, 0),
35037
+ monthlySalary: import_joi18.default.number().optional().allow(null, 0),
35038
+ status: import_joi18.default.string().required(),
35039
+ employee: import_joi18.default.string().hex().optional().allow(null, ""),
35040
+ createdAt: import_joi18.default.date().iso().optional().allow(null, ""),
35041
+ updatedAt: import_joi18.default.date().iso().optional().allow(null, ""),
35042
+ deletedAt: import_joi18.default.date().iso().optional().allow(null, "")
34941
35043
  });
34942
35044
  function MPlantilla(data) {
34943
35045
  const { error } = schemaPlantilla.validate(data);
@@ -35419,7 +35521,7 @@ ${errors.slice(0, 10).join("\n")}${errors.length > 10 ? `
35419
35521
 
35420
35522
  // src/resources/plantilla/plantilla.controller.ts
35421
35523
  var import_nodejs_utils32 = require("@eeplatform/nodejs-utils");
35422
- var import_joi18 = __toESM(require("joi"));
35524
+ var import_joi19 = __toESM(require("joi"));
35423
35525
  function usePlantillaController() {
35424
35526
  const {
35425
35527
  add: _addPlantilla,
@@ -35431,11 +35533,11 @@ function usePlantillaController() {
35431
35533
  const { addBulk: _addBulk } = usePlantillaService();
35432
35534
  async function createPlantilla(req, res, next) {
35433
35535
  const value = req.body;
35434
- const validation = import_joi18.default.object({
35435
- itemNumber: import_joi18.default.string().required(),
35436
- positionTitle: import_joi18.default.string().required(),
35437
- positionCategory: import_joi18.default.string().required(),
35438
- status: import_joi18.default.string().required()
35536
+ const validation = import_joi19.default.object({
35537
+ itemNumber: import_joi19.default.string().required(),
35538
+ positionTitle: import_joi19.default.string().required(),
35539
+ positionCategory: import_joi19.default.string().required(),
35540
+ status: import_joi19.default.string().required()
35439
35541
  });
35440
35542
  const { error } = validation.validate(value);
35441
35543
  if (error) {
@@ -35465,11 +35567,11 @@ function usePlantillaController() {
35465
35567
  next(new import_nodejs_utils32.BadRequestError("Invalid limit number."));
35466
35568
  return;
35467
35569
  }
35468
- const validation = import_joi18.default.object({
35469
- page: import_joi18.default.number().min(1).optional().allow("", null),
35470
- limit: import_joi18.default.number().min(1).optional().allow("", null),
35471
- search: import_joi18.default.string().optional().allow("", null),
35472
- org: import_joi18.default.string().optional().allow("", null)
35570
+ const validation = import_joi19.default.object({
35571
+ page: import_joi19.default.number().min(1).optional().allow("", null),
35572
+ limit: import_joi19.default.number().min(1).optional().allow("", null),
35573
+ search: import_joi19.default.string().optional().allow("", null),
35574
+ org: import_joi19.default.string().optional().allow("", null)
35473
35575
  });
35474
35576
  const { error } = validation.validate({ page, limit, search, org });
35475
35577
  if (error) {
@@ -35491,8 +35593,8 @@ function usePlantillaController() {
35491
35593
  }
35492
35594
  async function getPlantillaById(req, res, next) {
35493
35595
  const id = req.params.id;
35494
- const validation = import_joi18.default.object({
35495
- id: import_joi18.default.string().hex().required()
35596
+ const validation = import_joi19.default.object({
35597
+ id: import_joi19.default.string().hex().required()
35496
35598
  });
35497
35599
  const { error } = validation.validate({ id });
35498
35600
  if (error) {
@@ -35514,12 +35616,12 @@ function usePlantillaController() {
35514
35616
  async function updatePlantilla(req, res, next) {
35515
35617
  const id = req.params.id;
35516
35618
  const value = req.body;
35517
- const validation = import_joi18.default.object({
35518
- id: import_joi18.default.string().hex().required(),
35519
- employee: import_joi18.default.string().hex().optional().allow(null, ""),
35520
- status: import_joi18.default.string().optional(),
35521
- positionTitle: import_joi18.default.string().optional(),
35522
- positionCategory: import_joi18.default.string().optional()
35619
+ const validation = import_joi19.default.object({
35620
+ id: import_joi19.default.string().hex().required(),
35621
+ employee: import_joi19.default.string().hex().optional().allow(null, ""),
35622
+ status: import_joi19.default.string().optional(),
35623
+ positionTitle: import_joi19.default.string().optional(),
35624
+ positionCategory: import_joi19.default.string().optional()
35523
35625
  });
35524
35626
  const { error } = validation.validate({ id, ...value });
35525
35627
  if (error) {
@@ -35540,8 +35642,8 @@ function usePlantillaController() {
35540
35642
  }
35541
35643
  async function deletePlantilla(req, res, next) {
35542
35644
  const id = req.params.id;
35543
- const validation = import_joi18.default.object({
35544
- id: import_joi18.default.string().hex().required()
35645
+ const validation = import_joi19.default.object({
35646
+ id: import_joi19.default.string().hex().required()
35545
35647
  });
35546
35648
  const { error } = validation.validate({ id });
35547
35649
  if (error) {
@@ -35566,9 +35668,9 @@ function usePlantillaController() {
35566
35668
  return;
35567
35669
  }
35568
35670
  const { region, division } = req.body;
35569
- const validation = import_joi18.default.object({
35570
- region: import_joi18.default.string().hex().optional(),
35571
- division: import_joi18.default.string().hex().optional()
35671
+ const validation = import_joi19.default.object({
35672
+ region: import_joi19.default.string().hex().optional(),
35673
+ division: import_joi19.default.string().hex().optional()
35572
35674
  });
35573
35675
  const { error } = validation.validate({ region, division });
35574
35676
  if (error) {