Diff to HTML by rtfpessoa

Files changed (9) hide show
  1. CompetencyAssessmentModels/CompetencyAssessmentDbContext.cs +67 -17
  2. CompetencyAssessmentModels/PostTestScore.cs +5 -0
  3. CompetencyAssessmentModels/PreTestScore.cs +5 -0
  4. CompetencyAssessmentModels/Test.cs +15 -0
  5. Controllers/ReportsController.cs +50 -96
  6. Controllers/TestsController.cs +56 -128
  7. Controllers/TraineesController.cs +122 -221
  8. Controllers/TrainsController.cs +12 -8
  9. Program.cs +257 -416
CompetencyAssessmentModels/CompetencyAssessmentDbContext.cs CHANGED
@@ -34,7 +34,7 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
34
  if (!optionsBuilder.IsConfigured)
35
  {
36
  #warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
37
- optionsBuilder.UseMySql("server=localhost;port=3306;user=root;password=53276464;database=CompetencyAssessment", Microsoft.EntityFrameworkCore.ServerVersion.Parse("11.3.2-mariadb"));
38
  }
39
  }
40
 
@@ -127,8 +127,18 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
127
 
128
  entity.Property(e => e.Score15).HasPrecision(9, 6);
129
 
 
 
 
 
 
 
 
 
130
  entity.Property(e => e.Score2).HasPrecision(9, 6);
131
 
 
 
132
  entity.Property(e => e.Score3).HasPrecision(9, 6);
133
 
134
  entity.Property(e => e.Score4).HasPrecision(9, 6);
@@ -190,8 +200,18 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
190
 
191
  entity.Property(e => e.Score15).HasPrecision(9, 6);
192
 
 
 
 
 
 
 
 
 
193
  entity.Property(e => e.Score2).HasPrecision(9, 6);
194
 
 
 
195
  entity.Property(e => e.Score3).HasPrecision(9, 6);
196
 
197
  entity.Property(e => e.Score4).HasPrecision(9, 6);
@@ -229,41 +249,51 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
229
 
230
  entity.Property(e => e.Id).HasColumnType("int(10) unsigned");
231
 
232
- entity.Property(e => e.Competency1).HasMaxLength(500);
 
 
 
 
 
 
233
 
234
- entity.Property(e => e.Competency10).HasMaxLength(500);
235
 
236
- entity.Property(e => e.Competency11).HasMaxLength(500);
237
 
238
- entity.Property(e => e.Competency12).HasMaxLength(500);
239
 
240
- entity.Property(e => e.Competency13).HasMaxLength(500);
241
 
242
- entity.Property(e => e.Competency14).HasMaxLength(500);
243
 
244
- entity.Property(e => e.Competency15).HasMaxLength(500);
245
 
246
- entity.Property(e => e.Competency2).HasMaxLength(500);
247
 
248
- entity.Property(e => e.Competency3).HasMaxLength(500);
249
 
250
- entity.Property(e => e.Competency4).HasMaxLength(500);
251
 
252
- entity.Property(e => e.Competency5).HasMaxLength(500);
253
 
254
- entity.Property(e => e.Competency6).HasMaxLength(500);
255
 
256
- entity.Property(e => e.Competency7).HasMaxLength(500);
257
 
258
- entity.Property(e => e.Competency8).HasMaxLength(500);
259
 
260
- entity.Property(e => e.Competency9).HasMaxLength(500);
 
 
 
 
261
 
262
  entity.Property(e => e.CreateDate).HasColumnType("datetime");
263
 
264
  entity.Property(e => e.Duration).HasColumnType("tinyint(3) unsigned");
265
 
266
- entity.Property(e => e.Instruction).HasMaxLength(500);
267
 
268
  entity.Property(e => e.MinSources).HasColumnType("tinyint(3) unsigned");
269
 
@@ -285,8 +315,18 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
285
 
286
  entity.Property(e => e.Recommendation15).HasMaxLength(500);
287
 
 
 
 
 
 
 
 
 
288
  entity.Property(e => e.Recommendation2).HasMaxLength(500);
289
 
 
 
290
  entity.Property(e => e.Recommendation3).HasMaxLength(500);
291
 
292
  entity.Property(e => e.Recommendation4).HasMaxLength(500);
@@ -315,8 +355,18 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
315
 
316
  entity.Property(e => e.Threshold15).HasPrecision(9, 6);
317
 
 
 
 
 
 
 
 
 
318
  entity.Property(e => e.Threshold2).HasPrecision(9, 6);
319
 
 
 
320
  entity.Property(e => e.Threshold3).HasPrecision(9, 6);
321
 
322
  entity.Property(e => e.Threshold4).HasPrecision(9, 6);
 
34
  if (!optionsBuilder.IsConfigured)
35
  {
36
  #warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
37
+ optionsBuilder.UseMySql("server=localhost;port=3306;user=root;password=53276464;database=CompetencyAssessment", Microsoft.EntityFrameworkCore.ServerVersion.Parse("10.6.22-mariadb"));
38
  }
39
  }
40
 
 
127
 
128
  entity.Property(e => e.Score15).HasPrecision(9, 6);
129
 
130
+ entity.Property(e => e.Score16).HasPrecision(9, 6);
131
+
132
+ entity.Property(e => e.Score17).HasPrecision(9, 6);
133
+
134
+ entity.Property(e => e.Score18).HasPrecision(9, 6);
135
+
136
+ entity.Property(e => e.Score19).HasPrecision(9, 6);
137
+
138
  entity.Property(e => e.Score2).HasPrecision(9, 6);
139
 
140
+ entity.Property(e => e.Score20).HasPrecision(9, 6);
141
+
142
  entity.Property(e => e.Score3).HasPrecision(9, 6);
143
 
144
  entity.Property(e => e.Score4).HasPrecision(9, 6);
 
200
 
201
  entity.Property(e => e.Score15).HasPrecision(9, 6);
202
 
203
+ entity.Property(e => e.Score16).HasPrecision(9, 6);
204
+
205
+ entity.Property(e => e.Score17).HasPrecision(9, 6);
206
+
207
+ entity.Property(e => e.Score18).HasPrecision(9, 6);
208
+
209
+ entity.Property(e => e.Score19).HasPrecision(9, 6);
210
+
211
  entity.Property(e => e.Score2).HasPrecision(9, 6);
212
 
213
+ entity.Property(e => e.Score20).HasPrecision(9, 6);
214
+
215
  entity.Property(e => e.Score3).HasPrecision(9, 6);
216
 
217
  entity.Property(e => e.Score4).HasPrecision(9, 6);
 
249
 
250
  entity.Property(e => e.Id).HasColumnType("int(10) unsigned");
251
 
252
+ entity.Property(e => e.Competency1).HasMaxLength(400);
253
+
254
+ entity.Property(e => e.Competency10).HasMaxLength(400);
255
+
256
+ entity.Property(e => e.Competency11).HasMaxLength(400);
257
+
258
+ entity.Property(e => e.Competency12).HasMaxLength(400);
259
 
260
+ entity.Property(e => e.Competency13).HasMaxLength(400);
261
 
262
+ entity.Property(e => e.Competency14).HasMaxLength(400);
263
 
264
+ entity.Property(e => e.Competency15).HasMaxLength(400);
265
 
266
+ entity.Property(e => e.Competency16).HasColumnType("text");
267
 
268
+ entity.Property(e => e.Competency17).HasColumnType("text");
269
 
270
+ entity.Property(e => e.Competency18).HasColumnType("text");
271
 
272
+ entity.Property(e => e.Competency19).HasColumnType("text");
273
 
274
+ entity.Property(e => e.Competency2).HasMaxLength(400);
275
 
276
+ entity.Property(e => e.Competency20).HasColumnType("text");
277
 
278
+ entity.Property(e => e.Competency3).HasMaxLength(400);
279
 
280
+ entity.Property(e => e.Competency4).HasMaxLength(400);
281
 
282
+ entity.Property(e => e.Competency5).HasMaxLength(400);
283
 
284
+ entity.Property(e => e.Competency6).HasMaxLength(400);
285
 
286
+ entity.Property(e => e.Competency7).HasMaxLength(400);
287
+
288
+ entity.Property(e => e.Competency8).HasMaxLength(400);
289
+
290
+ entity.Property(e => e.Competency9).HasMaxLength(400);
291
 
292
  entity.Property(e => e.CreateDate).HasColumnType("datetime");
293
 
294
  entity.Property(e => e.Duration).HasColumnType("tinyint(3) unsigned");
295
 
296
+ entity.Property(e => e.Instruction).HasMaxLength(2000);
297
 
298
  entity.Property(e => e.MinSources).HasColumnType("tinyint(3) unsigned");
299
 
 
315
 
316
  entity.Property(e => e.Recommendation15).HasMaxLength(500);
317
 
318
+ entity.Property(e => e.Recommendation16).HasPrecision(9, 6);
319
+
320
+ entity.Property(e => e.Recommendation17).HasPrecision(9, 6);
321
+
322
+ entity.Property(e => e.Recommendation18).HasPrecision(9, 6);
323
+
324
+ entity.Property(e => e.Recommendation19).HasPrecision(9, 6);
325
+
326
  entity.Property(e => e.Recommendation2).HasMaxLength(500);
327
 
328
+ entity.Property(e => e.Recommendation20).HasPrecision(9, 6);
329
+
330
  entity.Property(e => e.Recommendation3).HasMaxLength(500);
331
 
332
  entity.Property(e => e.Recommendation4).HasMaxLength(500);
 
355
 
356
  entity.Property(e => e.Threshold15).HasPrecision(9, 6);
357
 
358
+ entity.Property(e => e.Threshold16).HasColumnType("text");
359
+
360
+ entity.Property(e => e.Threshold17).HasColumnType("text");
361
+
362
+ entity.Property(e => e.Threshold18).HasColumnType("text");
363
+
364
+ entity.Property(e => e.Threshold19).HasColumnType("text");
365
+
366
  entity.Property(e => e.Threshold2).HasPrecision(9, 6);
367
 
368
+ entity.Property(e => e.Threshold20).HasColumnType("text");
369
+
370
  entity.Property(e => e.Threshold3).HasPrecision(9, 6);
371
 
372
  entity.Property(e => e.Threshold4).HasPrecision(9, 6);
CompetencyAssessmentModels/PostTestScore.cs CHANGED
@@ -25,6 +25,11 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
25
  public decimal? Score13 { get; set; }
26
  public decimal? Score14 { get; set; }
27
  public decimal? Score15 { get; set; }
 
 
 
 
 
28
  public decimal TotalScore { get; set; }
29
  public DateTime CreateDate { get; set; }
30
 
 
25
  public decimal? Score13 { get; set; }
26
  public decimal? Score14 { get; set; }
27
  public decimal? Score15 { get; set; }
28
+ public decimal? Score16 { get; set; }
29
+ public decimal? Score17 { get; set; }
30
+ public decimal? Score18 { get; set; }
31
+ public decimal? Score19 { get; set; }
32
+ public decimal? Score20 { get; set; }
33
  public decimal TotalScore { get; set; }
34
  public DateTime CreateDate { get; set; }
35
 
CompetencyAssessmentModels/PreTestScore.cs CHANGED
@@ -25,6 +25,11 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
25
  public decimal? Score13 { get; set; }
26
  public decimal? Score14 { get; set; }
27
  public decimal? Score15 { get; set; }
 
 
 
 
 
28
  public decimal TotalScore { get; set; }
29
  public DateTime CreateDate { get; set; }
30
 
 
25
  public decimal? Score13 { get; set; }
26
  public decimal? Score14 { get; set; }
27
  public decimal? Score15 { get; set; }
28
+ public decimal? Score16 { get; set; }
29
+ public decimal? Score17 { get; set; }
30
+ public decimal? Score18 { get; set; }
31
+ public decimal? Score19 { get; set; }
32
+ public decimal? Score20 { get; set; }
33
  public decimal TotalScore { get; set; }
34
  public DateTime CreateDate { get; set; }
35
 
CompetencyAssessmentModels/Test.cs CHANGED
@@ -62,6 +62,21 @@ namespace CompetencyAssessment.CompetencyAssessmentModels
62
  public string? Competency15 { get; set; }
63
  public decimal? Threshold15 { get; set; }
64
  public string? Recommendation15 { get; set; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  public uint UserId { get; set; }
66
  public DateTime CreateDate { get; set; }
67
 
 
62
  public string? Competency15 { get; set; }
63
  public decimal? Threshold15 { get; set; }
64
  public string? Recommendation15 { get; set; }
65
+ public string? Competency16 { get; set; }
66
+ public string? Threshold16 { get; set; }
67
+ public decimal? Recommendation16 { get; set; }
68
+ public string? Competency17 { get; set; }
69
+ public string? Threshold17 { get; set; }
70
+ public decimal? Recommendation17 { get; set; }
71
+ public string? Competency18 { get; set; }
72
+ public string? Threshold18 { get; set; }
73
+ public decimal? Recommendation18 { get; set; }
74
+ public string? Competency19 { get; set; }
75
+ public string? Threshold19 { get; set; }
76
+ public decimal? Recommendation19 { get; set; }
77
+ public string? Competency20 { get; set; }
78
+ public string? Threshold20 { get; set; }
79
+ public decimal? Recommendation20 { get; set; }
80
  public uint UserId { get; set; }
81
  public DateTime CreateDate { get; set; }
82
 
Controllers/ReportsController.cs CHANGED
@@ -141,23 +141,15 @@ public class ReportsController : ControllerBase
141
  var test = db.Test.Find(train.TestId);
142
  if (test == null) return NotFound();
143
 
144
- List<string> Competencies = new List<string>();
145
 
146
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
147
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
148
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
149
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
150
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
151
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
152
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
153
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
154
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
155
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
156
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
157
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
158
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
159
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
160
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
161
 
162
  var trainees = from x in db.Trainee
163
  join y in db.Department on x.DepartmentId equals y.Id
@@ -237,23 +229,16 @@ public class ReportsController : ControllerBase
237
  var test = db.Test.Find(train.TestId);
238
  if (test == null) return NotFound();
239
 
240
- List<string> Competencies = new List<string>();
241
 
242
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
243
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
244
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
245
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
246
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
247
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
248
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
249
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
250
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
251
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
252
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
253
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
254
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
255
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
256
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
257
 
258
  var trainees = from x in db.Trainee
259
  join y in db.Department on x.DepartmentId equals y.Id
@@ -333,23 +318,16 @@ public class ReportsController : ControllerBase
333
  var test = db.Test.Find(train.TestId);
334
  if (test == null) return NotFound();
335
 
336
- List<string> Competencies = new List<string>();
337
 
338
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
339
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
340
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
341
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
342
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
343
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
344
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
345
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
346
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
347
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
348
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
349
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
350
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
351
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
352
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
353
 
354
  var trainees = from x in db.Trainee
355
  join y in db.Department on x.DepartmentId equals y.Id
@@ -412,23 +390,15 @@ public class ReportsController : ControllerBase
412
  var test = db.Test.Find(train.TestId);
413
  if (test == null) return NotFound();
414
 
415
- List<string> Competencies = new List<string>();
416
 
417
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
418
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
419
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
420
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
421
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
422
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
423
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
424
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
425
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
426
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
427
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
428
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
429
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
430
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
431
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
432
 
433
  var trainees = from x in db.Trainee
434
  join y in db.Department on x.DepartmentId equals y.Id
@@ -491,23 +461,15 @@ public class ReportsController : ControllerBase
491
  var test = db.Test.Find(train.TestId);
492
  if (test == null) return NotFound();
493
 
494
- List<string> Competencies = new List<string>();
495
 
496
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
497
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
498
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
499
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
500
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
501
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
502
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
503
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
504
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
505
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
506
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
507
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
508
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
509
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
510
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
511
 
512
  var trainees = from x in db.Trainee
513
  join y in db.Department on x.DepartmentId equals y.Id
@@ -570,23 +532,15 @@ public class ReportsController : ControllerBase
570
  var test = db.Test.Find(train.TestId);
571
  if (test == null) return NotFound();
572
 
573
- List<string> Competencies = new List<string>();
574
 
575
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
576
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
577
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
578
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
579
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
580
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
581
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
582
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
583
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
584
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
585
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
586
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
587
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
588
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
589
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
590
 
591
  var trainees = from x in db.Trainee
592
  join y in db.Department on x.DepartmentId equals y.Id
 
141
  var test = db.Test.Find(train.TestId);
142
  if (test == null) return NotFound();
143
 
144
+ List<string> Competencies = new List<string>(test.NumCompetencies);
145
 
146
+ for (int i = 0; i < test.NumCompetencies; i++)
147
+ {
148
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
149
+ string value = prop?.GetValue(test) as string ?? "";
150
+
151
+ Competencies.Add(value);
152
+ }
 
 
 
 
 
 
 
 
153
 
154
  var trainees = from x in db.Trainee
155
  join y in db.Department on x.DepartmentId equals y.Id
 
229
  var test = db.Test.Find(train.TestId);
230
  if (test == null) return NotFound();
231
 
232
+ List<string> Competencies = new List<string>(test.NumCompetencies);
233
 
234
+ for (int i = 0; i < test.NumCompetencies; i++)
235
+ {
236
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
237
+ string value = prop?.GetValue(test) as string ?? "";
238
+
239
+ Competencies.Add(value);
240
+ }
241
+
 
 
 
 
 
 
 
242
 
243
  var trainees = from x in db.Trainee
244
  join y in db.Department on x.DepartmentId equals y.Id
 
318
  var test = db.Test.Find(train.TestId);
319
  if (test == null) return NotFound();
320
 
321
+ List<string> Competencies = new List<string>(test.NumCompetencies);
322
 
323
+ for (int i = 0; i < test.NumCompetencies; i++)
324
+ {
325
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
326
+ string value = prop?.GetValue(test) as string ?? "";
327
+
328
+ Competencies.Add(value);
329
+ }
330
+
 
 
 
 
 
 
 
331
 
332
  var trainees = from x in db.Trainee
333
  join y in db.Department on x.DepartmentId equals y.Id
 
390
  var test = db.Test.Find(train.TestId);
391
  if (test == null) return NotFound();
392
 
393
+ List<string> Competencies = new List<string>(test.NumCompetencies);
394
 
395
+ for (int i = 0; i < test.NumCompetencies; i++)
396
+ {
397
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
398
+ string value = prop?.GetValue(test) as string ?? "";
399
+
400
+ Competencies.Add(value);
401
+ }
 
 
 
 
 
 
 
 
402
 
403
  var trainees = from x in db.Trainee
404
  join y in db.Department on x.DepartmentId equals y.Id
 
461
  var test = db.Test.Find(train.TestId);
462
  if (test == null) return NotFound();
463
 
464
+ List<string> Competencies = new List<string>(test.NumCompetencies);
465
 
466
+ for (int i = 0; i < test.NumCompetencies; i++)
467
+ {
468
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
469
+ string value = prop?.GetValue(test) as string ?? "";
470
+
471
+ Competencies.Add(value);
472
+ }
 
 
 
 
 
 
 
 
473
 
474
  var trainees = from x in db.Trainee
475
  join y in db.Department on x.DepartmentId equals y.Id
 
532
  var test = db.Test.Find(train.TestId);
533
  if (test == null) return NotFound();
534
 
535
+ List<string> Competencies = new List<string>(test.NumCompetencies);
536
 
537
+ for (int i = 0; i < test.NumCompetencies; i++)
538
+ {
539
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
540
+ string value = prop?.GetValue(test) as string ?? "";
541
+
542
+ Competencies.Add(value);
543
+ }
 
 
 
 
 
 
 
 
544
 
545
  var trainees = from x in db.Trainee
546
  join y in db.Department on x.DepartmentId equals y.Id
Controllers/TestsController.cs CHANGED
@@ -36,53 +36,24 @@ public class TestsController : ControllerBase
36
  t.NumCompetencies = p.NumCompetencies;
37
  t.MinSources = p.MinSources;
38
 
39
- t.Competency1 = p.Competencies[0];
40
- t.Competency2 = p.Competencies[1];
41
- t.Competency3 = p.Competencies[2];
42
- t.Competency4 = (p.NumCompetencies >= 4 ? p.Competencies[3] : null);
43
- t.Competency5 = (p.NumCompetencies >= 5 ? p.Competencies[4] : null);
44
- t.Competency6 = (p.NumCompetencies >= 6 ? p.Competencies[5] : null);
45
- t.Competency7 = (p.NumCompetencies >= 7 ? p.Competencies[6] : null);
46
- t.Competency8 = (p.NumCompetencies >= 8 ? p.Competencies[7] : null);
47
- t.Competency9 = (p.NumCompetencies >= 9 ? p.Competencies[8] : null);
48
- t.Competency10 = (p.NumCompetencies >= 10 ? p.Competencies[9] : null);
49
- t.Competency11 = (p.NumCompetencies >= 11 ? p.Competencies[10] : null);
50
- t.Competency12 = (p.NumCompetencies >= 12 ? p.Competencies[11] : null);
51
- t.Competency13 = (p.NumCompetencies >= 13 ? p.Competencies[12] : null);
52
- t.Competency14 = (p.NumCompetencies >= 14 ? p.Competencies[13] : null);
53
- t.Competency15 = (p.NumCompetencies >= 15 ? p.Competencies[14] : null);
54
-
55
- t.Threshold1 = p.Thresholds[0];
56
- t.Threshold2 = p.Thresholds[1];
57
- t.Threshold3 = p.Thresholds[2];
58
- t.Threshold4 = (p.NumCompetencies >= 4 ? p.Thresholds[3] : null);
59
- t.Threshold5 = (p.NumCompetencies >= 5 ? p.Thresholds[4] : null);
60
- t.Threshold6 = (p.NumCompetencies >= 6 ? p.Thresholds[5] : null);
61
- t.Threshold7 = (p.NumCompetencies >= 7 ? p.Thresholds[6] : null);
62
- t.Threshold8 = (p.NumCompetencies >= 8 ? p.Thresholds[7] : null);
63
- t.Threshold9 = (p.NumCompetencies >= 9 ? p.Thresholds[8] : null);
64
- t.Threshold10 = (p.NumCompetencies >= 10 ? p.Thresholds[9] : null);
65
- t.Threshold11 = (p.NumCompetencies >= 11 ? p.Thresholds[10] : null);
66
- t.Threshold12 = (p.NumCompetencies >= 12 ? p.Thresholds[11] : null);
67
- t.Threshold13 = (p.NumCompetencies >= 13 ? p.Thresholds[12] : null);
68
- t.Threshold14 = (p.NumCompetencies >= 14 ? p.Thresholds[13] : null);
69
- t.Threshold15 = (p.NumCompetencies >= 15 ? p.Thresholds[14] : null);
70
-
71
- t.Recommendation1 = p.Recommendations[0];
72
- t.Recommendation2 = p.Recommendations[1];
73
- t.Recommendation3 = p.Recommendations[2];
74
- t.Recommendation4 = (p.NumCompetencies >= 4 ? p.Recommendations[3] : null);
75
- t.Recommendation5 = (p.NumCompetencies >= 5 ? p.Recommendations[4] : null);
76
- t.Recommendation6 = (p.NumCompetencies >= 6 ? p.Recommendations[5] : null);
77
- t.Recommendation7 = (p.NumCompetencies >= 7 ? p.Recommendations[6] : null);
78
- t.Recommendation8 = (p.NumCompetencies >= 8 ? p.Recommendations[7] : null);
79
- t.Recommendation9 = (p.NumCompetencies >= 9 ? p.Recommendations[8] : null);
80
- t.Recommendation10 = (p.NumCompetencies >= 10 ? p.Recommendations[9] : null);
81
- t.Recommendation11 = (p.NumCompetencies >= 11 ? p.Recommendations[10] : null);
82
- t.Recommendation12 = (p.NumCompetencies >= 12 ? p.Recommendations[11] : null);
83
- t.Recommendation13 = (p.NumCompetencies >= 13 ? p.Recommendations[12] : null);
84
- t.Recommendation14 = (p.NumCompetencies >= 14 ? p.Recommendations[13] : null);
85
- t.Recommendation15 = (p.NumCompetencies >= 15 ? p.Recommendations[14] : null);
86
 
87
  t.UserId = Convert.ToUInt32(User.Identity.Name);
88
  t.CreateDate = DateTime.Now;
@@ -223,7 +194,7 @@ public class TestsController : ControllerBase
223
  x.Competency1, x.Competency2, x.Competency3, x.Competency4, x.Competency5,
224
  x.Competency6, x.Competency7, x.Competency8, x.Competency9, x.Competency10,
225
  x.Competency11, x.Competency12, x.Competency13, x.Competency14, x.Competency15),
226
- Threholds = Program.ListThreholds(x.NumCompetencies,
227
  x.Threshold1, x.Threshold2, x.Threshold3, x.Threshold4, x.Threshold5,
228
  x.Threshold6, x.Threshold7, x.Threshold8, x.Threshold9, x.Threshold10,
229
  x.Threshold11, x.Threshold12, x.Threshold13, x.Threshold14, x.Threshold15),
@@ -251,22 +222,15 @@ public class TestsController : ControllerBase
251
  var test = db.Test.Find(Id);
252
  if (test == null) return NotFound();
253
 
254
- List<string> Competencies = new List<string>();
255
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
256
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
257
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
258
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
259
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
260
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
261
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
262
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
263
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
264
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
265
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
266
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
267
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
268
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
269
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
270
 
271
  var items = from x in db.TestItem
272
  join y in db.TestCategory on x.TestCategoryId equals y.Id
@@ -318,7 +282,7 @@ public class TestsController : ControllerBase
318
  x.Competency1, x.Competency2, x.Competency3, x.Competency4, x.Competency5,
319
  x.Competency6, x.Competency7, x.Competency8, x.Competency9, x.Competency10,
320
  x.Competency11, x.Competency12, x.Competency13, x.Competency14, x.Competency15),
321
- Threholds = Program.ListThreholds(x.NumCompetencies,
322
  x.Threshold1, x.Threshold2, x.Threshold3, x.Threshold4, x.Threshold5,
323
  x.Threshold6, x.Threshold7, x.Threshold8, x.Threshold9, x.Threshold10,
324
  x.Threshold11, x.Threshold12, x.Threshold13, x.Threshold14, x.Threshold15),
@@ -346,22 +310,15 @@ public class TestsController : ControllerBase
346
  var test = db.Test.Find(Id1);
347
  if (test == null) return NotFound();
348
 
349
- List<string> Competencies = new List<string>();
350
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
351
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
352
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
353
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
354
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
355
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
356
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
357
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
358
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
359
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
360
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
361
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
362
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
363
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
364
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
365
 
366
  var item = (from x in db.TestItem
367
  join y in db.TestCategory on x.TestCategoryId equals y.Id
@@ -414,53 +371,24 @@ public class TestsController : ControllerBase
414
  t.NumCompetencies = p.NumCompetencies; // ???????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? test item
415
  t.MinSources = p.MinSources;
416
 
417
- t.Competency1 = p.Competencies[0];
418
- t.Competency2 = p.Competencies[1];
419
- t.Competency3 = p.Competencies[2];
420
- t.Competency4 = (p.NumCompetencies >= 4 ? p.Competencies[3] : null);
421
- t.Competency5 = (p.NumCompetencies >= 5 ? p.Competencies[4] : null);
422
- t.Competency6 = (p.NumCompetencies >= 6 ? p.Competencies[5] : null);
423
- t.Competency7 = (p.NumCompetencies >= 7 ? p.Competencies[6] : null);
424
- t.Competency8 = (p.NumCompetencies >= 8 ? p.Competencies[7] : null);
425
- t.Competency9 = (p.NumCompetencies >= 9 ? p.Competencies[8] : null);
426
- t.Competency10 = (p.NumCompetencies >= 10 ? p.Competencies[9] : null);
427
- t.Competency11 = (p.NumCompetencies >= 11 ? p.Competencies[10] : null);
428
- t.Competency12 = (p.NumCompetencies >= 12 ? p.Competencies[11] : null);
429
- t.Competency13 = (p.NumCompetencies >= 13 ? p.Competencies[12] : null);
430
- t.Competency14 = (p.NumCompetencies >= 14 ? p.Competencies[13] : null);
431
- t.Competency15 = (p.NumCompetencies >= 15 ? p.Competencies[14] : null);
432
-
433
- t.Threshold1 = p.Thresholds[0];
434
- t.Threshold2 = p.Thresholds[1];
435
- t.Threshold3 = p.Thresholds[2];
436
- t.Threshold4 = (p.NumCompetencies >= 4 ? p.Thresholds[3] : null);
437
- t.Threshold5 = (p.NumCompetencies >= 5 ? p.Thresholds[4] : null);
438
- t.Threshold6 = (p.NumCompetencies >= 6 ? p.Thresholds[5] : null);
439
- t.Threshold7 = (p.NumCompetencies >= 7 ? p.Thresholds[6] : null);
440
- t.Threshold8 = (p.NumCompetencies >= 8 ? p.Thresholds[7] : null);
441
- t.Threshold9 = (p.NumCompetencies >= 9 ? p.Thresholds[8] : null);
442
- t.Threshold10 = (p.NumCompetencies >= 10 ? p.Thresholds[9] : null);
443
- t.Threshold11 = (p.NumCompetencies >= 11 ? p.Thresholds[10] : null);
444
- t.Threshold12 = (p.NumCompetencies >= 12 ? p.Thresholds[11] : null);
445
- t.Threshold13 = (p.NumCompetencies >= 13 ? p.Thresholds[12] : null);
446
- t.Threshold14 = (p.NumCompetencies >= 14 ? p.Thresholds[13] : null);
447
- t.Threshold15 = (p.NumCompetencies >= 15 ? p.Thresholds[14] : null);
448
-
449
- t.Recommendation1 = p.Recommendations[0];
450
- t.Recommendation2 = p.Recommendations[1];
451
- t.Recommendation3 = p.Recommendations[2];
452
- t.Recommendation4 = (p.NumCompetencies >= 4 ? p.Recommendations[3] : null);
453
- t.Recommendation5 = (p.NumCompetencies >= 5 ? p.Recommendations[4] : null);
454
- t.Recommendation6 = (p.NumCompetencies >= 6 ? p.Recommendations[5] : null);
455
- t.Recommendation7 = (p.NumCompetencies >= 7 ? p.Recommendations[6] : null);
456
- t.Recommendation8 = (p.NumCompetencies >= 8 ? p.Recommendations[7] : null);
457
- t.Recommendation9 = (p.NumCompetencies >= 9 ? p.Recommendations[8] : null);
458
- t.Recommendation10 = (p.NumCompetencies >= 10 ? p.Recommendations[9] : null);
459
- t.Recommendation11 = (p.NumCompetencies >= 11 ? p.Recommendations[10] : null);
460
- t.Recommendation12 = (p.NumCompetencies >= 12 ? p.Recommendations[11] : null);
461
- t.Recommendation13 = (p.NumCompetencies >= 13 ? p.Recommendations[12] : null);
462
- t.Recommendation14 = (p.NumCompetencies >= 14 ? p.Recommendations[13] : null);
463
- t.Recommendation15 = (p.NumCompetencies >= 15 ? p.Recommendations[14] : null);
464
 
465
  db.SaveChanges();
466
 
 
36
  t.NumCompetencies = p.NumCompetencies;
37
  t.MinSources = p.MinSources;
38
 
39
+ for (int i = 0; i < p.NumCompetencies; i++)
40
+ {
41
+ // Competency
42
+ t.GetType()
43
+ .GetProperty($"Competency{i + 1}")
44
+ ?.SetValue(t, p.Competencies.Length > i ? p.Competencies[i] : null);
45
+
46
+ // Threshold
47
+ t.GetType()
48
+ .GetProperty($"Threshold{i + 1}")
49
+ ?.SetValue(t, p.Thresholds.Length > i ? p.Thresholds[i] : null);
50
+
51
+ // Recommendation
52
+ t.GetType()
53
+ .GetProperty($"Recommendation{i + 1}")
54
+ ?.SetValue(t, p.Recommendations.Length > i ? p.Recommendations[i] : null);
55
+ }
56
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
 
58
  t.UserId = Convert.ToUInt32(User.Identity.Name);
59
  t.CreateDate = DateTime.Now;
 
194
  x.Competency1, x.Competency2, x.Competency3, x.Competency4, x.Competency5,
195
  x.Competency6, x.Competency7, x.Competency8, x.Competency9, x.Competency10,
196
  x.Competency11, x.Competency12, x.Competency13, x.Competency14, x.Competency15),
197
+ Threholds = Program.ListThresholds(x.NumCompetencies,
198
  x.Threshold1, x.Threshold2, x.Threshold3, x.Threshold4, x.Threshold5,
199
  x.Threshold6, x.Threshold7, x.Threshold8, x.Threshold9, x.Threshold10,
200
  x.Threshold11, x.Threshold12, x.Threshold13, x.Threshold14, x.Threshold15),
 
222
  var test = db.Test.Find(Id);
223
  if (test == null) return NotFound();
224
 
225
+ List<string> Competencies = new List<string>(test.NumCompetencies);
226
+
227
+ for (int i = 0; i < test.NumCompetencies; i++)
228
+ {
229
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
230
+ string value = prop?.GetValue(test) as string ?? "";
231
+
232
+ Competencies.Add(value);
233
+ }
 
 
 
 
 
 
 
234
 
235
  var items = from x in db.TestItem
236
  join y in db.TestCategory on x.TestCategoryId equals y.Id
 
282
  x.Competency1, x.Competency2, x.Competency3, x.Competency4, x.Competency5,
283
  x.Competency6, x.Competency7, x.Competency8, x.Competency9, x.Competency10,
284
  x.Competency11, x.Competency12, x.Competency13, x.Competency14, x.Competency15),
285
+ Threholds = Program.ListThresholds(x.NumCompetencies,
286
  x.Threshold1, x.Threshold2, x.Threshold3, x.Threshold4, x.Threshold5,
287
  x.Threshold6, x.Threshold7, x.Threshold8, x.Threshold9, x.Threshold10,
288
  x.Threshold11, x.Threshold12, x.Threshold13, x.Threshold14, x.Threshold15),
 
310
  var test = db.Test.Find(Id1);
311
  if (test == null) return NotFound();
312
 
313
+ List<string> Competencies = new List<string>(test.NumCompetencies);
314
+
315
+ for (int i = 0; i < test.NumCompetencies; i++)
316
+ {
317
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
318
+ string value = prop?.GetValue(test) as string ?? "";
319
+
320
+ Competencies.Add(value);
321
+ }
 
 
 
 
 
 
 
322
 
323
  var item = (from x in db.TestItem
324
  join y in db.TestCategory on x.TestCategoryId equals y.Id
 
371
  t.NumCompetencies = p.NumCompetencies; // ???????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? test item
372
  t.MinSources = p.MinSources;
373
 
374
+ for (int i = 0; i < p.NumCompetencies; i++)
375
+ {
376
+ // Competency
377
+ t.GetType()
378
+ .GetProperty($"Competency{i + 1}")
379
+ ?.SetValue(t, p.Competencies.Length > i ? p.Competencies[i] : null);
380
+
381
+ // Threshold
382
+ t.GetType()
383
+ .GetProperty($"Threshold{i + 1}")
384
+ ?.SetValue(t, p.Thresholds.Length > i ? p.Thresholds[i] : null);
385
+
386
+ // Recommendation
387
+ t.GetType()
388
+ .GetProperty($"Recommendation{i + 1}")
389
+ ?.SetValue(t, p.Recommendations.Length > i ? p.Recommendations[i] : null);
390
+ }
391
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
392
 
393
  db.SaveChanges();
394
 
Controllers/TraineesController.cs CHANGED
@@ -183,176 +183,116 @@ public class TraineesController : ControllerBase
183
 
184
  if (p.Answers.Count != items.Count()) return StatusCode(403, new { mesg = "???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????" });
185
 
186
- if (isPreTest) {
187
-
188
  string answers = "";
189
- decimal score1 = 0.0m; // ??????????????????????????????????????????????????????????????? 1
190
- decimal score2 = 0.0m;
191
- decimal score3 = 0.0m;
192
- decimal? score4 = (train.NumCompetencies >= 4 ? 0.0m : null);
193
- decimal? score5 = (train.NumCompetencies >= 5 ? 0.0m : null);
194
- decimal? score6 = (train.NumCompetencies >= 6 ? 0.0m : null);
195
- decimal? score7 = (train.NumCompetencies >= 7 ? 0.0m : null);
196
- decimal? score8 = (train.NumCompetencies >= 8 ? 0.0m : null);
197
- decimal? score9 = (train.NumCompetencies >= 9 ? 0.0m : null);
198
- decimal? score10 = (train.NumCompetencies >= 10 ? 0.0m : null);
199
- decimal? score11 = (train.NumCompetencies >= 11 ? 0.0m : null);
200
- decimal? score12 = (train.NumCompetencies >= 12 ? 0.0m : null);
201
- decimal? score13 = (train.NumCompetencies >= 13 ? 0.0m : null);
202
- decimal? score14 = (train.NumCompetencies >= 14 ? 0.0m : null);
203
- decimal? score15 = (train.NumCompetencies >= 15 ? 0.0m : null);
204
  decimal total = 0.0m;
205
 
206
- // calculate scores
207
- for (int i = 0; i < p.Answers.Count; i++) {
208
 
209
- string ans = (p.Answers[i] == "" ? "0" : p.Answers[i]); // ?????????????????????????????????????????????????????? front-end ????????? empty string
 
 
 
 
 
 
 
 
210
  answers += (i == 0 ? ans : "<ans>" + ans);
211
 
212
  if (items[i].TestCategoryId == 5) continue;
213
 
214
  decimal score = 0.0m;
215
- if (p.Answers[i] == "1") score = items[i].Score1 ?? 0.0m;
216
- if (p.Answers[i] == "2") score = items[i].Score2 ?? 0.0m;
217
- if (p.Answers[i] == "3") score = items[i].Score3 ?? 0.0m;
218
- if (p.Answers[i] == "4") score = items[i].Score4 ?? 0.0m;
219
- if (p.Answers[i] == "5") score = items[i].Score5 ?? 0.0m;
220
- if (p.Answers[i] == "6") score = items[i].Score6 ?? 0.0m;
221
- if (p.Answers[i] == "7") score = items[i].Score7 ?? 0.0m;
222
- if (p.Answers[i] == "8") score = items[i].Score8 ?? 0.0m;
223
- if (p.Answers[i] == "9") score = items[i].Score9 ?? 0.0m;
224
- if (p.Answers[i] == "10") score = items[i].Score10 ?? 0.0m;
225
-
226
- if (items[i].CompetencyNo == 1) score1 += score; // decimal + null ????????? null
227
- if (items[i].CompetencyNo == 2) score2 += score;
228
- if (items[i].CompetencyNo == 3) score3 += score;
229
- if (items[i].CompetencyNo == 4) score4 += score;
230
- if (items[i].CompetencyNo == 5) score5 += score;
231
- if (items[i].CompetencyNo == 6) score6 += score;
232
- if (items[i].CompetencyNo == 7) score7 += score;
233
- if (items[i].CompetencyNo == 8) score8 += score;
234
- if (items[i].CompetencyNo == 9) score9 += score;
235
- if (items[i].CompetencyNo == 10) score10 += score;
236
- if (items[i].CompetencyNo == 11) score11 += score;
237
- if (items[i].CompetencyNo == 12) score12 += score;
238
- if (items[i].CompetencyNo == 13) score13 += score;
239
- if (items[i].CompetencyNo == 14) score14 += score;
240
- if (items[i].CompetencyNo == 15) score15 += score;
241
  total += score;
242
- }
243
-
244
- CompetencyAssessmentModels.PreTestScore pre = new CompetencyAssessmentModels.PreTestScore();
245
-
246
- pre.TraineeId = trainee.Id;
247
- pre.EvaluatorId = p.EvaluatorId;
248
- pre.EvaluatorName = p.Title + p.FirstName + " " + p.LastName;
249
- pre.Answers = answers;
250
- pre.Score1 = score1;
251
- pre.Score2 = score2;
252
- pre.Score3 = score3;
253
- pre.Score4 = score4;
254
- pre.Score5 = score5;
255
- pre.Score6 = score6;
256
- pre.Score7 = score7;
257
- pre.Score8 = score8;
258
- pre.Score9 = score9;
259
- pre.Score10 = score10;
260
- pre.Score11 = score11;
261
- pre.Score12 = score12;
262
- pre.Score13 = score13;
263
- pre.Score14 = score14;
264
- pre.Score15 = score15;
265
- pre.TotalScore = total;
266
- pre.CreateDate = DateTime.Now;
267
 
268
  db.PreTestScore.Add(pre);
269
  db.SaveChanges();
270
  }
271
 
272
- if (isPostTest) {
273
 
 
 
274
  string answers = "";
275
- decimal score1 = 0.0m; // ??????????????????????????????????????????????????????????????? 1
276
- decimal score2 = 0.0m;
277
- decimal score3 = 0.0m;
278
- decimal? score4 = (train.NumCompetencies >= 4 ? 0.0m : null);
279
- decimal? score5 = (train.NumCompetencies >= 5 ? 0.0m : null);
280
- decimal? score6 = (train.NumCompetencies >= 6 ? 0.0m : null);
281
- decimal? score7 = (train.NumCompetencies >= 7 ? 0.0m : null);
282
- decimal? score8 = (train.NumCompetencies >= 8 ? 0.0m : null);
283
- decimal? score9 = (train.NumCompetencies >= 9 ? 0.0m : null);
284
- decimal? score10 = (train.NumCompetencies >= 10 ? 0.0m : null);
285
- decimal? score11 = (train.NumCompetencies >= 11 ? 0.0m : null);
286
- decimal? score12 = (train.NumCompetencies >= 12 ? 0.0m : null);
287
- decimal? score13 = (train.NumCompetencies >= 13 ? 0.0m : null);
288
- decimal? score14 = (train.NumCompetencies >= 14 ? 0.0m : null);
289
- decimal? score15 = (train.NumCompetencies >= 15 ? 0.0m : null);
290
  decimal total = 0.0m;
291
 
292
- // calculate scores
293
- for (int i = 0; i < p.Answers.Count; i++) {
 
 
 
 
294
 
295
- string ans = (p.Answers[i] == "" ? "0" : p.Answers[i]); // ?????????????????????????????????????????????????????? front-end ????????? empty string
 
 
 
296
  answers += (i == 0 ? ans : "<ans>" + ans);
297
 
298
  if (items[i].TestCategoryId == 5) continue;
299
 
300
  decimal score = 0.0m;
301
- if (p.Answers[i] == "1") score = items[i].Score1 ?? 0.0m;
302
- if (p.Answers[i] == "2") score = items[i].Score2 ?? 0.0m;
303
- if (p.Answers[i] == "3") score = items[i].Score3 ?? 0.0m;
304
- if (p.Answers[i] == "4") score = items[i].Score4 ?? 0.0m;
305
- if (p.Answers[i] == "5") score = items[i].Score5 ?? 0.0m;
306
- if (p.Answers[i] == "6") score = items[i].Score6 ?? 0.0m;
307
- if (p.Answers[i] == "7") score = items[i].Score7 ?? 0.0m;
308
- if (p.Answers[i] == "8") score = items[i].Score8 ?? 0.0m;
309
- if (p.Answers[i] == "9") score = items[i].Score9 ?? 0.0m;
310
- if (p.Answers[i] == "10") score = items[i].Score10 ?? 0.0m;
311
-
312
- if (items[i].CompetencyNo == 1) score1 += score; // decimal + null ????????? null
313
- if (items[i].CompetencyNo == 2) score2 += score;
314
- if (items[i].CompetencyNo == 3) score3 += score;
315
- if (items[i].CompetencyNo == 4) score4 += score;
316
- if (items[i].CompetencyNo == 5) score5 += score;
317
- if (items[i].CompetencyNo == 6) score6 += score;
318
- if (items[i].CompetencyNo == 7) score7 += score;
319
- if (items[i].CompetencyNo == 8) score8 += score;
320
- if (items[i].CompetencyNo == 9) score9 += score;
321
- if (items[i].CompetencyNo == 10) score10 += score;
322
- if (items[i].CompetencyNo == 11) score11 += score;
323
- if (items[i].CompetencyNo == 12) score12 += score;
324
- if (items[i].CompetencyNo == 13) score13 += score;
325
- if (items[i].CompetencyNo == 14) score14 += score;
326
- if (items[i].CompetencyNo == 15) score15 += score;
327
  total += score;
328
  }
329
 
330
- CompetencyAssessmentModels.PostTestScore post = new CompetencyAssessmentModels.PostTestScore();
331
-
332
- post.TraineeId = trainee.Id;
333
- post.EvaluatorId = p.EvaluatorId;
334
- post.EvaluatorName = p.Title + p.FirstName + " " + p.LastName;
335
- post.Answers = answers;
336
- post.Score1 = score1;
337
- post.Score2 = score2;
338
- post.Score3 = score3;
339
- post.Score4 = score4;
340
- post.Score5 = score5;
341
- post.Score6 = score6;
342
- post.Score7 = score7;
343
- post.Score8 = score8;
344
- post.Score9 = score9;
345
- post.Score10 = score10;
346
- post.Score11 = score11;
347
- post.Score12 = score12;
348
- post.Score13 = score13;
349
- post.Score14 = score14;
350
- post.Score15 = score15;
351
- post.TotalScore = total;
352
- post.CreateDate = DateTime.Now;
353
 
354
  db.PostTestScore.Add(post);
355
- db.SaveChanges();
356
  }
357
 
358
  Program.Log("evaluator", db.Evaluator.Find(p.EvaluatorId).Evaluator1, p.Title, p.FirstName, p.LastName);
@@ -513,23 +453,15 @@ public class TraineesController : ControllerBase
513
  if (!train.PreTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? pre-test" });
514
  if (!Program.IsPreTestReported(TrainId, User.Identity.Name)) return StatusCode(403, "???????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
515
 
516
- List<string> Competencies = new List<string>();
517
 
518
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
519
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
520
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
521
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
522
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
523
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
524
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
525
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
526
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
527
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
528
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
529
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
530
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
531
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
532
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
533
 
534
  List<double> Self = null;
535
  List<double> Boss = null;
@@ -580,23 +512,15 @@ public class TraineesController : ControllerBase
580
  if (!train.PostTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? post-test" });
581
  if (!Program.IsPostTestReported(TrainId, User.Identity.Name)) return StatusCode(403, "???????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
582
 
583
- List<string> Competencies = new List<string>();
584
 
585
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
586
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
587
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
588
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
589
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
590
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
591
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
592
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
593
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
594
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
595
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
596
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
597
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
598
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
599
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
600
 
601
  List<double> Self = null;
602
  List<double> Boss = null;
@@ -647,23 +571,15 @@ public class TraineesController : ControllerBase
647
  if (!train.PreTestAnnounced && !train.PostTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? pre/post-test" });
648
  if (!Program.IsSelfReported(TrainId, User.Identity.Name)) return StatusCode(403, "????????????????????????????????????????????????");
649
 
650
- List<string> Competencies = new List<string>();
651
 
652
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
653
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
654
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
655
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
656
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
657
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
658
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
659
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
660
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
661
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
662
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
663
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
664
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
665
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
666
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
667
 
668
  List<double> PreTest = null;
669
  List<double> PostTest = null;
@@ -706,23 +622,15 @@ public class TraineesController : ControllerBase
706
  if (!train.PreTestAnnounced && !train.PostTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? pre/post-test" });
707
  if (!Program.IsOthersReported(TrainId, User.Identity.Name)) return StatusCode(403, "?????????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
708
 
709
- List<string> Competencies = new List<string>();
710
 
711
- if (test.NumCompetencies >= 1) Competencies.Add(test.Competency1);
712
- if (test.NumCompetencies >= 2) Competencies.Add(test.Competency2);
713
- if (test.NumCompetencies >= 3) Competencies.Add(test.Competency3);
714
- if (test.NumCompetencies >= 4) Competencies.Add(test.Competency4);
715
- if (test.NumCompetencies >= 5) Competencies.Add(test.Competency5);
716
- if (test.NumCompetencies >= 6) Competencies.Add(test.Competency6);
717
- if (test.NumCompetencies >= 7) Competencies.Add(test.Competency7);
718
- if (test.NumCompetencies >= 8) Competencies.Add(test.Competency8);
719
- if (test.NumCompetencies >= 9) Competencies.Add(test.Competency9);
720
- if (test.NumCompetencies >= 10) Competencies.Add(test.Competency10);
721
- if (test.NumCompetencies >= 11) Competencies.Add(test.Competency11);
722
- if (test.NumCompetencies >= 12) Competencies.Add(test.Competency12);
723
- if (test.NumCompetencies >= 13) Competencies.Add(test.Competency13);
724
- if (test.NumCompetencies >= 14) Competencies.Add(test.Competency14);
725
- if (test.NumCompetencies >= 15) Competencies.Add(test.Competency15);
726
 
727
  List<double> PreTest1 = null, PreTest2 = null, PreTest3 = null;
728
  List<double> PostTest1 = null, PostTest2 = null, PostTest3 = null;
@@ -933,22 +841,15 @@ public class TraineesController : ControllerBase
933
  return StatusCode(403, "???????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
934
  }
935
 
936
- string[] competencies = new string[test.NumCompetencies];
937
- if (test.NumCompetencies >= 1) competencies[0] = "1. " + test.Competency1;
938
- if (test.NumCompetencies >= 2) competencies[1] = "2. " + test.Competency2;
939
- if (test.NumCompetencies >= 3) competencies[2] = "3. " + test.Competency3;
940
- if (test.NumCompetencies >= 4) competencies[3] = "4. " + test.Competency4;
941
- if (test.NumCompetencies >= 5) competencies[4] = "5. " + test.Competency5;
942
- if (test.NumCompetencies >= 6) competencies[5] = "6. " + test.Competency6;
943
- if (test.NumCompetencies >= 7) competencies[6] = "7. " + test.Competency7;
944
- if (test.NumCompetencies >= 8) competencies[7] = "8. " + test.Competency8;
945
- if (test.NumCompetencies >= 9) competencies[8] = "9. " + test.Competency9;
946
- if (test.NumCompetencies >= 10) competencies[9] = "10. " + test.Competency10;
947
- if (test.NumCompetencies >= 11) competencies[10] = "11. " + test.Competency11;
948
- if (test.NumCompetencies >= 12) competencies[11] = "12. " + test.Competency12;
949
- if (test.NumCompetencies >= 13) competencies[12] = "13. " + test.Competency13;
950
- if (test.NumCompetencies >= 14) competencies[13] = "14. " + test.Competency14;
951
- if (test.NumCompetencies >= 15) competencies[14] = "15. " + test.Competency15;
952
 
953
  List<double> Self1 = null, Self2 = null;
954
  List<double> Boss1 = null, Boss2 = null;
@@ -1005,7 +906,7 @@ public class TraineesController : ControllerBase
1005
  heading3 = test.Name,
1006
  heading4 = trainee.TraineeId + " " + trainee.Title + trainee.FirstName + " " + trainee.LastName,
1007
  heading5 = department.Department1 + " " + ministry.Ministry1,
1008
- competencies = competencies,
1009
  self1 = self1,
1010
  self2 = self2,
1011
  other1 = other1,
 
183
 
184
  if (p.Answers.Count != items.Count()) return StatusCode(403, new { mesg = "???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????" });
185
 
186
+ if (isPreTest)
187
+ {
188
  string answers = "";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  decimal total = 0.0m;
190
 
191
+ int maxCompetencies = Math.Min((int)train.NumCompetencies, 20);
 
192
 
193
+ // prepare score array
194
+ decimal?[] competencyScores = new decimal?[maxCompetencies];
195
+ for (int i = 0; i < maxCompetencies; i++)
196
+ competencyScores[i] = 0.0m;
197
+
198
+ // calculate scores
199
+ for (int i = 0; i < p.Answers.Count; i++)
200
+ {
201
+ string ans = string.IsNullOrEmpty(p.Answers[i]) ? "0" : p.Answers[i];
202
  answers += (i == 0 ? ans : "<ans>" + ans);
203
 
204
  if (items[i].TestCategoryId == 5) continue;
205
 
206
  decimal score = 0.0m;
207
+
208
+ var scoreProp = items[i].GetType().GetProperty($"Score{ans}");
209
+ if (scoreProp != null)
210
+ score = (decimal?)scoreProp.GetValue(items[i]) ?? 0.0m;
211
+
212
+ int compIndex = items[i].CompetencyNo - 1;
213
+ if (compIndex >= 0 && compIndex < maxCompetencies)
214
+ competencyScores[compIndex] += score;
215
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  total += score;
217
+ }
218
+
219
+ CompetencyAssessmentModels.PreTestScore pre = new CompetencyAssessmentModels.PreTestScore
220
+ {
221
+ TraineeId = trainee.Id,
222
+ EvaluatorId = p.EvaluatorId,
223
+ EvaluatorName = p.Title + p.FirstName + " " + p.LastName,
224
+ Answers = answers,
225
+ TotalScore = total,
226
+ CreateDate = DateTime.Now
227
+ };
228
+
229
+ // assign Score1???Score20 dynamically
230
+ for (int i = 0; i < maxCompetencies; i++)
231
+ {
232
+ var prop = pre.GetType().GetProperty($"Score{i + 1}");
233
+ if (prop != null)
234
+ prop.SetValue(pre, competencyScores[i]);
235
+ }
 
 
 
 
 
 
236
 
237
  db.PreTestScore.Add(pre);
238
  db.SaveChanges();
239
  }
240
 
 
241
 
242
+ if (isPostTest)
243
+ {
244
  string answers = "";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  decimal total = 0.0m;
246
 
247
+ int maxCompetencies = Math.Min((int)train.NumCompetencies, 20);
248
+
249
+ // prepare score array
250
+ decimal?[] competencyScores = new decimal?[maxCompetencies];
251
+ for (int i = 0; i < maxCompetencies; i++)
252
+ competencyScores[i] = 0.0m;
253
 
254
+ // calculate scores (answers still 10)
255
+ for (int i = 0; i < p.Answers.Count; i++)
256
+ {
257
+ string ans = string.IsNullOrEmpty(p.Answers[i]) ? "0" : p.Answers[i];
258
  answers += (i == 0 ? ans : "<ans>" + ans);
259
 
260
  if (items[i].TestCategoryId == 5) continue;
261
 
262
  decimal score = 0.0m;
263
+
264
+ var scoreProp = items[i].GetType().GetProperty($"Score{ans}");
265
+ if (scoreProp != null)
266
+ score = (decimal?)scoreProp.GetValue(items[i]) ?? 0.0m;
267
+
268
+ int compIndex = items[i].CompetencyNo - 1;
269
+ if (compIndex >= 0 && compIndex < maxCompetencies)
270
+ competencyScores[compIndex] += score;
271
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  total += score;
273
  }
274
 
275
+ CompetencyAssessmentModels.PostTestScore post =
276
+ new CompetencyAssessmentModels.PostTestScore
277
+ {
278
+ TraineeId = trainee.Id,
279
+ EvaluatorId = p.EvaluatorId,
280
+ EvaluatorName = p.Title + p.FirstName + " " + p.LastName,
281
+ Answers = answers,
282
+ TotalScore = total,
283
+ CreateDate = DateTime.Now
284
+ };
285
+
286
+ // assign Score1???Score20 dynamically
287
+ for (int i = 0; i < maxCompetencies; i++)
288
+ {
289
+ var prop = post.GetType().GetProperty($"Score{i + 1}");
290
+ if (prop != null)
291
+ prop.SetValue(post, competencyScores[i]);
292
+ }
 
 
 
 
 
293
 
294
  db.PostTestScore.Add(post);
295
+ db.SaveChanges();
296
  }
297
 
298
  Program.Log("evaluator", db.Evaluator.Find(p.EvaluatorId).Evaluator1, p.Title, p.FirstName, p.LastName);
 
453
  if (!train.PreTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? pre-test" });
454
  if (!Program.IsPreTestReported(TrainId, User.Identity.Name)) return StatusCode(403, "???????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
455
 
456
+ List<string> Competencies = new List<string>(test.NumCompetencies);
457
 
458
+ for (int i = 0; i < test.NumCompetencies; i++)
459
+ {
460
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
461
+ string value = prop?.GetValue(test) as string ?? "";
462
+
463
+ Competencies.Add(value);
464
+ }
 
 
 
 
 
 
 
 
465
 
466
  List<double> Self = null;
467
  List<double> Boss = null;
 
512
  if (!train.PostTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? post-test" });
513
  if (!Program.IsPostTestReported(TrainId, User.Identity.Name)) return StatusCode(403, "???????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
514
 
515
+ List<string> Competencies = new List<string>(test.NumCompetencies);
516
 
517
+ for (int i = 0; i < test.NumCompetencies; i++)
518
+ {
519
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
520
+ string value = prop?.GetValue(test) as string ?? "";
521
+
522
+ Competencies.Add(value);
523
+ }
 
 
 
 
 
 
 
 
524
 
525
  List<double> Self = null;
526
  List<double> Boss = null;
 
571
  if (!train.PreTestAnnounced && !train.PostTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? pre/post-test" });
572
  if (!Program.IsSelfReported(TrainId, User.Identity.Name)) return StatusCode(403, "????????????????????????????????????????????????");
573
 
574
+ List<string> Competencies = new List<string>(test.NumCompetencies);
575
 
576
+ for (int i = 0; i < test.NumCompetencies; i++)
577
+ {
578
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
579
+ string value = prop?.GetValue(test) as string ?? "";
580
+
581
+ Competencies.Add(value);
582
+ }
 
 
 
 
 
 
 
 
583
 
584
  List<double> PreTest = null;
585
  List<double> PostTest = null;
 
622
  if (!train.PreTestAnnounced && !train.PostTestAnnounced) return StatusCode(403, new { mesg = "????????????????????????????????????????????????????????? pre/post-test" });
623
  if (!Program.IsOthersReported(TrainId, User.Identity.Name)) return StatusCode(403, "?????????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
624
 
625
+ List<string> Competencies = new List<string>(test.NumCompetencies);
626
 
627
+ for (int i = 0; i < test.NumCompetencies; i++)
628
+ {
629
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
630
+ string value = prop?.GetValue(test) as string ?? "";
631
+
632
+ Competencies.Add(value);
633
+ }
 
 
 
 
 
 
 
 
634
 
635
  List<double> PreTest1 = null, PreTest2 = null, PreTest3 = null;
636
  List<double> PostTest1 = null, PostTest2 = null, PostTest3 = null;
 
841
  return StatusCode(403, "???????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????? " + test.MinSources.ToString() + " ??????????????? (?????????????????????????????????)");
842
  }
843
 
844
+ List<string> Competencies = new List<string>(test.NumCompetencies);
845
+
846
+ for (int i = 0; i < test.NumCompetencies; i++)
847
+ {
848
+ var prop = test.GetType().GetProperty($"Competency{i + 1}");
849
+ string value = prop?.GetValue(test) as string ?? "";
850
+
851
+ Competencies.Add(value);
852
+ }
 
 
 
 
 
 
 
853
 
854
  List<double> Self1 = null, Self2 = null;
855
  List<double> Boss1 = null, Boss2 = null;
 
906
  heading3 = test.Name,
907
  heading4 = trainee.TraineeId + " " + trainee.Title + trainee.FirstName + " " + trainee.LastName,
908
  heading5 = department.Department1 + " " + ministry.Ministry1,
909
+ competencies = Competencies,
910
  self1 = self1,
911
  self2 = self2,
912
  other1 = other1,
Controllers/TrainsController.cs CHANGED
@@ -342,10 +342,11 @@ public class TrainsController : ControllerBase
342
  Evaluator = y.Evaluator1,
343
  EvaluatorName = x.EvaluatorName,
344
  Answers = Program.ListAnswers(x.Answers),
345
- Scores = Program.ListScores(test.NumCompetencies,
346
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
347
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
348
- x.Score11, x.Score12, x.Score13, x.Score14, x.Score15),
 
349
  TotalScore = x.TotalScore.ToString("0.00"),
350
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
351
  CreateDate = x.CreateDate,
@@ -386,10 +387,11 @@ public class TrainsController : ControllerBase
386
  Evaluator = y.Evaluator1,
387
  EvaluatorName = x.EvaluatorName,
388
  Answers = Program.ListAnswers(x.Answers),
389
- Scores = Program.ListScores(test.NumCompetencies,
390
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
391
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
392
- x.Score11, x.Score12, x.Score13, x.Score14, x.Score15),
 
393
  TotalScore = x.TotalScore.ToString("0.00"),
394
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
395
  CreateDate = x.CreateDate,
@@ -514,10 +516,11 @@ public class TrainsController : ControllerBase
514
  Evaluator = y.Evaluator1,
515
  EvaluatorName = x.EvaluatorName,
516
  Answers = Program.ListAnswers(x.Answers),
517
- Scores = Program.ListScores(test.NumCompetencies,
518
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
519
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
520
- x.Score11, x.Score12, x.Score13, x.Score14, x.Score15),
 
521
  TotalScore = x.TotalScore.ToString("0.00"),
522
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
523
  CreateDate = x.CreateDate,
@@ -558,10 +561,11 @@ public class TrainsController : ControllerBase
558
  Evaluator = y.Evaluator1,
559
  EvaluatorName = x.EvaluatorName,
560
  Answers = Program.ListAnswers(x.Answers),
561
- Scores = Program.ListScores(test.NumCompetencies,
562
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
563
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
564
- x.Score11, x.Score12, x.Score13, x.Score14, x.Score15),
 
565
  TotalScore = x.TotalScore.ToString("0.00"),
566
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
567
  CreateDate = x.CreateDate,
 
342
  Evaluator = y.Evaluator1,
343
  EvaluatorName = x.EvaluatorName,
344
  Answers = Program.ListAnswers(x.Answers),
345
+ Scores = Program.ListScoreStrings(test.NumCompetencies,
346
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
347
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
348
+ x.Score11, x.Score12, x.Score13, x.Score14, x.Score15,
349
+ x.Score16, x.Score17, x.Score18, x.Score19, x.Score20),
350
  TotalScore = x.TotalScore.ToString("0.00"),
351
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
352
  CreateDate = x.CreateDate,
 
387
  Evaluator = y.Evaluator1,
388
  EvaluatorName = x.EvaluatorName,
389
  Answers = Program.ListAnswers(x.Answers),
390
+ Scores = Program.ListScoreStrings(test.NumCompetencies,
391
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
392
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
393
+ x.Score11, x.Score12, x.Score13, x.Score14, x.Score15,
394
+ x.Score16, x.Score17, x.Score18, x.Score19, x.Score20),
395
  TotalScore = x.TotalScore.ToString("0.00"),
396
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
397
  CreateDate = x.CreateDate,
 
516
  Evaluator = y.Evaluator1,
517
  EvaluatorName = x.EvaluatorName,
518
  Answers = Program.ListAnswers(x.Answers),
519
+ Scores = Program.ListScoreStrings(test.NumCompetencies,
520
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
521
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
522
+ x.Score11, x.Score12, x.Score13, x.Score14, x.Score15,
523
+ x.Score16, x.Score17, x.Score18, x.Score19, x.Score20),
524
  TotalScore = x.TotalScore.ToString("0.00"),
525
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
526
  CreateDate = x.CreateDate,
 
561
  Evaluator = y.Evaluator1,
562
  EvaluatorName = x.EvaluatorName,
563
  Answers = Program.ListAnswers(x.Answers),
564
+ Scores = Program.ListScoreStrings(test.NumCompetencies,
565
  x.Score1, x.Score2, x.Score3, x.Score4, x.Score5,
566
  x.Score6, x.Score7, x.Score8, x.Score9, x.Score10,
567
+ x.Score11, x.Score12, x.Score13, x.Score14, x.Score15,
568
+ x.Score16, x.Score17, x.Score18, x.Score19, x.Score20),
569
  TotalScore = x.TotalScore.ToString("0.00"),
570
  TotalPercent = (100.0m * x.TotalScore / FullScore).ToString("0.00") + "%",
571
  CreateDate = x.CreateDate,
Program.cs CHANGED
@@ -270,118 +270,80 @@ partial class Program {
270
  return date + " " + month + " " + year + " " + hour + ":" + minute + " ???.";
271
  }
272
 
273
- public static List<string> ListCompetencies(byte n, string s1, string s2, string s3, string s4, string s5,
274
- string s6, string s7, string s8, string s9, string s10,
275
- string s11, string s12, string s13, string s14, string s15) {
276
- List<string> L = new List<string>();
277
- if (n >= 1) L.Add(s1);
278
- if (n >= 2) L.Add(s2);
279
- if (n >= 3) L.Add(s3);
280
- if (n >= 4) L.Add(s4);
281
- if (n >= 5) L.Add(s5);
282
- if (n >= 6) L.Add(s6);
283
- if (n >= 7) L.Add(s7);
284
- if (n >= 8) L.Add(s8);
285
- if (n >= 9) L.Add(s9);
286
- if (n >= 10) L.Add(s10);
287
- if (n >= 11) L.Add(s11);
288
- if (n >= 12) L.Add(s12);
289
- if (n >= 13) L.Add(s13);
290
- if (n >= 14) L.Add(s14);
291
- if (n >= 15) L.Add(s15);
292
- return L;
293
  }
294
 
295
- public static List<decimal> ListThreholds(byte n, decimal s1, decimal s2, decimal s3, decimal? s4, decimal? s5,
296
- decimal? s6, decimal? s7, decimal? s8, decimal? s9, decimal? s10,
297
- decimal? s11, decimal? s12, decimal? s13, decimal? s14, decimal? s15) {
298
- List<decimal> L = new List<decimal>();
299
- if (n >= 1) L.Add(s1);
300
- if (n >= 2) L.Add(s2);
301
- if (n >= 3) L.Add(s3);
302
- if (n >= 4) L.Add(s4 ?? 0);
303
- if (n >= 5) L.Add(s5 ?? 0);
304
- if (n >= 6) L.Add(s6 ?? 0);
305
- if (n >= 7) L.Add(s7 ?? 0);
306
- if (n >= 8) L.Add(s8 ?? 0);
307
- if (n >= 9) L.Add(s9 ?? 0);
308
- if (n >= 10) L.Add(s10 ?? 0);
309
- if (n >= 11) L.Add(s11 ?? 0);
310
- if (n >= 12) L.Add(s12 ?? 0);
311
- if (n >= 13) L.Add(s13 ?? 0);
312
- if (n >= 14) L.Add(s14 ?? 0);
313
- if (n >= 15) L.Add(s15 ?? 0);
314
- return L;
315
  }
316
 
317
- public static List<string> ListRecommendations(byte n, string s1, string s2, string s3, string s4, string s5,
318
- string s6, string s7, string s8, string s9, string s10,
319
- string s11, string s12, string s13, string s14, string s15) {
320
- List<string> L = new List<string>();
321
- if (n >= 1) L.Add(s1);
322
- if (n >= 2) L.Add(s2);
323
- if (n >= 3) L.Add(s3);
324
- if (n >= 4) L.Add(s4);
325
- if (n >= 5) L.Add(s5);
326
- if (n >= 6) L.Add(s6);
327
- if (n >= 7) L.Add(s7);
328
- if (n >= 8) L.Add(s8);
329
- if (n >= 9) L.Add(s9);
330
- if (n >= 10) L.Add(s10);
331
- if (n >= 11) L.Add(s11);
332
- if (n >= 12) L.Add(s12);
333
- if (n >= 13) L.Add(s13);
334
- if (n >= 14) L.Add(s14);
335
- if (n >= 15) L.Add(s15);
336
- return L;
337
  }
338
 
339
- public static List<string> ListChoices(byte n, string s1, string s2, string s3, string s4, string s5,
340
- string s6, string s7, string s8, string s9, string s10) {
341
- List<string> L = new List<string>();
342
- if (n >= 1) L.Add(s1);
343
- if (n >= 2) L.Add(s2);
344
- if (n >= 3) L.Add(s3);
345
- if (n >= 4) L.Add(s4);
346
- if (n >= 5) L.Add(s5);
347
- if (n >= 6) L.Add(s6);
348
- if (n >= 7) L.Add(s7);
349
- if (n >= 8) L.Add(s8);
350
- if (n >= 9) L.Add(s9);
351
- if (n >= 10) L.Add(s10);
352
- return L;
353
  }
354
 
355
- public static List<string> ListImages(byte n, string s1, string s2, string s3, string s4, string s5,
356
- string s6, string s7, string s8, string s9, string s10) {
357
- List<string> L = new List<string>();
358
- if (n >= 1) L.Add(s1 != null ? Program.DomainName + "/files/competencyassessment/" + s1 : null);
359
- if (n >= 2) L.Add(s2 != null ? Program.DomainName + "/files/competencyassessment/" + s2 : null);
360
- if (n >= 3) L.Add(s3 != null ? Program.DomainName + "/files/competencyassessment/" + s3 : null);
361
- if (n >= 4) L.Add(s4 != null ? Program.DomainName + "/files/competencyassessment/" + s4 : null);
362
- if (n >= 5) L.Add(s5 != null ? Program.DomainName + "/files/competencyassessment/" + s5 : null);
363
- if (n >= 6) L.Add(s6 != null ? Program.DomainName + "/files/competencyassessment/" + s6 : null);
364
- if (n >= 7) L.Add(s7 != null ? Program.DomainName + "/files/competencyassessment/" + s7 : null);
365
- if (n >= 8) L.Add(s8 != null ? Program.DomainName + "/files/competencyassessment/" + s8 : null);
366
- if (n >= 9) L.Add(s9 != null ? Program.DomainName + "/files/competencyassessment/" + s9 : null);
367
- if (n >= 10) L.Add(s10 != null ? Program.DomainName + "/files/competencyassessment/" + s10 : null);
368
- return L;
369
  }
370
 
371
- public static List<decimal> ListScores(byte n, decimal? s1, decimal? s2, decimal? s3, decimal? s4, decimal? s5,
372
- decimal? s6, decimal? s7, decimal? s8, decimal? s9, decimal? s10) {
373
- List<decimal> L = new List<decimal>();
374
- if (n >= 1) L.Add(s1 ?? 0);
375
- if (n >= 2) L.Add(s2 ?? 0);
376
- if (n >= 3) L.Add(s3 ?? 0);
377
- if (n >= 4) L.Add(s4 ?? 0);
378
- if (n >= 5) L.Add(s5 ?? 0);
379
- if (n >= 6) L.Add(s6 ?? 0);
380
- if (n >= 7) L.Add(s7 ?? 0);
381
- if (n >= 8) L.Add(s8 ?? 0);
382
- if (n >= 9) L.Add(s9 ?? 0);
383
- if (n >= 10) L.Add(s10 ?? 0);
384
- return L;
385
  }
386
 
387
  public static List<string> ListAnswers(string answers) {
@@ -391,51 +353,56 @@ partial class Program {
391
  return L;
392
  }
393
 
394
- public static List<string> ListScores(byte n, decimal s1, decimal s2, decimal s3, decimal? s4, decimal? s5,
395
- decimal? s6, decimal? s7, decimal? s8, decimal? s9, decimal? s10,
396
- decimal? s11, decimal? s12, decimal? s13, decimal? s14, decimal? s15) {
397
- List<string> L = new List<string>();
398
- L.Add(n >= 1 ? s1.ToString("0.00") : "-");
399
- L.Add(n >= 2 ? s2.ToString("0.00") : "-");
400
- L.Add(n >= 3 ? s3.ToString("0.00") : "-");
401
- L.Add(n >= 4 ? (s4 ?? 0).ToString("0.00") : "-");
402
- L.Add(n >= 5 ? (s5 ?? 0).ToString("0.00") : "-");
403
- L.Add(n >= 6 ? (s6 ?? 0).ToString("0.00") : "-");
404
- L.Add(n >= 7 ? (s7 ?? 0).ToString("0.00") : "-");
405
- L.Add(n >= 8 ? (s8 ?? 0).ToString("0.00") : "-");
406
- L.Add(n >= 9 ? (s9 ?? 0).ToString("0.00") : "-");
407
- L.Add(n >= 10 ? (s10 ?? 0).ToString("0.00") : "-");
408
- L.Add(n >= 11 ? (s11 ?? 0).ToString("0.00") : "-");
409
- L.Add(n >= 12 ? (s12 ?? 0).ToString("0.00") : "-");
410
- L.Add(n >= 13 ? (s13 ?? 0).ToString("0.00") : "-");
411
- L.Add(n >= 14 ? (s14 ?? 0).ToString("0.00") : "-");
412
- L.Add(n >= 15 ? (s15 ?? 0).ToString("0.00") : "-");
413
- return L;
414
  }
415
 
416
- public static List<string> ListPercents(byte n, decimal s1, decimal s2, decimal s3, decimal? s4, decimal? s5,
417
- decimal? s6, decimal? s7, decimal? s8, decimal? s9, decimal? s10,
418
- decimal? s11, decimal? s12, decimal? s13, decimal? s14, decimal? s15, decimal total) {
419
- List<string> L = new List<string>();
420
- decimal hd = 100.0m;
421
- L.Add(n >= 1 ? (hd * s1 / total).ToString("0.00") : "-");
422
- L.Add(n >= 2 ? (hd * s2 / total).ToString("0.00") : "-");
423
- L.Add(n >= 3 ? (hd * s3 / total).ToString("0.00") : "-");
424
- L.Add(n >= 4 ? (hd * (s4 ?? 0) / total).ToString("0.00") : "-");
425
- L.Add(n >= 5 ? (hd * (s5 ?? 0) / total).ToString("0.00") : "-");
426
- L.Add(n >= 6 ? (hd * (s6 ?? 0) / total).ToString("0.00") : "-");
427
- L.Add(n >= 7 ? (hd * (s7 ?? 0) / total).ToString("0.00") : "-");
428
- L.Add(n >= 8 ? (hd * (s8 ?? 0) / total).ToString("0.00") : "-");
429
- L.Add(n >= 9 ? (hd * (s9 ?? 0) / total).ToString("0.00") : "-");
430
- L.Add(n >= 10 ? (hd * (s10 ?? 0) / total).ToString("0.00") : "-");
431
- L.Add(n >= 11 ? (hd * (s11 ?? 0) / total).ToString("0.00") : "-");
432
- L.Add(n >= 12 ? (hd * (s12 ?? 0) / total).ToString("0.00") : "-");
433
- L.Add(n >= 13 ? (hd * (s13 ?? 0) / total).ToString("0.00") : "-");
434
- L.Add(n >= 14 ? (hd * (s14 ?? 0) / total).ToString("0.00") : "-");
435
- L.Add(n >= 15 ? (hd * (s15 ?? 0) / total).ToString("0.00") : "-");
436
- return L;
437
  }
438
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
439
  public static int CountTrainees(uint TrainId) {
440
 
441
  var db = new CompetencyAssessmentDbContext();
@@ -478,21 +445,16 @@ partial class Program {
478
  select x;
479
 
480
  decimal sum = 0.0m;
481
- foreach (var i in items) {
482
- decimal max = 0.0m;
483
- max = Math.Max(max, i.Score1 ?? 0.0m);
484
- max = Math.Max(max, i.Score2 ?? 0.0m);
485
- max = Math.Max(max, i.Score3 ?? 0.0m);
486
- max = Math.Max(max, i.Score4 ?? 0.0m);
487
- max = Math.Max(max, i.Score5 ?? 0.0m);
488
- max = Math.Max(max, i.Score6 ?? 0.0m);
489
- max = Math.Max(max, i.Score7 ?? 0.0m);
490
- max = Math.Max(max, i.Score8 ?? 0.0m);
491
- max = Math.Max(max, i.Score9 ?? 0.0m);
492
- max = Math.Max(max, i.Score10 ?? 0.0m);
493
- sum = sum + max;
494
  }
495
 
 
496
  return sum;
497
  }
498
 
@@ -505,19 +467,13 @@ partial class Program {
505
  select x;
506
 
507
  decimal sum = 0.0m;
508
- foreach (var i in items) {
509
- decimal max = 0.0m;
510
- max = Math.Max(max, i.Score1 ?? 0.0m);
511
- max = Math.Max(max, i.Score2 ?? 0.0m);
512
- max = Math.Max(max, i.Score3 ?? 0.0m);
513
- max = Math.Max(max, i.Score4 ?? 0.0m);
514
- max = Math.Max(max, i.Score5 ?? 0.0m);
515
- max = Math.Max(max, i.Score6 ?? 0.0m);
516
- max = Math.Max(max, i.Score7 ?? 0.0m);
517
- max = Math.Max(max, i.Score8 ?? 0.0m);
518
- max = Math.Max(max, i.Score9 ?? 0.0m);
519
- max = Math.Max(max, i.Score10 ?? 0.0m);
520
- sum = sum + max;
521
  }
522
 
523
  return sum;
@@ -635,102 +591,63 @@ partial class Program {
635
  var TrainId = db.Trainee.Find(TraineeId).TrainId;
636
  var TestId = db.Train.Find(TrainId).TestId;
637
 
638
- double FullScore1 = (double)Program.GetFullScoreByCompetency(TestId, 1); if (FullScore1 == 0.0d) FullScore1 = 1.0d;
639
- double FullScore2 = (double)Program.GetFullScoreByCompetency(TestId, 2); if (FullScore2 == 0.0d) FullScore2 = 1.0d;
640
- double FullScore3 = (double)Program.GetFullScoreByCompetency(TestId, 3); if (FullScore3 == 0.0d) FullScore3 = 1.0d;
641
- double FullScore4 = (double)Program.GetFullScoreByCompetency(TestId, 4); if (FullScore4 == 0.0d) FullScore4 = 1.0d;
642
- double FullScore5 = (double)Program.GetFullScoreByCompetency(TestId, 5); if (FullScore5 == 0.0d) FullScore5 = 1.0d;
643
- double FullScore6 = (double)Program.GetFullScoreByCompetency(TestId, 6); if (FullScore6 == 0.0d) FullScore6 = 1.0d;
644
- double FullScore7 = (double)Program.GetFullScoreByCompetency(TestId, 7); if (FullScore7 == 0.0d) FullScore7 = 1.0d;
645
- double FullScore8 = (double)Program.GetFullScoreByCompetency(TestId, 8); if (FullScore8 == 0.0d) FullScore8 = 1.0d;
646
- double FullScore9 = (double)Program.GetFullScoreByCompetency(TestId, 9); if (FullScore9 == 0.0d) FullScore9 = 1.0d;
647
- double FullScore10 = (double)Program.GetFullScoreByCompetency(TestId, 10); if (FullScore10 == 0.0d) FullScore10 = 1.0d;
648
- double FullScore11 = (double)Program.GetFullScoreByCompetency(TestId, 11); if (FullScore11 == 0.0d) FullScore11 = 1.0d;
649
- double FullScore12 = (double)Program.GetFullScoreByCompetency(TestId, 12); if (FullScore12 == 0.0d) FullScore12 = 1.0d;
650
- double FullScore13 = (double)Program.GetFullScoreByCompetency(TestId, 13); if (FullScore13 == 0.0d) FullScore13 = 1.0d;
651
- double FullScore14 = (double)Program.GetFullScoreByCompetency(TestId, 14); if (FullScore14 == 0.0d) FullScore14 = 1.0d;
652
- double FullScore15 = (double)Program.GetFullScoreByCompetency(TestId, 15); if (FullScore15 == 0.0d) FullScore15 = 1.0d;
653
 
654
  if (IsPreTest) {
655
 
656
  var self = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 1 orderby x.CreateDate descending select x).FirstOrDefault();
657
  if (self != null) {
658
  Self = new List<double>();
659
- if (NumCompetencies >= 1) Self.Add(100.0d * Convert.ToDouble(self.Score1) / FullScore1);
660
- if (NumCompetencies >= 2) Self.Add(100.0d * Convert.ToDouble(self.Score2) / FullScore2);
661
- if (NumCompetencies >= 3) Self.Add(100.0d * Convert.ToDouble(self.Score3) / FullScore3);
662
- if (NumCompetencies >= 4) Self.Add(100.0d * Convert.ToDouble(self.Score4 ?? 0.0m) / FullScore4);
663
- if (NumCompetencies >= 5) Self.Add(100.0d * Convert.ToDouble(self.Score5 ?? 0.0m) / FullScore5);
664
- if (NumCompetencies >= 6) Self.Add(100.0d * Convert.ToDouble(self.Score6 ?? 0.0m) / FullScore6);
665
- if (NumCompetencies >= 7) Self.Add(100.0d * Convert.ToDouble(self.Score7 ?? 0.0m) / FullScore7);
666
- if (NumCompetencies >= 8) Self.Add(100.0d * Convert.ToDouble(self.Score8 ?? 0.0m) / FullScore8);
667
- if (NumCompetencies >= 9) Self.Add(100.0d * Convert.ToDouble(self.Score9 ?? 0.0m) / FullScore9);
668
- if (NumCompetencies >= 10) Self.Add(100.0d * Convert.ToDouble(self.Score10 ?? 0.0m) / FullScore10);
669
- if (NumCompetencies >= 11) Self.Add(100.0d * Convert.ToDouble(self.Score11 ?? 0.0m) / FullScore11);
670
- if (NumCompetencies >= 12) Self.Add(100.0d * Convert.ToDouble(self.Score12 ?? 0.0m) / FullScore12);
671
- if (NumCompetencies >= 13) Self.Add(100.0d * Convert.ToDouble(self.Score13 ?? 0.0m ) / FullScore13);
672
- if (NumCompetencies >= 14) Self.Add(100.0d * Convert.ToDouble(self.Score14 ?? 0.0m) / FullScore14);
673
- if (NumCompetencies >= 15) Self.Add(100.0d * Convert.ToDouble(self.Score15 ?? 0.0m) / FullScore15);
674
  }
675
 
676
  var boss = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 2 orderby x.CreateDate descending select x).FirstOrDefault();
677
  if (boss != null) {
678
  Boss = new List<double>();
679
- if (NumCompetencies >= 1) Boss.Add(100.0d * Convert.ToDouble(boss.Score1) / FullScore1);
680
- if (NumCompetencies >= 2) Boss.Add(100.0d * Convert.ToDouble(boss.Score2) / FullScore2);
681
- if (NumCompetencies >= 3) Boss.Add(100.0d * Convert.ToDouble(boss.Score3) / FullScore3);
682
- if (NumCompetencies >= 4) Boss.Add(100.0d * Convert.ToDouble(boss.Score4 ?? 0.0m) / FullScore4);
683
- if (NumCompetencies >= 5) Boss.Add(100.0d * Convert.ToDouble(boss.Score5 ?? 0.0m) / FullScore5);
684
- if (NumCompetencies >= 6) Boss.Add(100.0d * Convert.ToDouble(boss.Score6 ?? 0.0m) / FullScore6);
685
- if (NumCompetencies >= 7) Boss.Add(100.0d * Convert.ToDouble(boss.Score7 ?? 0.0m) / FullScore7);
686
- if (NumCompetencies >= 8) Boss.Add(100.0d * Convert.ToDouble(boss.Score8 ?? 0.0m) / FullScore8);
687
- if (NumCompetencies >= 9) Boss.Add(100.0d * Convert.ToDouble(boss.Score9 ?? 0.0m) / FullScore9);
688
- if (NumCompetencies >= 10) Boss.Add(100.0d * Convert.ToDouble(boss.Score10 ?? 0.0m) / FullScore10);
689
- if (NumCompetencies >= 11) Boss.Add(100.0d * Convert.ToDouble(boss.Score11 ?? 0.0m) / FullScore11);
690
- if (NumCompetencies >= 12) Boss.Add(100.0d * Convert.ToDouble(boss.Score12 ?? 0.0m) / FullScore12);
691
- if (NumCompetencies >= 13) Boss.Add(100.0d * Convert.ToDouble(boss.Score13 ?? 0.0m) / FullScore13);
692
- if (NumCompetencies >= 14) Boss.Add(100.0d * Convert.ToDouble(boss.Score14 ?? 0.0m) / FullScore14);
693
- if (NumCompetencies >= 15) Boss.Add(100.0d * Convert.ToDouble(boss.Score15 ?? 0.0m) / FullScore15);
694
  }
695
 
696
  var colleague = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 3 orderby x.CreateDate descending select x).FirstOrDefault();
697
  if (colleague != null) {
698
  Colleague = new List<double>();
699
- if (NumCompetencies >= 1) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score1) / FullScore1);
700
- if (NumCompetencies >= 2) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score2) / FullScore2);
701
- if (NumCompetencies >= 3) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score3) / FullScore3);
702
- if (NumCompetencies >= 4) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score4 ?? 0.0m) / FullScore4);
703
- if (NumCompetencies >= 5) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score5 ?? 0.0m) / FullScore5);
704
- if (NumCompetencies >= 6) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score6 ?? 0.0m) / FullScore6);
705
- if (NumCompetencies >= 7) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score7 ?? 0.0m) / FullScore7);
706
- if (NumCompetencies >= 8) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score8 ?? 0.0m) / FullScore8);
707
- if (NumCompetencies >= 9) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score9 ?? 0.0m) / FullScore9);
708
- if (NumCompetencies >= 10) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score10 ?? 0.0m) / FullScore10);
709
- if (NumCompetencies >= 11) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score11 ?? 0.0m) / FullScore11);
710
- if (NumCompetencies >= 12) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score12 ?? 0.0m) / FullScore12);
711
- if (NumCompetencies >= 13) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score13 ?? 0.0m) / FullScore13);
712
- if (NumCompetencies >= 14) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score14 ?? 0.0m) / FullScore14);
713
- if (NumCompetencies >= 15) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score15 ?? 0.0m) / FullScore15);
714
  }
715
 
716
  var subordinate = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 4 orderby x.CreateDate descending select x).FirstOrDefault();
717
  if (subordinate != null) {
718
  Subordinate = new List<double>();
719
- if (NumCompetencies >= 1) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score1) / FullScore1);
720
- if (NumCompetencies >= 2) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score2) / FullScore2);
721
- if (NumCompetencies >= 3) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score3) / FullScore3);
722
- if (NumCompetencies >= 4) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score4 ?? 0.0m) / FullScore4);
723
- if (NumCompetencies >= 5) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score5 ?? 0.0m) / FullScore5);
724
- if (NumCompetencies >= 6) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score6 ?? 0.0m) / FullScore6);
725
- if (NumCompetencies >= 7) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score7 ?? 0.0m) / FullScore7);
726
- if (NumCompetencies >= 8) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score8 ?? 0.0m) / FullScore8);
727
- if (NumCompetencies >= 9) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score9 ?? 0.0m) / FullScore9);
728
- if (NumCompetencies >= 10) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score10 ?? 0.0m) / FullScore10);
729
- if (NumCompetencies >= 11) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score11 ?? 0.0m) / FullScore11);
730
- if (NumCompetencies >= 12) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score12 ?? 0.0m) / FullScore12);
731
- if (NumCompetencies >= 13) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score13 ?? 0.0m) / FullScore13);
732
- if (NumCompetencies >= 14) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score14 ?? 0.0m) / FullScore14);
733
- if (NumCompetencies >= 15) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score15 ?? 0.0m) / FullScore15);
734
  }
735
 
736
  } else { // post-test
@@ -738,81 +655,49 @@ partial class Program {
738
  var self = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 1 orderby x.CreateDate descending select x).FirstOrDefault();
739
  if (self != null) {
740
  Self = new List<double>();
741
- if (NumCompetencies >= 1) Self.Add(100.0d * Convert.ToDouble(self.Score1) / FullScore1);
742
- if (NumCompetencies >= 2) Self.Add(100.0d * Convert.ToDouble(self.Score2) / FullScore2);
743
- if (NumCompetencies >= 3) Self.Add(100.0d * Convert.ToDouble(self.Score3) / FullScore3);
744
- if (NumCompetencies >= 4) Self.Add(100.0d * Convert.ToDouble(self.Score4 ?? 0.0m) / FullScore4);
745
- if (NumCompetencies >= 5) Self.Add(100.0d * Convert.ToDouble(self.Score5 ?? 0.0m) / FullScore5);
746
- if (NumCompetencies >= 6) Self.Add(100.0d * Convert.ToDouble(self.Score6 ?? 0.0m) / FullScore6);
747
- if (NumCompetencies >= 7) Self.Add(100.0d * Convert.ToDouble(self.Score7 ?? 0.0m) / FullScore7);
748
- if (NumCompetencies >= 8) Self.Add(100.0d * Convert.ToDouble(self.Score8 ?? 0.0m) / FullScore8);
749
- if (NumCompetencies >= 9) Self.Add(100.0d * Convert.ToDouble(self.Score9 ?? 0.0m) / FullScore9);
750
- if (NumCompetencies >= 10) Self.Add(100.0d * Convert.ToDouble(self.Score10 ?? 0.0m) / FullScore10);
751
- if (NumCompetencies >= 11) Self.Add(100.0d * Convert.ToDouble(self.Score11 ?? 0.0m) / FullScore11);
752
- if (NumCompetencies >= 12) Self.Add(100.0d * Convert.ToDouble(self.Score12 ?? 0.0m) / FullScore12);
753
- if (NumCompetencies >= 13) Self.Add(100.0d * Convert.ToDouble(self.Score13 ?? 0.0m) / FullScore13);
754
- if (NumCompetencies >= 14) Self.Add(100.0d * Convert.ToDouble(self.Score14 ?? 0.0m) / FullScore14);
755
- if (NumCompetencies >= 15) Self.Add(100.0d * Convert.ToDouble(self.Score15 ?? 0.0m) / FullScore15);
756
  }
757
 
758
  var boss = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 2 orderby x.CreateDate descending select x).FirstOrDefault();
759
  if (boss != null) {
760
  Boss = new List<double>();
761
- if (NumCompetencies >= 1) Boss.Add(100.0d * Convert.ToDouble(boss.Score1) / FullScore1);
762
- if (NumCompetencies >= 2) Boss.Add(100.0d * Convert.ToDouble(boss.Score2) / FullScore2);
763
- if (NumCompetencies >= 3) Boss.Add(100.0d * Convert.ToDouble(boss.Score3) / FullScore3);
764
- if (NumCompetencies >= 4) Boss.Add(100.0d * Convert.ToDouble(boss.Score4 ?? 0.0m) / FullScore4);
765
- if (NumCompetencies >= 5) Boss.Add(100.0d * Convert.ToDouble(boss.Score5 ?? 0.0m) / FullScore5);
766
- if (NumCompetencies >= 6) Boss.Add(100.0d * Convert.ToDouble(boss.Score6 ?? 0.0m) / FullScore6);
767
- if (NumCompetencies >= 7) Boss.Add(100.0d * Convert.ToDouble(boss.Score7 ?? 0.0m) / FullScore7);
768
- if (NumCompetencies >= 8) Boss.Add(100.0d * Convert.ToDouble(boss.Score8 ?? 0.0m) / FullScore8);
769
- if (NumCompetencies >= 9) Boss.Add(100.0d * Convert.ToDouble(boss.Score9 ?? 0.0m) / FullScore9);
770
- if (NumCompetencies >= 10) Boss.Add(100.0d * Convert.ToDouble(boss.Score10 ?? 0.0m) / FullScore10);
771
- if (NumCompetencies >= 11) Boss.Add(100.0d * Convert.ToDouble(boss.Score11 ?? 0.0m) / FullScore11);
772
- if (NumCompetencies >= 12) Boss.Add(100.0d * Convert.ToDouble(boss.Score12 ?? 0.0m) / FullScore12);
773
- if (NumCompetencies >= 13) Boss.Add(100.0d * Convert.ToDouble(boss.Score13 ?? 0.0m) / FullScore13);
774
- if (NumCompetencies >= 14) Boss.Add(100.0d * Convert.ToDouble(boss.Score14 ?? 0.0m) / FullScore14);
775
- if (NumCompetencies >= 15) Boss.Add(100.0d * Convert.ToDouble(boss.Score15 ?? 0.0m) / FullScore15);
776
  }
777
 
778
  var colleague = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 3 orderby x.CreateDate descending select x).FirstOrDefault();
779
  if (colleague != null) {
780
  Colleague = new List<double>();
781
- if (NumCompetencies >= 1) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score1) / FullScore1);
782
- if (NumCompetencies >= 2) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score2) / FullScore2);
783
- if (NumCompetencies >= 3) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score3) / FullScore3);
784
- if (NumCompetencies >= 4) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score4 ?? 0.0m) / FullScore4);
785
- if (NumCompetencies >= 5) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score5 ?? 0.0m) / FullScore5);
786
- if (NumCompetencies >= 6) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score6 ?? 0.0m) / FullScore6);
787
- if (NumCompetencies >= 7) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score7 ?? 0.0m) / FullScore7);
788
- if (NumCompetencies >= 8) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score8 ?? 0.0m) / FullScore8);
789
- if (NumCompetencies >= 9) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score9 ?? 0.0m) / FullScore9);
790
- if (NumCompetencies >= 10) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score10 ?? 0.0m) / FullScore10);
791
- if (NumCompetencies >= 11) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score11 ?? 0.0m) / FullScore11);
792
- if (NumCompetencies >= 12) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score12 ?? 0.0m) / FullScore12);
793
- if (NumCompetencies >= 13) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score13 ?? 0.0m) / FullScore13);
794
- if (NumCompetencies >= 14) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score14 ?? 0.0m) / FullScore14);
795
- if (NumCompetencies >= 15) Colleague.Add(100.0d * Convert.ToDouble(colleague.Score15 ?? 0.0m) / FullScore15);
796
  }
797
 
798
  var subordinate = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 4 orderby x.CreateDate descending select x).FirstOrDefault();
799
  if (subordinate != null) {
800
  Subordinate = new List<double>();
801
- if (NumCompetencies >= 1) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score1) / FullScore1);
802
- if (NumCompetencies >= 2) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score2) / FullScore2);
803
- if (NumCompetencies >= 3) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score3) / FullScore3);
804
- if (NumCompetencies >= 4) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score4 ?? 0.0m) / FullScore4);
805
- if (NumCompetencies >= 5) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score5 ?? 0.0m) / FullScore5);
806
- if (NumCompetencies >= 6) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score6 ?? 0.0m) / FullScore6);
807
- if (NumCompetencies >= 7) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score7 ?? 0.0m) / FullScore7);
808
- if (NumCompetencies >= 8) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score8 ?? 0.0m) / FullScore8);
809
- if (NumCompetencies >= 9) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score9 ?? 0.0m) / FullScore9);
810
- if (NumCompetencies >= 10) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score10 ?? 0.0m) / FullScore10);
811
- if (NumCompetencies >= 11) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score11 ?? 0.0m) / FullScore11);
812
- if (NumCompetencies >= 12) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score12 ?? 0.0m) / FullScore12);
813
- if (NumCompetencies >= 13) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score13 ?? 0.0m) / FullScore13);
814
- if (NumCompetencies >= 14) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score14 ?? 0.0m) / FullScore14);
815
- if (NumCompetencies >= 15) Subordinate.Add(100.0d * Convert.ToDouble(subordinate.Score15 ?? 0.0m) / FullScore15);
816
  }
817
  }
818
 
@@ -826,166 +711,122 @@ partial class Program {
826
  var TrainId = db.Trainee.Find(TraineeId).TrainId;
827
  var TestId = db.Train.Find(TrainId).TestId;
828
 
829
- double FullScore1 = (double)Program.GetFullScoreByCompetency(TestId, 1); if (FullScore1 == 0.0d) FullScore1 = 1.0d;
830
- double FullScore2 = (double)Program.GetFullScoreByCompetency(TestId, 2); if (FullScore2 == 0.0d) FullScore2 = 1.0d;
831
- double FullScore3 = (double)Program.GetFullScoreByCompetency(TestId, 3); if (FullScore3 == 0.0d) FullScore3 = 1.0d;
832
- double FullScore4 = (double)Program.GetFullScoreByCompetency(TestId, 4); if (FullScore4 == 0.0d) FullScore4 = 1.0d;
833
- double FullScore5 = (double)Program.GetFullScoreByCompetency(TestId, 5); if (FullScore5 == 0.0d) FullScore5 = 1.0d;
834
- double FullScore6 = (double)Program.GetFullScoreByCompetency(TestId, 6); if (FullScore6 == 0.0d) FullScore6 = 1.0d;
835
- double FullScore7 = (double)Program.GetFullScoreByCompetency(TestId, 7); if (FullScore7 == 0.0d) FullScore7 = 1.0d;
836
- double FullScore8 = (double)Program.GetFullScoreByCompetency(TestId, 8); if (FullScore8 == 0.0d) FullScore8 = 1.0d;
837
- double FullScore9 = (double)Program.GetFullScoreByCompetency(TestId, 9); if (FullScore9 == 0.0d) FullScore9 = 1.0d;
838
- double FullScore10 = (double)Program.GetFullScoreByCompetency(TestId, 10); if (FullScore10 == 0.0d) FullScore10 = 1.0d;
839
- double FullScore11 = (double)Program.GetFullScoreByCompetency(TestId, 11); if (FullScore11 == 0.0d) FullScore11 = 1.0d;
840
- double FullScore12 = (double)Program.GetFullScoreByCompetency(TestId, 12); if (FullScore12 == 0.0d) FullScore12 = 1.0d;
841
- double FullScore13 = (double)Program.GetFullScoreByCompetency(TestId, 13); if (FullScore13 == 0.0d) FullScore13 = 1.0d;
842
- double FullScore14 = (double)Program.GetFullScoreByCompetency(TestId, 14); if (FullScore14 == 0.0d) FullScore14 = 1.0d;
843
- double FullScore15 = (double)Program.GetFullScoreByCompetency(TestId, 15); if (FullScore15 == 0.0d) FullScore15 = 1.0d;
844
 
845
  var pre = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == EvaluatorId orderby x.CreateDate descending select x).FirstOrDefault();
846
  if (pre != null) {
847
  PreTest = new List<double>();
848
- if (NumCompetencies >= 1) PreTest.Add(100.0d * Convert.ToDouble(pre.Score1) / FullScore1);
849
- if (NumCompetencies >= 2) PreTest.Add(100.0d * Convert.ToDouble(pre.Score2) / FullScore2);
850
- if (NumCompetencies >= 3) PreTest.Add(100.0d * Convert.ToDouble(pre.Score3) / FullScore3);
851
- if (NumCompetencies >= 4) PreTest.Add(100.0d * Convert.ToDouble(pre.Score4 ?? 0.0m) / FullScore4);
852
- if (NumCompetencies >= 5) PreTest.Add(100.0d * Convert.ToDouble(pre.Score5 ?? 0.0m) / FullScore5);
853
- if (NumCompetencies >= 6) PreTest.Add(100.0d * Convert.ToDouble(pre.Score6 ?? 0.0m) / FullScore6);
854
- if (NumCompetencies >= 7) PreTest.Add(100.0d * Convert.ToDouble(pre.Score7 ?? 0.0m) / FullScore7);
855
- if (NumCompetencies >= 8) PreTest.Add(100.0d * Convert.ToDouble(pre.Score8 ?? 0.0m) / FullScore8);
856
- if (NumCompetencies >= 9) PreTest.Add(100.0d * Convert.ToDouble(pre.Score9 ?? 0.0m) / FullScore9);
857
- if (NumCompetencies >= 10) PreTest.Add(100.0d * Convert.ToDouble(pre.Score10 ?? 0.0m) / FullScore10);
858
- if (NumCompetencies >= 11) PreTest.Add(100.0d * Convert.ToDouble(pre.Score11 ?? 0.0m) / FullScore11);
859
- if (NumCompetencies >= 12) PreTest.Add(100.0d * Convert.ToDouble(pre.Score12 ?? 0.0m) / FullScore12);
860
- if (NumCompetencies >= 13) PreTest.Add(100.0d * Convert.ToDouble(pre.Score13 ?? 0.0m) / FullScore13);
861
- if (NumCompetencies >= 14) PreTest.Add(100.0d * Convert.ToDouble(pre.Score14 ?? 0.0m) / FullScore14);
862
- if (NumCompetencies >= 15) PreTest.Add(100.0d * Convert.ToDouble(pre.Score15 ?? 0.0m) / FullScore15);
863
  }
864
 
865
  var post = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == EvaluatorId orderby x.CreateDate descending select x).FirstOrDefault();
866
  if (post != null) {
867
  PostTest = new List<double>();
868
- if (NumCompetencies >= 1) PostTest.Add(100.0d * Convert.ToDouble(post.Score1) / FullScore1);
869
- if (NumCompetencies >= 2) PostTest.Add(100.0d * Convert.ToDouble(post.Score2) / FullScore2);
870
- if (NumCompetencies >= 3) PostTest.Add(100.0d * Convert.ToDouble(post.Score3) / FullScore3);
871
- if (NumCompetencies >= 4) PostTest.Add(100.0d * Convert.ToDouble(post.Score4 ?? 0.0m) / FullScore4);
872
- if (NumCompetencies >= 5) PostTest.Add(100.0d * Convert.ToDouble(post.Score5 ?? 0.0m) / FullScore5);
873
- if (NumCompetencies >= 6) PostTest.Add(100.0d * Convert.ToDouble(post.Score6 ?? 0.0m) / FullScore6);
874
- if (NumCompetencies >= 7) PostTest.Add(100.0d * Convert.ToDouble(post.Score7 ?? 0.0m) / FullScore7);
875
- if (NumCompetencies >= 8) PostTest.Add(100.0d * Convert.ToDouble(post.Score8 ?? 0.0m) / FullScore8);
876
- if (NumCompetencies >= 9) PostTest.Add(100.0d * Convert.ToDouble(post.Score9 ?? 0.0m) / FullScore9);
877
- if (NumCompetencies >= 10) PostTest.Add(100.0d * Convert.ToDouble(post.Score10 ?? 0.0m) / FullScore10);
878
- if (NumCompetencies >= 11) PostTest.Add(100.0d * Convert.ToDouble(post.Score11 ?? 0.0m) / FullScore11);
879
- if (NumCompetencies >= 12) PostTest.Add(100.0d * Convert.ToDouble(post.Score12 ?? 0.0m) / FullScore12);
880
- if (NumCompetencies >= 13) PostTest.Add(100.0d * Convert.ToDouble(post.Score13 ?? 0.0m) / FullScore13);
881
- if (NumCompetencies >= 14) PostTest.Add(100.0d * Convert.ToDouble(post.Score14 ?? 0.0m) / FullScore14);
882
- if (NumCompetencies >= 15) PostTest.Add(100.0d * Convert.ToDouble(post.Score15 ?? 0.0m) / FullScore15);
883
  }
884
 
885
  return;
886
  }
887
 
888
- public static List<double> MaxScore(uint TestId) {
889
-
890
  var db = new CompetencyAssessmentDbContext();
891
 
892
  var test = db.Test.Find(TestId);
893
  if (test == null) return null;
894
 
895
- List<double> L = new List<double>();
896
- for (int i = 0; i < test.NumCompetencies; i++) L.Add(0.0d);
 
 
897
 
898
  var items = from x in db.TestItem where x.TestId == TestId select x;
899
- foreach (var item in items) {
900
 
 
 
901
  decimal max = 0.0m;
902
- if ((item.Score1 ?? 0.0m) > max) max = item.Score1 ?? 0.0m;
903
- if ((item.Score2 ?? 0.0m) > max) max = item.Score2 ?? 0.0m;
904
- if ((item.Score3 ?? 0.0m) > max) max = item.Score3 ?? 0.0m;
905
- if ((item.Score4 ?? 0.0m) > max) max = item.Score4 ?? 0.0m;
906
- if ((item.Score5 ?? 0.0m) > max) max = item.Score5 ?? 0.0m;
907
- if ((item.Score6 ?? 0.0m) > max) max = item.Score6 ?? 0.0m;
908
- if ((item.Score7 ?? 0.0m) > max) max = item.Score7 ?? 0.0m;
909
- if ((item.Score8 ?? 0.0m) > max) max = item.Score8 ?? 0.0m;
910
- if ((item.Score9 ?? 0.0m) > max) max = item.Score9 ?? 0.0m;
911
- if ((item.Score10 ?? 0.0m) > max) max = item.Score10 ?? 0.0m;
912
-
913
- if (item.CompetencyNo == 1) L[0] += (double)max;
914
- if (item.CompetencyNo == 2) L[1] += (double)max;
915
- if (item.CompetencyNo == 3) L[2] += (double)max;
916
- if (item.CompetencyNo == 4) L[3] += (double)max;
917
- if (item.CompetencyNo == 5) L[4] += (double)max;
918
- if (item.CompetencyNo == 6) L[5] += (double)max;
919
- if (item.CompetencyNo == 7) L[6] += (double)max;
920
- if (item.CompetencyNo == 8) L[7] += (double)max;
921
- if (item.CompetencyNo == 9) L[8] += (double)max;
922
- if (item.CompetencyNo == 10) L[9] += (double)max;
923
- if (item.CompetencyNo == 11) L[10] += (double)max;
924
- if (item.CompetencyNo == 12) L[11] += (double)max;
925
- if (item.CompetencyNo == 13) L[12] += (double)max;
926
- if (item.CompetencyNo == 14) L[13] += (double)max;
927
- if (item.CompetencyNo == 15) L[14] += (double)max;
928
  }
929
 
930
  return L;
931
  }
932
 
933
- public static List<double> Threshold(uint TestId) {
934
-
935
  var db = new CompetencyAssessmentDbContext();
936
 
937
  var test = db.Test.Find(TestId);
938
  if (test == null) return null;
939
 
940
- List<double> L = new List<double>();
941
-
942
- if (test.NumCompetencies >= 1) L.Add((double)test.Threshold1);
943
- if (test.NumCompetencies >= 2) L.Add((double)test.Threshold2);
944
- if (test.NumCompetencies >= 3) L.Add((double)test.Threshold3);
945
- if (test.NumCompetencies >= 4) L.Add((double)(test.Threshold4 ?? 0.0m));
946
- if (test.NumCompetencies >= 5) L.Add((double)(test.Threshold5 ?? 0.0m));
947
- if (test.NumCompetencies >= 6) L.Add((double)(test.Threshold6 ?? 0.0m));
948
- if (test.NumCompetencies >= 7) L.Add((double)(test.Threshold7 ?? 0.0m));
949
- if (test.NumCompetencies >= 8) L.Add((double)(test.Threshold8 ?? 0.0m));
950
- if (test.NumCompetencies >= 9) L.Add((double)(test.Threshold9 ?? 0.0m));
951
- if (test.NumCompetencies >= 10) L.Add((double)(test.Threshold10 ?? 0.0m));
952
- if (test.NumCompetencies >= 11) L.Add((double)(test.Threshold11 ?? 0.0m));
953
- if (test.NumCompetencies >= 12) L.Add((double)(test.Threshold12 ?? 0.0m));
954
- if (test.NumCompetencies >= 13) L.Add((double)(test.Threshold13 ?? 0.0m));
955
- if (test.NumCompetencies >= 14) L.Add((double)(test.Threshold14 ?? 0.0m));
956
- if (test.NumCompetencies >= 15) L.Add((double)(test.Threshold15 ?? 0.0m));
957
 
958
  return L;
959
  }
960
 
961
- public static List<string> Recommendation(uint TestId) {
962
 
 
 
963
  var db = new CompetencyAssessmentDbContext();
964
 
965
  var test = db.Test.Find(TestId);
966
  if (test == null) return null;
967
 
968
- List<string> L = new List<string>();
969
 
970
- if (test.NumCompetencies >= 1) L.Add(test.Recommendation1);
971
- if (test.NumCompetencies >= 2) L.Add(test.Recommendation2);
972
- if (test.NumCompetencies >= 3) L.Add(test.Recommendation3);
973
- if (test.NumCompetencies >= 4) L.Add(test.Recommendation4 ?? "");
974
- if (test.NumCompetencies >= 5) L.Add(test.Recommendation5 ?? "");
975
- if (test.NumCompetencies >= 6) L.Add(test.Recommendation6 ?? "");
976
- if (test.NumCompetencies >= 7) L.Add(test.Recommendation7 ?? "");
977
- if (test.NumCompetencies >= 8) L.Add(test.Recommendation8 ?? "");
978
- if (test.NumCompetencies >= 9) L.Add(test.Recommendation9 ?? "");
979
- if (test.NumCompetencies >= 10) L.Add(test.Recommendation10 ?? "");
980
- if (test.NumCompetencies >= 11) L.Add(test.Recommendation11 ?? "");
981
- if (test.NumCompetencies >= 12) L.Add(test.Recommendation12 ?? "");
982
- if (test.NumCompetencies >= 13) L.Add(test.Recommendation13 ?? "");
983
- if (test.NumCompetencies >= 14) L.Add(test.Recommendation14 ?? "");
984
- if (test.NumCompetencies >= 15) L.Add(test.Recommendation15 ?? "");
985
 
986
  return L;
987
  }
988
 
 
989
  public static string ScoreLevel(double x) {
990
 
991
  /*
 
270
  return date + " " + month + " " + year + " " + hour + ":" + minute + " ???.";
271
  }
272
 
273
+ public static List<string> ListCompetencies(byte n, params string[] items)
274
+ {
275
+ var list = new List<string>();
276
+
277
+ for (int i = 0; i < n && i < items.Length; i++)
278
+ {
279
+ list.Add(items[i]);
280
+ }
281
+
282
+ return list;
 
 
 
 
 
 
 
 
 
 
283
  }
284
 
285
+ public static List<string> ListThreholds(byte n, params string[] items)
286
+ {
287
+ var list = new List<string>();
288
+
289
+ for (int i = 0; i < n && i < items.Length; i++)
290
+ {
291
+ list.Add(items[i]);
292
+ }
293
+
294
+ return list;
 
 
 
 
 
 
 
 
 
 
295
  }
296
 
297
+ public static List<decimal> ListThresholds(byte n, params decimal?[] items)
298
+ {
299
+ var list = new List<decimal>();
300
+
301
+ for (int i = 0; i < n && i < items.Length; i++)
302
+ {
303
+ list.Add(items[i] ?? 0m);
304
+ }
305
+
306
+ return list;
 
 
 
 
 
 
 
 
 
 
307
  }
308
 
309
+ public static List<string> ListRecommendations(byte n, params string[] items)
310
+ {
311
+ var list = new List<string>();
312
+
313
+ for (int i = 0; i < n && i < items.Length; i++)
314
+ {
315
+ list.Add(items[i]);
316
+ }
317
+
318
+ return list;
 
 
 
 
319
  }
320
 
321
+ public static List<string> ListChoices(byte n, params string[] items)
322
+ {
323
+ var list = new List<string>();
324
+
325
+ for (int i = 0; i < n && i < items.Length; i++)
326
+ {
327
+ list.Add(items[i]);
328
+ }
329
+
330
+ return list;
 
 
 
 
331
  }
332
 
333
+ public static List<string> ListImages(byte n, params string[] items)
334
+ {
335
+ var basePath = $"{Program.DomainName}/files/competencyassessment/";
336
+ var list = new List<string>();
337
+
338
+ for (int i = 0; i < n && i < items.Length; i++)
339
+ {
340
+ if (!string.IsNullOrEmpty(items[i]))
341
+ {
342
+ list.Add(basePath + items[i]);
343
+ }
344
+ }
345
+
346
+ return list;
347
  }
348
 
349
  public static List<string> ListAnswers(string answers) {
 
353
  return L;
354
  }
355
 
356
+ public static List<decimal> ListScores(byte n, params decimal?[] items)
357
+ {
358
+ var list = new List<decimal>();
359
+
360
+ for (int i = 0; i < n && i < items.Length; i++)
361
+ {
362
+ list.Add(items[i] ?? 0m);
363
+ }
364
+
365
+ return list;
 
 
 
 
 
 
 
 
 
 
366
  }
367
 
368
+ public static List<string> ListScoreStrings(byte n, params decimal?[] items)
369
+ {
370
+ var list = new List<string>();
371
+
372
+ for (int i = 0; i < n; i++)
373
+ {
374
+ if (i < items.Length)
375
+ list.Add((items[i] ?? 0m).ToString("0.00"));
376
+ else
377
+ list.Add("-");
378
+ }
379
+
380
+ return list;
 
 
 
 
 
 
 
 
381
  }
382
 
383
+
384
+ public static List<string> ListPercents(byte n, decimal total, params decimal?[] items)
385
+ {
386
+ var list = new List<string>();
387
+ const decimal Hundred = 100m;
388
+
389
+ for (int i = 0; i < n; i++)
390
+ {
391
+ if (i < items.Length && total != 0m)
392
+ {
393
+ var value = Hundred * (items[i] ?? 0m) / total;
394
+ list.Add(value.ToString("0.00"));
395
+ }
396
+ else
397
+ {
398
+ list.Add("-");
399
+ }
400
+ }
401
+
402
+ return list;
403
+ }
404
+
405
+
406
  public static int CountTrainees(uint TrainId) {
407
 
408
  var db = new CompetencyAssessmentDbContext();
 
445
  select x;
446
 
447
  decimal sum = 0.0m;
448
+ foreach (var item in items)
449
+ {
450
+ sum += new decimal?[]
451
+ {
452
+ item.Score1, item.Score2, item.Score3, item.Score4, item.Score5,
453
+ item.Score6, item.Score7, item.Score8, item.Score9, item.Score10
454
+ }.Max() ?? 0m;
 
 
 
 
 
 
455
  }
456
 
457
+
458
  return sum;
459
  }
460
 
 
467
  select x;
468
 
469
  decimal sum = 0.0m;
470
+ foreach (var item in items)
471
+ {
472
+ sum += new decimal?[]
473
+ {
474
+ item.Score1, item.Score2, item.Score3, item.Score4, item.Score5,
475
+ item.Score6, item.Score7, item.Score8, item.Score9, item.Score10
476
+ }.Max() ?? 0m;
 
 
 
 
 
 
477
  }
478
 
479
  return sum;
 
591
  var TrainId = db.Trainee.Find(TraineeId).TrainId;
592
  var TestId = db.Train.Find(TrainId).TestId;
593
 
594
+ double[] FullScore = new double[NumCompetencies];
595
+
596
+ for (int i = 0; i < NumCompetencies; i++)
597
+ {
598
+ FullScore[i] = (double)Program.GetFullScoreByCompetency(TestId, (byte)(i + 1));
599
+ if (FullScore[i] == 0.0d)
600
+ FullScore[i] = 1.0d;
601
+ }
 
 
 
 
 
 
 
602
 
603
  if (IsPreTest) {
604
 
605
  var self = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 1 orderby x.CreateDate descending select x).FirstOrDefault();
606
  if (self != null) {
607
  Self = new List<double>();
608
+ for (int i = 0; i < NumCompetencies; i++)
609
+ {
610
+ var prop = self.GetType().GetProperty($"Score{i + 1}");
611
+ decimal value = prop?.GetValue(self) as decimal? ?? 0.0m;
612
+
613
+ Self.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
614
+ }
 
 
 
 
 
 
 
 
615
  }
616
 
617
  var boss = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 2 orderby x.CreateDate descending select x).FirstOrDefault();
618
  if (boss != null) {
619
  Boss = new List<double>();
620
+ for (int i = 0; i < NumCompetencies; i++)
621
+ {
622
+ var prop = boss.GetType().GetProperty($"Score{i + 1}");
623
+ decimal value = prop?.GetValue(boss) as decimal? ?? 0.0m;
624
+
625
+ Boss.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
626
+ }
 
 
 
 
 
 
 
 
627
  }
628
 
629
  var colleague = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 3 orderby x.CreateDate descending select x).FirstOrDefault();
630
  if (colleague != null) {
631
  Colleague = new List<double>();
632
+ for (int i = 0; i < NumCompetencies; i++)
633
+ {
634
+ var prop = colleague.GetType().GetProperty($"Score{i + 1}");
635
+ decimal value = prop?.GetValue(colleague) as decimal? ?? 0.0m;
636
+
637
+ Colleague.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
638
+ }
 
 
 
 
 
 
 
 
639
  }
640
 
641
  var subordinate = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 4 orderby x.CreateDate descending select x).FirstOrDefault();
642
  if (subordinate != null) {
643
  Subordinate = new List<double>();
644
+ for (int i = 0; i < NumCompetencies; i++)
645
+ {
646
+ var prop = subordinate.GetType().GetProperty($"Score{i + 1}");
647
+ decimal value = prop?.GetValue(subordinate) as decimal? ?? 0.0m;
648
+
649
+ Subordinate.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
650
+ }
 
 
 
 
 
 
 
 
651
  }
652
 
653
  } else { // post-test
 
655
  var self = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 1 orderby x.CreateDate descending select x).FirstOrDefault();
656
  if (self != null) {
657
  Self = new List<double>();
658
+ for (int i = 0; i < NumCompetencies; i++)
659
+ {
660
+ var prop = self.GetType().GetProperty($"Score{i + 1}");
661
+ decimal value = prop?.GetValue(self) as decimal? ?? 0.0m;
662
+
663
+ Self.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
664
+ }
 
 
 
 
 
 
 
 
665
  }
666
 
667
  var boss = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 2 orderby x.CreateDate descending select x).FirstOrDefault();
668
  if (boss != null) {
669
  Boss = new List<double>();
670
+ for (int i = 0; i < NumCompetencies; i++)
671
+ {
672
+ var prop = boss.GetType().GetProperty($"Score{i + 1}");
673
+ decimal value = prop?.GetValue(boss) as decimal? ?? 0.0m;
674
+
675
+ Boss.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
676
+ }
 
 
 
 
 
 
 
 
677
  }
678
 
679
  var colleague = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 3 orderby x.CreateDate descending select x).FirstOrDefault();
680
  if (colleague != null) {
681
  Colleague = new List<double>();
682
+ for (int i = 0; i < NumCompetencies; i++)
683
+ {
684
+ var prop = colleague.GetType().GetProperty($"Score{i + 1}");
685
+ decimal value = prop?.GetValue(colleague) as decimal? ?? 0.0m;
686
+
687
+ Colleague.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
688
+ }
 
 
 
 
 
 
 
 
689
  }
690
 
691
  var subordinate = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == 4 orderby x.CreateDate descending select x).FirstOrDefault();
692
  if (subordinate != null) {
693
  Subordinate = new List<double>();
694
+ for (int i = 0; i < NumCompetencies; i++)
695
+ {
696
+ var prop = subordinate.GetType().GetProperty($"Score{i + 1}");
697
+ decimal value = prop?.GetValue(subordinate) as decimal? ?? 0.0m;
698
+
699
+ Subordinate.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
700
+ }
 
 
 
 
 
 
 
 
701
  }
702
  }
703
 
 
711
  var TrainId = db.Trainee.Find(TraineeId).TrainId;
712
  var TestId = db.Train.Find(TrainId).TestId;
713
 
714
+ double[] FullScore = new double[NumCompetencies];
715
+
716
+ for (int i = 0; i < NumCompetencies; i++)
717
+ {
718
+ FullScore[i] = (double)Program.GetFullScoreByCompetency(TestId, (byte)(i + 1));
719
+ if (FullScore[i] == 0.0d)
720
+ FullScore[i] = 1.0d;
721
+ }
 
 
 
 
 
 
 
722
 
723
  var pre = (from x in db.PreTestScore where x.TraineeId == TraineeId && x.EvaluatorId == EvaluatorId orderby x.CreateDate descending select x).FirstOrDefault();
724
  if (pre != null) {
725
  PreTest = new List<double>();
726
+ for (int i = 0; i < NumCompetencies; i++)
727
+ {
728
+ var prop = pre.GetType().GetProperty($"Score{i + 1}");
729
+ decimal value = prop?.GetValue(pre) as decimal? ?? 0.0m;
730
+
731
+ PreTest.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
732
+ }
 
 
 
 
 
 
 
 
733
  }
734
 
735
  var post = (from x in db.PostTestScore where x.TraineeId == TraineeId && x.EvaluatorId == EvaluatorId orderby x.CreateDate descending select x).FirstOrDefault();
736
  if (post != null) {
737
  PostTest = new List<double>();
738
+ for (int i = 0; i < NumCompetencies; i++)
739
+ {
740
+ var prop = post.GetType().GetProperty($"Score{i + 1}");
741
+ decimal value = prop?.GetValue(post) as decimal? ?? 0.0m;
742
+
743
+ PostTest.Add(100.0d * Convert.ToDouble(value) / FullScore[i]);
744
+ }
 
 
 
 
 
 
 
 
745
  }
746
 
747
  return;
748
  }
749
 
750
+ public static List<double> MaxScore(uint TestId)
751
+ {
752
  var db = new CompetencyAssessmentDbContext();
753
 
754
  var test = db.Test.Find(TestId);
755
  if (test == null) return null;
756
 
757
+ // initialize result list
758
+ var L = new List<double>(test.NumCompetencies);
759
+ for (int i = 0; i < test.NumCompetencies; i++)
760
+ L.Add(0.0d);
761
 
762
  var items = from x in db.TestItem where x.TestId == TestId select x;
 
763
 
764
+ foreach (var item in items)
765
+ {
766
  decimal max = 0.0m;
767
+
768
+ // loop Score1 .. Score10
769
+ for (int i = 0; i < 10; i++)
770
+ {
771
+ var prop = item.GetType().GetProperty($"Score{i + 1}");
772
+ decimal value = prop?.GetValue(item) as decimal? ?? 0.0m;
773
+
774
+ if (value > max)
775
+ max = value;
776
+ }
777
+
778
+ // CompetencyNo is 1-based
779
+ int idx = item.CompetencyNo - 1;
780
+
781
+ if (idx >= 0 && idx < L.Count)
782
+ L[idx] += (double)max;
 
 
 
 
 
 
 
 
 
 
783
  }
784
 
785
  return L;
786
  }
787
 
788
+ public static List<double> Threshold(uint TestId)
789
+ {
790
  var db = new CompetencyAssessmentDbContext();
791
 
792
  var test = db.Test.Find(TestId);
793
  if (test == null) return null;
794
 
795
+ var L = new List<double>(test.NumCompetencies);
796
+
797
+ for (int i = 0; i < test.NumCompetencies; i++)
798
+ {
799
+ var prop = test.GetType().GetProperty($"Threshold{i + 1}");
800
+ decimal value = prop?.GetValue(test) as decimal? ?? 0.0m;
801
+
802
+ L.Add((double)value);
803
+ }
 
 
 
 
 
 
 
 
804
 
805
  return L;
806
  }
807
 
 
808
 
809
+ public static List<string> Recommendation(uint TestId)
810
+ {
811
  var db = new CompetencyAssessmentDbContext();
812
 
813
  var test = db.Test.Find(TestId);
814
  if (test == null) return null;
815
 
816
+ var L = new List<string>(test.NumCompetencies);
817
 
818
+ for (int i = 0; i < test.NumCompetencies; i++)
819
+ {
820
+ var prop = test.GetType().GetProperty($"Recommendation{i + 1}");
821
+ string value = prop?.GetValue(test) as string ?? "";
822
+
823
+ L.Add(value);
824
+ }
 
 
 
 
 
 
 
 
825
 
826
  return L;
827
  }
828
 
829
+
830
  public static string ScoreLevel(double x) {
831
 
832
  /*