| | 61 | |
| | 62 | Имплементација: |
| | 63 | |
| | 64 | [[Image(findbestmatch1.png)]] |
| | 65 | [[Image(findbestmatch2.png)]] |
| | 66 | |
| | 67 | Овој HTTP GET метод служи за пронаоѓање на ментори кои најдобро одговараат на интересите и предметите на најавениот студент. |
| | 68 | |
| | 69 | Најпрво го зема ID-то на тековниот корисник. Се вчитува студентот од базата, заедно со неговите предмети и теми. Доколку корисникот не е студент, се враќа HttpNotFound, а оваа функционалност е сокриена за ментори во View-то. |
| | 70 | |
| | 71 | Потоа се вчитуваат сите достапни ментори со нивните предмети и интереси. Се екстрахираат листи од имиња на предмети и теми за студентот и за секој ментор се пресметува „score“ (оценка на совпаѓање) преку методот CalculateMatchScore. Се задржуваат само менторите со score поголем од 0 и се сортираат по опаѓачки редослед. |
| | 72 | |
| | 73 | Резултатите повторно се мапираат во EditMentorModel и се враќа View-то ViewMentors, но овојпат со листа на најдобро совпаднати ментори. |
| | 74 | |
| | 75 | CalculateMatchScore е имплементиран под него: |
| | 76 | |
| | 77 | [[Image(calculate.png)]] |
| | 78 | |
| | 79 | Ако matchType е "subjects" или "both", се пресметува пресекот помеѓу предметите на студентот и менторот. Секој заеднички предмет носи 2 поени. |
| | 80 | Ако matchType е "interests" или "both", се пресметува пресекот помеѓу темите на интерес. Секоја заедничка тема носи 3 поени, така што темите имаат поголем приоритет од предметите. |
| | 81 | |
| | 82 | На крај се враќа вкупниот резултат кон FindBestMatch. |