PluginProbe
The Innovative Form Builder – IvyForms / 1.0
The Innovative Form Builder – IvyForms v1.0
1.5.1 1.5 1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 All 27 releases
ivyforms / backend / src / Services / Template / TechnicalRoleInterviewFeedbackFormTemplate.php

TechnicalRoleInterviewFeedbackFormTemplate.php in The Innovative Form Builder – IvyForms 1.0, at backend/src/Services/Template/TechnicalRoleInterviewFeedbackFormTemplate.php

680 lines 24.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IvyForms\Services\Template;
4
5 use IvyForms\Services\Translations\BackendStrings;
6
7 class TechnicalRoleInterviewFeedbackFormTemplate
8 {
9 /**
10 * Get the Technical Role Interview Feedback Form template
11 *
12 * @return array<string, mixed>
13 */
14 public static function getTemplate(): array
15 {
16 return [
17 'id' => 'technical_role_interview_feedback_form',
18 'name' => BackendStrings::getTemplateStrings()['technical_role_interview_feedback_form'],
19 'description' => BackendStrings::getTemplateStrings()['technical_role_interview_feedback_form_desc'],
20 'category' => 'feedback-forms',
21 'subcategory' => 'interview-feedback-forms',
22 'is_pro' => false,
23 'screenshot' => IVYFORMS_TEMPLATES_IMAGES_URL . 'technical-role-interview-feedback-form.svg',
24 'form_data' => [
25 'name' => BackendStrings::getTemplateStrings()['technical_role_interview_feedback_form'],
26 'published' => 1,
27 'showTitle' => 1,
28 'storeEntries' => 1,
29 'integrationSettings' => TemplateDefaults::getDefaultIntegrationSettings(),
30 'fields' => array_merge(
31 self::getCandidateInformationFields(),
32 self::getRatingFields(),
33 self::getTechnicalAssessmentFields(),
34 self::getInterviewerInformationFields()
35 ),
36 'settings' => []
37 ]
38 ];
39 }
40
41 /**
42 * Get candidate information fields
43 *
44 * @return array<int, array<string, mixed>>
45 */
46 private static function getCandidateInformationFields(): array
47 {
48 return [
49 // Candidate Full Name
50 [
51 'id' => 1,
52 'fieldIndex' => 1,
53 'type' => 'name',
54 'label' => BackendStrings::getTemplateStrings()['candidate_full_name'],
55 'parentId' => null,
56 'defaultValue' => '',
57 'placeholder' => '',
58 'required' => true,
59 'readonly' => false,
60 'position' => 1,
61 ],
62 // First Name - Child of Name Field
63 [
64 'id' => 2,
65 'type' => 'text',
66 'label' => BackendStrings::getNewFormStrings()['first_name'],
67 'placeholder' => BackendStrings::getTemplateStrings()['enter_your_first_name'],
68 'required' => true,
69 'parentId' => 1,
70 'fieldIndex' => 1,
71 'defaultValue' => '',
72 'position' => 1,
73 'optionHide' => false,
74 'description' => '',
75 'settings' => json_encode(['nameFieldType' => 'nameField1']),
76 ],
77 // Last Name - Child of Name Field
78 [
79 'id' => 3,
80 'type' => 'text',
81 'label' => BackendStrings::getNewFormStrings()['last_name'],
82 'placeholder' => BackendStrings::getTemplateStrings()['enter_your_last_name'],
83 'required' => true,
84 'parentId' => 1,
85 'fieldIndex' => 1,
86 'defaultValue' => '',
87 'position' => 2,
88 'optionHide' => false,
89 'description' => '',
90 'settings' => json_encode(['nameFieldType' => 'nameField2']),
91 ],
92 // Role Applied For
93 [
94 'id' => 11,
95 'fieldIndex' => 2,
96 'type' => 'select',
97 'label' => BackendStrings::getTemplateStrings()['role_applied_for'],
98 'placeholder' => BackendStrings::getTemplateStrings()['select_role_applied_for'],
99 'required' => true,
100 'parentId' => null,
101 'defaultValue' => '',
102 'position' => 2,
103 'fieldOptions' => [
104 [
105 'id' => 4,
106 'label' => BackendStrings::getTemplateStrings()['frontend_developer'],
107 'value' => 'Frontend Developer',
108 'isDefault' => false,
109 'position' => 1
110 ],
111 [
112 'id' => 5,
113 'label' => BackendStrings::getTemplateStrings()['backend_developer'],
114 'value' => 'Backend Developer',
115 'isDefault' => false,
116 'position' => 2
117 ],
118 [
119 'id' => 6,
120 'label' => BackendStrings::getTemplateStrings()['fullstack_developer'],
121 'value' => 'Full-stack Developer',
122 'isDefault' => false,
123 'position' => 3
124 ],
125 [
126 'id' => 7,
127 'label' => BackendStrings::getTemplateStrings()['qa_engineer'],
128 'value' => 'QA Engineer',
129 'isDefault' => false,
130 'position' => 4
131 ],
132 [
133 'id' => 8,
134 'label' => BackendStrings::getTemplateStrings()['data_engineer_analyst'],
135 'value' => 'Data Engineer / Analyst',
136 'isDefault' => false,
137 'position' => 5
138 ],
139 [
140 'id' => 9,
141 'label' => BackendStrings::getTemplateStrings()['devops_engineer'],
142 'value' => 'DevOps Engineer',
143 'isDefault' => false,
144 'position' => 6
145 ],
146 [
147 'id' => 10,
148 'label' => BackendStrings::getTemplateStrings()['other'],
149 'value' => 'Other',
150 'isDefault' => false,
151 'position' => 7
152 ],
153 ]
154 ],
155 // Interview Stage(s)
156 [
157 'id' => 17,
158 'fieldIndex' => 3,
159 'type' => 'checkbox',
160 'label' => BackendStrings::getTemplateStrings()['interview_stages'],
161 'required' => true,
162 'parentId' => null,
163 'defaultValue' => '',
164 'placeholder' => '',
165 'position' => 3,
166 'fieldOptions' => [
167 [
168 'id' => 12,
169 'label' => BackendStrings::getTemplateStrings()['technical_screening'],
170 'value' => 'Technical screening',
171 'isDefault' => false,
172 'position' => 1
173 ],
174 [
175 'id' => 13,
176 'label' => BackendStrings::getTemplateStrings()['live_coding_interview'],
177 'value' => 'Live coding interview',
178 'isDefault' => false,
179 'position' => 2
180 ],
181 [
182 'id' => 14,
183 'label' => BackendStrings::getTemplateStrings()['system_design_interview'],
184 'value' => 'System design interview',
185 'isDefault' => false,
186 'position' => 3
187 ],
188 [
189 'id' => 15,
190 'label' => BackendStrings::getTemplateStrings()['technical_task_assignment'],
191 'value' => 'Technical task / assignment',
192 'isDefault' => false,
193 'position' => 4
194 ],
195 [
196 'id' => 16,
197 'label' => BackendStrings::getTemplateStrings()['final_technical_round'],
198 'value' => 'Final technical round',
199 'isDefault' => false,
200 'position' => 5
201 ],
202 ]
203 ],
204 ];
205 }
206
207 /**
208 * Get rating fields
209 *
210 * @return array<int, array<string, mixed>>
211 */
212 private static function getRatingFields(): array
213 {
214 return array_merge(
215 self::getTechnicalKnowledgeRating(),
216 self::getProblemSolvingApproachRating(),
217 self::getCodeQualitySolutionQualityRating(),
218 self::getSystemDesignArchitectureRating()
219 );
220 }
221
222 /**
223 * Get technical knowledge rating
224 *
225 * @return array<int, array<string, mixed>>
226 */
227 private static function getTechnicalKnowledgeRating(): array
228 {
229 return [[
230 'id' => 18,
231 'fieldIndex' => 4,
232 'type' => 'rating',
233 'label' => BackendStrings::getTemplateStrings()['technical_knowledge'],
234 'required' => true,
235 'defaultValue' => '',
236 'placeholder' => '',
237 'position' => 4,
238 'labelPosition' => 'default',
239 'ratingIcon' => 'star',
240 'description' => BackendStrings::getTemplateStrings()['technical_knowledge_desc'],
241 'fieldOptions' => self::getStandardRatingOptions(8),
242 'showValues' => false,
243 'showRatingText' => false,
244 ]];
245 }
246
247 /**
248 * Get problem-solving approach rating
249 *
250 * @return array<int, array<string, mixed>>
251 */
252 private static function getProblemSolvingApproachRating(): array
253 {
254 return [[
255 'id' => 19,
256 'fieldIndex' => 5,
257 'type' => 'rating',
258 'label' => BackendStrings::getTemplateStrings()['problem_solving_approach'],
259 'required' => true,
260 'defaultValue' => '',
261 'placeholder' => '',
262 'position' => 5,
263 'labelPosition' => 'default',
264 'ratingIcon' => 'star',
265 'description' => BackendStrings::getTemplateStrings()['problem_solving_approach_desc'],
266 'fieldOptions' => self::getStandardRatingOptions(13),
267 'showValues' => false,
268 'showRatingText' => false,
269 ]];
270 }
271
272 /**
273 * Get code quality/solution quality rating
274 *
275 * @return array<int, array<string, mixed>>
276 */
277 private static function getCodeQualitySolutionQualityRating(): array
278 {
279 return [[
280 'id' => 20,
281 'fieldIndex' => 6,
282 'type' => 'rating',
283 'label' => BackendStrings::getTemplateStrings()['code_quality_solution_quality'],
284 'required' => true,
285 'defaultValue' => '',
286 'placeholder' => '',
287 'position' => 6,
288 'labelPosition' => 'default',
289 'ratingIcon' => 'star',
290 'description' => BackendStrings::getTemplateStrings()['code_quality_solution_quality_desc'],
291 'fieldOptions' => self::getStandardRatingOptions(18),
292 'showValues' => false,
293 'showRatingText' => false,
294 ]];
295 }
296
297 /**
298 * Get system design and architecture rating
299 *
300 * @return array<int, array<string, mixed>>
301 */
302 private static function getSystemDesignArchitectureRating(): array
303 {
304 return [[
305 'id' => 21,
306 'fieldIndex' => 7,
307 'type' => 'rating',
308 'label' => BackendStrings::getTemplateStrings()['system_design_architecture'],
309 'required' => false,
310 'defaultValue' => '',
311 'placeholder' => '',
312 'position' => 7,
313 'labelPosition' => 'default',
314 'ratingIcon' => 'star',
315 'description' => BackendStrings::getTemplateStrings()['system_design_architecture_desc'],
316 'fieldOptions' => self::getStandardRatingOptions(23),
317 'showValues' => false,
318 'showRatingText' => false,
319 ]];
320 }
321
322 /**
323 * Get standard rating options
324 *
325 * @return array<int, array<string, mixed>>
326 */
327 private static function getStandardRatingOptions(int $startId): array
328 {
329 return [
330 [
331 'id' => $startId,
332 'label' => BackendStrings::getNewFormStrings()['good'],
333 'value' => '1',
334 'isDefault' => false,
335 'position' => 1
336 ],
337 [
338 'id' => $startId + 1,
339 'label' => BackendStrings::getNewFormStrings()['nice'],
340 'value' => '2',
341 'isDefault' => false,
342 'position' => 2
343 ],
344 [
345 'id' => $startId + 2,
346 'label' => BackendStrings::getNewFormStrings()['very_good'],
347 'value' => '3',
348 'isDefault' => false,
349 'position' => 3
350 ],
351 [
352 'id' => $startId + 3,
353 'label' => BackendStrings::getNewFormStrings()['awesome'],
354 'value' => '4',
355 'isDefault' => false,
356 'position' => 4
357 ],
358 [
359 'id' => $startId + 4,
360 'label' => BackendStrings::getNewFormStrings()['amazing'],
361 'value' => '5',
362 'isDefault' => false,
363 'position' => 5
364 ],
365 ];
366 }
367
368 /**
369 * Get technical assessment fields
370 *
371 * @return array<int, array<string, mixed>>
372 */
373 private static function getTechnicalAssessmentFields(): array
374 {
375 return array_merge(
376 self::getTechnicalStrengthsObservedField(),
377 self::getTechnicalConcernsField(),
378 self::getTechnicalNotesField(),
379 self::getTechnicalReadinessForRoleField(),
380 self::getTechnicalHiringRecommendationField()
381 );
382 }
383
384 /**
385 * Get technical strengths observed field
386 *
387 * @return array<int, array<string, mixed>>
388 */
389 private static function getTechnicalStrengthsObservedField(): array
390 {
391 return [[
392 'id' => 33,
393 'fieldIndex' => 8,
394 'type' => 'checkbox',
395 'label' => BackendStrings::getTemplateStrings()['technical_strengths_observed'],
396 'required' => false,
397 'parentId' => null,
398 'defaultValue' => '',
399 'placeholder' => '',
400 'position' => 8,
401 'fieldOptions' => [
402 [
403 'id' => 27,
404 'label' => BackendStrings::getTemplateStrings()['strong_fundamentals'],
405 'value' => 'Strong fundamentals',
406 'isDefault' => false,
407 'position' => 1
408 ],
409 [
410 'id' => 28,
411 'label' => BackendStrings::getTemplateStrings()['clean_readable_code'],
412 'value' => 'Clean and readable code',
413 'isDefault' => false,
414 'position' => 2
415 ],
416 [
417 'id' => 29,
418 'label' => BackendStrings::getTemplateStrings()['efficient_algorithms'],
419 'value' => 'Efficient algorithms',
420 'isDefault' => false,
421 'position' => 3
422 ],
423 [
424 'id' => 30,
425 'label' => BackendStrings::getTemplateStrings()['good_debugging_skills'],
426 'value' => 'Good debugging skills',
427 'isDefault' => false,
428 'position' => 4
429 ],
430 [
431 'id' => 31,
432 'label' => BackendStrings::getTemplateStrings()['strong_system_design_thinking'],
433 'value' => 'Strong system design thinking',
434 'isDefault' => false,
435 'position' => 5
436 ],
437 [
438 'id' => 32,
439 'label' => BackendStrings::getTemplateStrings()['knowledge_best_practices'],
440 'value' => 'Knowledge of best practices',
441 'isDefault' => false,
442 'position' => 6
443 ],
444 ]
445 ]];
446 }
447
448 /**
449 * Get technical concerns field
450 *
451 * @return array<int, array<string, mixed>>
452 */
453 private static function getTechnicalConcernsField(): array
454 {
455 return [[
456 'id' => 39,
457 'fieldIndex' => 9,
458 'type' => 'checkbox',
459 'label' => BackendStrings::getTemplateStrings()['technical_concerns'],
460 'required' => false,
461 'parentId' => null,
462 'defaultValue' => '',
463 'placeholder' => '',
464 'position' => 9,
465 'fieldOptions' => [
466 [
467 'id' => 34,
468 'label' => BackendStrings::getTemplateStrings()['gaps_core_knowledge'],
469 'value' => 'Gaps in core knowledge',
470 'isDefault' => false,
471 'position' => 1
472 ],
473 [
474 'id' => 35,
475 'label' => BackendStrings::getTemplateStrings()['inefficient_solutions'],
476 'value' => 'Inefficient solutions',
477 'isDefault' => false,
478 'position' => 2
479 ],
480 [
481 'id' => 36,
482 'label' => BackendStrings::getTemplateStrings()['poor_code_organization'],
483 'value' => 'Poor code organization',
484 'isDefault' => false,
485 'position' => 3
486 ],
487 [
488 'id' => 37,
489 'label' => BackendStrings::getTemplateStrings()['limited_experience_tools_stack'],
490 'value' => 'Limited experience with tools/stack',
491 'isDefault' => false,
492 'position' => 4
493 ],
494 [
495 'id' => 38,
496 'label' => BackendStrings::getTemplateStrings()['difficulty_explaining_decisions'],
497 'value' => 'Difficulty explaining decisions',
498 'isDefault' => false,
499 'position' => 5
500 ],
501 ]
502 ]];
503 }
504
505 /**
506 * Get technical notes field
507 *
508 * @return array<int, array<string, mixed>>
509 */
510 private static function getTechnicalNotesField(): array
511 {
512 return [[
513 'id' => 40,
514 'fieldIndex' => 10,
515 'type' => 'textarea',
516 'label' => BackendStrings::getTemplateStrings()['technical_notes'],
517 'placeholder' => BackendStrings::getTemplateStrings()['technical_notes_placeholder'],
518 'required' => false,
519 'parentId' => null,
520 'defaultValue' => '',
521 'position' => 10,
522 'rows' => 3,
523 ]];
524 }
525
526 /**
527 * Get technical readiness for role field
528 *
529 * @return array<int, array<string, mixed>>
530 */
531 private static function getTechnicalReadinessForRoleField(): array
532 {
533 return [[
534 'id' => 45,
535 'fieldIndex' => 11,
536 'type' => 'radio',
537 'label' => BackendStrings::getTemplateStrings()['technical_readiness_role'],
538 'required' => true,
539 'parentId' => null,
540 'defaultValue' => '',
541 'placeholder' => '',
542 'position' => 11,
543 'fieldOptions' => [
544 [
545 'id' => 41,
546 'label' => BackendStrings::getTemplateStrings()['exceeds_expectations'],
547 'value' => 'Exceeds expectations',
548 'isDefault' => false,
549 'position' => 1
550 ],
551 [
552 'id' => 42,
553 'label' => BackendStrings::getTemplateStrings()['meets_expectations'],
554 'value' => 'Meets expectations',
555 'isDefault' => false,
556 'position' => 2
557 ],
558 [
559 'id' => 43,
560 'label' => BackendStrings::getTemplateStrings()['partially_meets_expectations'],
561 'value' => 'Partially meets expectations',
562 'isDefault' => false,
563 'position' => 3
564 ],
565 [
566 'id' => 44,
567 'label' => BackendStrings::getTemplateStrings()['does_not_meet_expectations'],
568 'value' => 'Does not meet expectations',
569 'isDefault' => false,
570 'position' => 4
571 ],
572 ]
573 ]];
574 }
575
576 /**
577 * Get technical hiring recommendation field
578 *
579 * @return array<int, array<string, mixed>>
580 */
581 private static function getTechnicalHiringRecommendationField(): array
582 {
583 return [[
584 'id' => 50,
585 'fieldIndex' => 12,
586 'type' => 'radio',
587 'label' => BackendStrings::getTemplateStrings()['technical_hiring_recommendation'],
588 'required' => true,
589 'parentId' => null,
590 'defaultValue' => '',
591 'placeholder' => '',
592 'position' => 12,
593 'fieldOptions' => [
594 [
595 'id' => 46,
596 'label' => BackendStrings::getTemplateStrings()['strong_hire'],
597 'value' => 'Strong hire',
598 'isDefault' => false,
599 'position' => 1
600 ],
601 [
602 'id' => 47,
603 'label' => BackendStrings::getTemplateStrings()['hire'],
604 'value' => 'Hire',
605 'isDefault' => false,
606 'position' => 2
607 ],
608 [
609 'id' => 48,
610 'label' => BackendStrings::getTemplateStrings()['consider_after_improvement'],
611 'value' => 'Consider after improvement',
612 'isDefault' => false,
613 'position' => 3
614 ],
615 [
616 'id' => 49,
617 'label' => BackendStrings::getTemplateStrings()['do_not_hire'],
618 'value' => 'Do not hire',
619 'isDefault' => false,
620 'position' => 4
621 ],
622 ]
623 ]];
624 }
625
626 /**
627 * Get interviewer information fields
628 *
629 * @return array<int, array<string, mixed>>
630 */
631 private static function getInterviewerInformationFields(): array
632 {
633 return [
634 // Interviewer Name
635 [
636 'id' => 51,
637 'fieldIndex' => 13,
638 'type' => 'name',
639 'label' => BackendStrings::getTemplateStrings()['interviewer_name'],
640 'parentId' => null,
641 'defaultValue' => '',
642 'placeholder' => '',
643 'required' => false,
644 'readonly' => false,
645 'position' => 13,
646 ],
647 // First Name - Child of Name Field
648 [
649 'id' => 52,
650 'type' => 'text',
651 'label' => BackendStrings::getNewFormStrings()['first_name'],
652 'placeholder' => BackendStrings::getTemplateStrings()['enter_your_first_name'],
653 'required' => false,
654 'parentId' => 13,
655 'fieldIndex' => 13,
656 'defaultValue' => '',
657 'position' => 1,
658 'optionHide' => false,
659 'description' => '',
660 'settings' => json_encode(['nameFieldType' => 'nameField1']),
661 ],
662 // Last Name - Child of Name Field
663 [
664 'id' => 53,
665 'type' => 'text',
666 'label' => BackendStrings::getNewFormStrings()['last_name'],
667 'placeholder' => BackendStrings::getTemplateStrings()['enter_your_last_name'],
668 'required' => false,
669 'parentId' => 13,
670 'fieldIndex' => 13,
671 'defaultValue' => '',
672 'position' => 2,
673 'optionHide' => false,
674 'description' => '',
675 'settings' => json_encode(['nameFieldType' => 'nameField2']),
676 ],
677 ];
678 }
679 }
680