@dynamatix/gb-schemas 2.3.253 → 2.3.255

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.
@@ -1,401 +1,471 @@
1
1
  import mongoose from "mongoose";
2
2
  import { applyWorkflowPlugin } from "../shared/workflow.plugin";
3
3
  const propertyTypeSchema = new mongoose.Schema({
4
- detachedHouse: {
5
- type: String,
6
- default: ""
4
+ isDetachedHouse: {
5
+ type: Boolean,
6
+ default: null
7
7
  },
8
- semiDetachedHouse: {
9
- type: String,
10
- default: ""
8
+ isSemiDetachedHouse: {
9
+ type: Boolean,
10
+ default: null
11
11
  },
12
- terracedHouse: {
13
- type: String,
14
- default: ""
12
+ isTerracedHouse: {
13
+ type: Boolean,
14
+ default: null
15
15
  },
16
- bungalow: {
17
- type: String,
18
- default: ""
16
+ isBungalow: {
17
+ type: Boolean,
18
+ default: null
19
19
  },
20
- flat: {
21
- type: String,
22
- default: ""
20
+ isFlat: {
21
+ type: Boolean,
22
+ default: null
23
23
  },
24
- maisonette: {
25
- type: String,
26
- default: ""
24
+ isMaisonette: {
25
+ type: Boolean,
26
+ default: null
27
27
  },
28
28
  flatMaisonetteFloor: {
29
- type: String,
30
- default: ""
29
+ type: Number,
30
+ default: null
31
31
  },
32
32
  numberOfFloorsInBlock: {
33
- type: String,
34
- default: ""
33
+ type: Number,
34
+ default: null
35
35
  },
36
- builtOrOwnedByLocalAuthority: {
37
- type: String,
38
- default: ""
36
+ isBuiltOrOwnedByLocalAuthority: {
37
+ type: Boolean,
38
+ default: null
39
39
  },
40
40
  ownerOccupationPercentage: {
41
- type: String,
42
- default: ""
41
+ type: Number,
42
+ default: null
43
43
  },
44
44
  isFlatMaisonetteConverted: {
45
- type: String,
46
- default: ""
45
+ type: Boolean,
46
+ default: null
47
47
  },
48
48
  conversionYear: {
49
- type: String,
50
- default: ""
49
+ type: Number,
50
+ default: null
51
51
  },
52
52
  isPurposeBuilt: {
53
- type: String,
54
- default: ""
53
+ type: Boolean,
54
+ default: null
55
55
  },
56
56
  numberOfUnitsInBlock: {
57
- type: String,
58
- default: ""
57
+ type: Number,
58
+ default: null
59
59
  },
60
- aboveCommercial: {
61
- type: String,
62
- default: ""
60
+ isAboveCommercial: {
61
+ type: Boolean,
62
+ default: null
63
63
  },
64
64
  residentialNatureImpact: {
65
65
  type: String,
66
- default: ""
66
+ default: null
67
67
  },
68
68
  tenure: {
69
69
  type: String,
70
- default: ""
70
+ default: null
71
71
  },
72
- flyingFreehold: {
73
- type: String,
74
- default: ""
72
+ isFlyingFreehold: {
73
+ type: Boolean,
74
+ default: null
75
75
  },
76
76
  flyingFreeholdPercentage: {
77
- type: String,
78
- default: ""
77
+ type: Number,
78
+ default: null
79
79
  },
80
80
  maintenanceCharge: {
81
- type: String,
82
- default: ""
81
+ type: Number,
82
+ default: null
83
83
  },
84
84
  roadCharges: {
85
- type: String,
86
- default: ""
85
+ type: Number,
86
+ default: null
87
87
  },
88
88
  groundRent: {
89
- type: String,
90
- default: ""
89
+ type: Number,
90
+ default: null
91
91
  },
92
92
  remainingLeaseTermYears: {
93
- type: String,
94
- default: ""
93
+ type: Number,
94
+ default: null
95
95
  },
96
- partCommercialUse: {
97
- type: String,
98
- default: ""
96
+ isPartCommercialUse: {
97
+ type: Boolean,
98
+ default: null
99
99
  },
100
100
  commercialUsePercentage: {
101
- type: String,
102
- default: ""
101
+ type: Number,
102
+ default: null
103
103
  },
104
- purchasedUnderSharedOwnership: {
105
- type: String,
106
- default: ""
104
+ isPurchasedUnderSharedOwnership: {
105
+ type: Boolean,
106
+ default: null
107
107
  },
108
108
  yearBuilt: {
109
- type: String,
110
- default: ""
109
+ type: Number,
110
+ default: null
111
111
  }
112
112
  });
113
113
  const accommodationSchema = new mongoose.Schema({
114
114
  hall: {
115
- type: String,
116
- default: ""
115
+ type: Number,
116
+ default: null
117
117
  },
118
118
  livingRooms: {
119
- type: String,
120
- default: ""
119
+ type: Number,
120
+ default: null
121
121
  },
122
122
  kitchen: {
123
- type: String,
124
- default: ""
123
+ type: Number,
124
+ default: null
125
125
  },
126
- lift: {
127
- type: String,
128
- default: ""
126
+ isLiftPresent: {
127
+ type: Boolean,
128
+ default: null
129
129
  },
130
130
  utility: {
131
- type: String,
132
- default: ""
131
+ type: Number,
132
+ default: null
133
133
  },
134
134
  bedrooms: {
135
- type: String,
136
- default: ""
135
+ type: Number,
136
+ default: null
137
137
  },
138
138
  bathrooms: {
139
- type: String,
140
- default: ""
139
+ type: Number,
140
+ default: null
141
141
  },
142
142
  separateWc: {
143
- type: String,
144
- default: ""
143
+ type: Number,
144
+ default: null
145
145
  },
146
146
  basement: {
147
- type: String,
148
- default: ""
147
+ type: Number,
148
+ default: null
149
149
  },
150
150
  garage: {
151
- type: String,
152
- default: ""
151
+ type: Number,
152
+ default: null
153
153
  },
154
154
  parking: {
155
- type: String,
156
- default: ""
155
+ type: Number,
156
+ default: null
157
157
  },
158
158
  gardens: {
159
- type: String,
160
- default: ""
159
+ type: Boolean,
160
+ default: null
161
161
  },
162
- privateOrCommunal: {
163
- type: String,
164
- default: ""
162
+ isPrivate: {
163
+ type: Boolean,
164
+ default: null
165
+ },
166
+ isCommunal: {
167
+ type: Boolean,
168
+ default: null
165
169
  },
166
170
  numberOfOutbuildings: {
167
- type: String,
168
- default: ""
171
+ type: Number,
172
+ default: null
169
173
  },
170
174
  outbuildingDetails: {
171
175
  type: String,
172
- default: ""
176
+ default: null
173
177
  },
174
178
  grossFloorAreaOfDwelling: {
175
- type: String,
176
- default: ""
179
+ type: Number,
180
+ default: null
177
181
  }
178
182
  });
179
183
  const newBuildSchema = new mongoose.Schema({
180
184
  isNewBuildOrRecentlyConverted: {
181
- type: String,
182
- default: ""
185
+ type: Boolean,
186
+ default: null
183
187
  },
184
- newBuildStatus: {
185
- type: String,
186
- default: ""
188
+ isCompleted: {
189
+ type: Boolean,
190
+ default: null
191
+ },
192
+ isUnderConstruction: {
193
+ type: Boolean,
194
+ default: null
187
195
  },
188
196
  isFinalInspectionRequired: {
189
- type: String,
190
- default: ""
197
+ type: Boolean,
198
+ default: null
191
199
  },
192
- hasNhbcCert: {
193
- type: String,
194
- default: ""
200
+ isNhbcCert: {
201
+ type: Boolean,
202
+ default: null
195
203
  },
196
- hasBuildZone: {
197
- type: String,
198
- default: ""
204
+ isBuildZone: {
205
+ type: Boolean,
206
+ default: null
199
207
  },
200
- hasPremier: {
201
- type: String,
202
- default: ""
208
+ isPremier: {
209
+ type: Boolean,
210
+ default: null
203
211
  },
204
- hasProfessionalConsultant: {
205
- type: String,
206
- default: ""
212
+ isProfessionalConsultant: {
213
+ type: Boolean,
214
+ default: null
215
+ },
216
+ isOtherCert: {
217
+ type: Boolean,
218
+ default: null
207
219
  },
208
220
  otherCertDetails: {
209
221
  type: String,
210
- default: ""
222
+ default: null
211
223
  },
212
224
  isSelfBuildProject: {
213
- type: String,
214
- default: ""
225
+ type: Boolean,
226
+ default: null
215
227
  },
216
- involvesPartExchange: {
217
- type: String,
218
- default: ""
228
+ isInvolvesPartExchange: {
229
+ type: Boolean,
230
+ default: null
219
231
  },
220
- disclosureOfIncentivesSeen: {
221
- type: String,
222
- default: ""
232
+ isDisclosureOfIncentivesSeen: {
233
+ type: Boolean,
234
+ default: null
223
235
  },
224
236
  incentivesDetails: {
225
237
  type: String,
226
- default: ""
238
+ default: null
227
239
  },
228
240
  newBuildDeveloperName: {
229
241
  type: String,
230
- default: ""
242
+ default: null
231
243
  }
232
244
  });
233
245
  const currentOccupencySchema = new mongoose.Schema({
234
- everOccupied: {
235
- type: String,
236
- default: ""
246
+ isEverOccupied: {
247
+ type: Boolean,
248
+ default: null
237
249
  },
238
250
  numberOfAdultsInProperty: {
239
- type: String,
240
- default: ""
251
+ type: Number,
252
+ default: null
241
253
  },
242
254
  isHmoOrMultiUnitFreeholdBlock: {
243
- type: String,
244
- default: ""
255
+ type: Boolean,
256
+ default: null
245
257
  },
246
258
  isCurrentlyTenanted: {
247
- type: String,
248
- default: ""
259
+ type: Boolean,
260
+ default: null
249
261
  },
250
262
  hmoOrMultiUnitDetails: {
251
263
  type: String,
252
- default: ""
264
+ default: null
253
265
  },
254
266
  });
255
267
  const constructionSchema = new mongoose.Schema({
256
268
  isStandardConstruction: {
257
- type: String,
258
- default: ""
269
+ type: Boolean,
270
+ default: null
259
271
  },
260
272
  nonStandardConstructionType: {
261
273
  type: String,
262
- default: ""
274
+ default: null
263
275
  },
264
276
  mainWalls: {
265
277
  type: String,
266
- default: ""
278
+ default: null
267
279
  },
268
280
  mainRoof: {
269
281
  type: String,
270
- default: ""
282
+ default: null
271
283
  },
272
284
  garageConstruction: {
273
285
  type: String,
274
- default: ""
286
+ default: null
275
287
  },
276
288
  outbuildingsConstruction: {
277
289
  type: String,
278
- default: ""
290
+ default: null
279
291
  },
280
- hasAlterationsOrExtensions: {
281
- type: String,
282
- default: ""
292
+ isHasAlterationsOrExtensions: {
293
+ type: Boolean,
294
+ default: null
283
295
  },
284
- alterationsRequireConsents: {
285
- type: String,
286
- default: ""
296
+ isAlterationsRequireConsents: {
297
+ type: Boolean,
298
+ default: null
287
299
  },
288
300
  alterationsAge: {
289
- type: String,
290
- default: ""
301
+ type: Number,
302
+ default: null
291
303
  }
292
304
  });
293
305
  const localityAndDemandSchema = new mongoose.Schema({
294
- locationType: {
295
- type: String,
296
- default: ""
297
- },
298
- marketAppeal: {
299
- type: String,
300
- default: ""
301
- },
302
- surroundingProperties: {
303
- type: String,
304
- default: ""
305
- },
306
- propertyPricesTrend: {
307
- type: String,
308
- default: ""
309
- },
310
- demandTrend: {
311
- type: String,
312
- default: ""
313
- },
314
- affectedByCompulsoryPurchase: {
315
- type: String,
316
- default: ""
306
+ // Location Type - Boolean fields
307
+ isUrban: {
308
+ type: Boolean,
309
+ default: null
310
+ },
311
+ isSuburban: {
312
+ type: Boolean,
313
+ default: null
314
+ },
315
+ isRural: {
316
+ type: Boolean,
317
+ default: null
318
+ },
319
+ // Market Appeal - Boolean fields
320
+ isGoodMarketAppeal: {
321
+ type: Boolean,
322
+ default: null
323
+ },
324
+ isAverageMarketAppeal: {
325
+ type: Boolean,
326
+ default: null
327
+ },
328
+ isPoorMarketAppeal: {
329
+ type: Boolean,
330
+ default: null
331
+ },
332
+ // Surrounding Properties - Boolean fields
333
+ isSimilarProperties: {
334
+ type: Boolean,
335
+ default: null
336
+ },
337
+ isBetterProperties: {
338
+ type: Boolean,
339
+ default: null
340
+ },
341
+ isWorseProperties: {
342
+ type: Boolean,
343
+ default: null
344
+ },
345
+ // Property Prices Trend - Boolean fields
346
+ isPricesRising: {
347
+ type: Boolean,
348
+ default: null
349
+ },
350
+ isPricesStatic: {
351
+ type: Boolean,
352
+ default: null
353
+ },
354
+ isPricesFalling: {
355
+ type: Boolean,
356
+ default: null
357
+ },
358
+ // Demand Trend - Boolean fields
359
+ isDemandRising: {
360
+ type: Boolean,
361
+ default: null
362
+ },
363
+ isDemandStatic: {
364
+ type: Boolean,
365
+ default: null
366
+ },
367
+ isDemandFalling: {
368
+ type: Boolean,
369
+ default: null
370
+ },
371
+ isAffectedByCompulsoryPurchase: {
372
+ type: Boolean,
373
+ default: null
317
374
  },
318
375
  compulsoryPurchaseDetails: {
319
376
  type: String,
320
- default: ""
377
+ default: null
321
378
  },
322
- vacantOrBoardedPropertiesNearby: {
323
- type: String,
324
- default: ""
379
+ isVacantOrBoardedPropertiesNearby: {
380
+ type: Boolean,
381
+ default: null
325
382
  },
326
383
  vacantOrBoardedDetails: {
327
384
  type: String,
328
- default: ""
385
+ default: null
329
386
  },
330
- occupancyRestrictionPossible: {
331
- type: String,
332
- default: ""
387
+ isOccupancyRestrictionPossible: {
388
+ type: Boolean,
389
+ default: null
333
390
  },
334
391
  occupancyRestrictionDetails: {
335
392
  type: String,
336
- default: ""
393
+ default: null
337
394
  },
338
- closeToHighVoltageEquipment: {
339
- type: String,
340
- default: ""
395
+ isCloseToHighVoltageEquipment: {
396
+ type: Boolean,
397
+ default: null
341
398
  },
342
399
  highVoltageEquipmentDetails: {
343
400
  type: String,
344
- default: ""
401
+ default: null
345
402
  }
346
403
  });
347
404
  const servicesSchema = new mongoose.Schema({
348
- waterSupply: {
349
- type: String,
350
- default: ""
351
- },
352
- gasSupply: {
353
- type: String,
354
- default: ""
355
- },
356
- electricitySupply: {
357
- type: String,
358
- default: ""
359
- },
360
- centralHeating: {
361
- type: String,
362
- default: ""
405
+ // Water Supply - Boolean fields
406
+ isMainsWater: {
407
+ type: Boolean,
408
+ default: null
409
+ },
410
+ isPrivateWater: {
411
+ type: Boolean,
412
+ default: null
413
+ },
414
+ isUnknownWater: {
415
+ type: Boolean,
416
+ default: null
417
+ },
418
+ // Gas Supply - Boolean
419
+ isGasSupply: {
420
+ type: Boolean,
421
+ default: null
422
+ },
423
+ // Electricity Supply - Boolean
424
+ isElectricitySupply: {
425
+ type: Boolean,
426
+ default: null
427
+ },
428
+ // Central Heating - Boolean
429
+ isCentralHeating: {
430
+ type: Boolean,
431
+ default: null
363
432
  },
364
433
  centralHeatingType: {
365
434
  type: String,
366
- default: ""
435
+ default: null
367
436
  },
368
- mainDrainage: {
369
- type: String,
370
- default: ""
437
+ // Main Drainage - Boolean
438
+ isMainDrainage: {
439
+ type: Boolean,
440
+ default: null
371
441
  },
372
- septicTankPlant: {
373
- type: String,
374
- default: ""
442
+ // Septic Tank/Cesspit/Treatment Plant - Boolean
443
+ isSepticTankPlant: {
444
+ type: Boolean,
445
+ default: null
375
446
  },
376
- unknown: {
377
- type: String,
378
- default: ""
447
+ // Solar Panels - Boolean
448
+ isSolarPanels: {
449
+ type: Boolean,
450
+ default: null
379
451
  },
380
- solarPanels: {
381
- type: String,
382
- default: ""
452
+ // Shared Access - Boolean
453
+ isSharedAccess: {
454
+ type: Boolean,
455
+ default: null
383
456
  },
384
- sharedAccess: {
385
- type: String,
386
- default: ""
457
+ // Road Adopted - Boolean
458
+ isRoadAdopted: {
459
+ type: Boolean,
460
+ default: null
387
461
  },
388
- roadAdopted: {
389
- type: String,
390
- default: ""
391
- },
392
- hasEasementsOrRightsOfWay: {
393
- type: String,
394
- default: ""
462
+ isHasEasementsOrRightsOfWay: {
463
+ type: Boolean,
464
+ default: null
395
465
  },
396
466
  easementsOrRightsDetails: {
397
467
  type: String,
398
- default: ""
468
+ default: null
399
469
  },
400
470
  servicesSeparateForFlats: {
401
471
  type: String,
@@ -409,277 +479,277 @@ const servicesSchema = new mongoose.Schema({
409
479
  const energyEfficiencySchema = new mongoose.Schema({
410
480
  epcRating: {
411
481
  type: String,
412
- default: ""
482
+ default: null
413
483
  },
414
484
  epcScore: {
415
- type: String,
416
- default: ""
485
+ type: Number,
486
+ default: null
417
487
  }
418
488
  });
419
489
  const essentialRepairsSchema = new mongoose.Schema({
420
- essentialRepairsRequired: {
421
- type: String,
422
- default: ""
490
+ isEssentialRepairsRequired: {
491
+ type: Boolean,
492
+ default: null
423
493
  },
424
494
  essentialRepairsDetails: {
425
495
  type: String,
426
- default: ""
496
+ default: null
427
497
  },
428
- reinspectionRequired: {
429
- type: String,
430
- default: ""
498
+ isReinspectionRequired: {
499
+ type: Boolean,
500
+ default: null
431
501
  }
432
502
  });
433
503
  const reportsSchema = new mongoose.Schema({
434
- timberDamp: {
435
- type: String,
436
- default: ""
504
+ isTimberDamp: {
505
+ type: Boolean,
506
+ default: null
437
507
  },
438
- mining: {
439
- type: String,
440
- default: ""
508
+ isMining: {
509
+ type: Boolean,
510
+ default: null
441
511
  },
442
- electrical: {
443
- type: String,
444
- default: ""
512
+ isElectrical: {
513
+ type: Boolean,
514
+ default: null
445
515
  },
446
- drains: {
447
- type: String,
448
- default: ""
516
+ isDrains: {
517
+ type: Boolean,
518
+ default: null
449
519
  },
450
- structuralEngineers: {
451
- type: String,
452
- default: ""
520
+ isStructuralEngineers: {
521
+ type: Boolean,
522
+ default: null
453
523
  },
454
- arboricultural: {
455
- type: String,
456
- default: ""
524
+ isArboricultural: {
525
+ type: Boolean,
526
+ default: null
457
527
  },
458
- mundic: {
459
- type: String,
460
- default: ""
528
+ isMundic: {
529
+ type: Boolean,
530
+ default: null
461
531
  },
462
- wallTies: {
463
- type: String,
464
- default: ""
532
+ isWallTies: {
533
+ type: Boolean,
534
+ default: null
465
535
  },
466
- roof: {
467
- type: String,
468
- default: ""
536
+ isRoof: {
537
+ type: Boolean,
538
+ default: null
469
539
  },
470
- metalliferous: {
471
- type: String,
472
- default: ""
540
+ isMetalliferous: {
541
+ type: Boolean,
542
+ default: null
473
543
  },
474
- sulfateRedAsh: {
475
- type: String,
476
- default: ""
544
+ isSulfateRedAsh: {
545
+ type: Boolean,
546
+ default: null
477
547
  },
478
- other: {
479
- type: String,
480
- default: ""
548
+ isOtherReport: {
549
+ type: Boolean,
550
+ default: null
481
551
  },
482
552
  otherReportDetails: {
483
553
  type: String,
484
- default: ""
554
+ default: null
485
555
  }
486
556
  });
487
557
  const propertyProneToSchema = new mongoose.Schema({
488
558
  flooding: {
489
- type: String,
490
- default: ""
559
+ type: Boolean,
560
+ default: null
491
561
  },
492
562
  subsidence: {
493
- type: String,
494
- default: ""
563
+ type: Boolean,
564
+ default: null
495
565
  },
496
566
  heave: {
497
- type: String,
498
- default: ""
567
+ type: Boolean,
568
+ default: null
499
569
  },
500
570
  landslip: {
501
- type: String,
502
- default: ""
571
+ type: Boolean,
572
+ default: null
503
573
  },
504
574
  details: {
505
575
  type: String,
506
- default: ""
576
+ default: null
507
577
  }
508
578
  });
509
579
  const conditionsOfPropertySchema = new mongoose.Schema({
510
- structuralMovement: {
511
- type: String,
512
- default: ""
580
+ isStructuralMovement: {
581
+ type: Boolean,
582
+ default: null
513
583
  },
514
- structuralMovementHistoricOrNonProgressive: {
515
- type: String,
516
- default: ""
584
+ isStructuralMovementHistoricOrNonProgressive: {
585
+ type: Boolean,
586
+ default: null
517
587
  },
518
588
  structuralMovementDetails: {
519
589
  type: String,
520
590
  default: ""
521
591
  },
522
- structuralModifications: {
523
- type: String,
524
- default: ""
592
+ isStructuralModifications: {
593
+ type: Boolean,
594
+ default: null
525
595
  },
526
596
  structuralModificationsDetails: {
527
597
  type: String,
528
- default: ""
598
+ default: null
529
599
  },
530
600
  communalAreasMaintained: {
531
601
  type: String,
532
- default: ""
602
+ default: null
533
603
  },
534
604
  propertyProneTo: [propertyProneToSchema],
535
- plotBoundariesDefinedUnderPointFourHectares: {
536
- type: String,
537
- default: ""
605
+ isPlotBoundariesDefinedUnderPointFourHectares: {
606
+ type: Boolean,
607
+ default: null
538
608
  },
539
- treesWithinInfluencingDistance: {
540
- type: String,
541
- default: ""
609
+ isTreesWithinInfluencingDistance: {
610
+ type: Boolean,
611
+ default: null
542
612
  },
543
613
  treesInfluenceDetails: {
544
614
  type: String,
545
- default: ""
615
+ default: null
546
616
  },
547
- builtOnSteepSlope: {
548
- type: String,
549
- default: ""
617
+ isBuiltOnSteepSlope: {
618
+ type: Boolean,
619
+ default: null
550
620
  },
551
621
  steepSlopeDetails: {
552
622
  type: String,
553
- default: ""
623
+ default: null
554
624
  }
555
625
  });
556
626
  const rentalInformationSchema = new mongoose.Schema({
557
- rentalDemandInLocality: {
558
- type: String,
559
- default: ""
627
+ isRentalDemandInLocality: {
628
+ type: Boolean,
629
+ default: null
560
630
  },
561
631
  rentalDemandDetails: {
562
632
  type: String,
563
- default: ""
633
+ default: null
564
634
  },
565
635
  monthlyMarketRentPresentCondition: {
566
- type: String,
567
- default: ""
636
+ type: Number,
637
+ default: null
568
638
  },
569
639
  monthlyMarketRentImprovedCondition: {
570
- type: String,
571
- default: ""
640
+ type: Number,
641
+ default: null
572
642
  },
573
- otherLettingDemandFactors: {
574
- type: String,
575
- default: ""
643
+ isOtherLettingDemandFactors: {
644
+ type: Boolean,
645
+ default: null
576
646
  },
577
647
  otherLettingDemandDetails: {
578
648
  type: String,
579
- default: ""
649
+ default: null
580
650
  },
581
651
  investorOnlyDemand: {
582
- type: String,
583
- default: ""
652
+ type: Boolean,
653
+ default: null
584
654
  },
585
655
  investorOnlyDemandDetails: {
586
656
  type: String,
587
- default: ""
657
+ default: null
588
658
  }
589
659
  });
590
660
  const valuationForFinancePurposeSchema = new mongoose.Schema({
591
661
  valuationComparativeOnly: {
592
662
  type: String,
593
- default: ""
663
+ default: null
594
664
  },
595
- suitableForFinance: {
596
- type: String,
597
- default: ""
665
+ isSuitableForFinance: {
666
+ type: Boolean,
667
+ default: null
598
668
  },
599
669
  financeSuitabilityDetails: {
600
670
  type: String,
601
671
  default: ""
602
672
  },
603
673
  marketValuePresentCondition: {
604
- type: String,
605
- default: ""
674
+ type: Number,
675
+ default: null
606
676
  },
607
677
  marketValueAfterRepairs: {
608
- type: String,
609
- default: ""
678
+ type: Number,
679
+ default: null
610
680
  },
611
681
  purchasePriceOrBorrowerEstimate: {
612
- type: String,
613
- default: ""
682
+ type: Number,
683
+ default: null
614
684
  },
615
685
  buildingInsuranceReinstatementCost: {
616
- type: String,
617
- default: ""
686
+ type: Number,
687
+ default: null
618
688
  },
619
- insurancePremiumLoadingRisk: {
620
- type: String,
621
- default: ""
689
+ isInsurancePremiumLoadingRisk: {
690
+ type: Boolean,
691
+ default: null
622
692
  },
623
693
  insurancePremiumLoadingDetails: {
624
694
  type: String,
625
- default: ""
695
+ default: null
626
696
  }
627
697
  });
628
698
  const valuerQualificationsSchema = new mongoose.Schema({
629
699
  mrics: {
630
- type: String,
631
- default: ""
700
+ type: Boolean,
701
+ default: null
632
702
  },
633
703
  frics: {
634
- type: String,
635
- default: ""
704
+ type: Boolean,
705
+ default: null
636
706
  },
637
707
  assocRics: {
638
- type: String,
639
- default: ""
708
+ type: Boolean,
709
+ default: null
640
710
  }
641
711
  });
642
712
  const valuersDeclarationSchema = new mongoose.Schema({
643
713
  valuerSignature: {
644
- type: String,
645
- default: ""
714
+ type: Number,
715
+ default: null
646
716
  },
647
717
  valuerName: {
648
718
  type: String,
649
- default: ""
719
+ default: null
650
720
  },
651
721
  onBehalfOf: {
652
722
  type: String,
653
- default: ""
723
+ default: null
654
724
  },
655
725
  telephone: {
656
- type: String,
657
- default: ""
726
+ type: Number,
727
+ default: null
658
728
  },
659
729
  fax: {
660
- type: String,
661
- default: ""
730
+ type: Number,
731
+ default: null
662
732
  },
663
733
  email: {
664
734
  type: String,
665
- default: ""
735
+ default: null
666
736
  },
667
737
  valuerQualifications: [valuerQualificationsSchema],
668
738
  ricsNumber: {
669
- type: String,
670
- default: ""
739
+ type: Number,
740
+ default: null
671
741
  },
672
742
  valuerAddress: {
673
743
  type: String,
674
- default: ""
744
+ default: null
675
745
  },
676
746
  valuerPostcode: {
677
747
  type: String,
678
- default: ""
748
+ default: null
679
749
  },
680
750
  reportDate: {
681
- type: String,
682
- default: ""
751
+ type: Number,
752
+ default: null
683
753
  }
684
754
  });
685
755
  const valuationReportSchema = new mongoose.Schema({