= Финална имплементација на случаи на употреба == Регистриран корисник - Работобарател (Job Seeker) === ИД X - Најава со Google **За ова сценарио, потребно е да вклучиме неколку dependencies поврзани со OAuth2. Исто така треба да креираме проект на Google Cloud Console каде треба да се внесат некои податоци за апликацијата, како и да се вклучат Google+ и Identity Toolkit API-њата. Дополнително, во application.properties фајлот, треба да се постават следните конфигурации, каде client id-то и client secret-от ги добиваме по креирање на проектот, на претходно наведената страна.** [[Image(id_x.1_resized.png)]] **За најава со Google акаунт, корисникот тоа го прави со притискање на копчето „Sign in with Google“ каде се отвара прозорец со сите негови сметки.** [[Image(id_7.1_resized.png)]] **По одбирање на соодветниот акаунт, се повикува функција која испраќа POST request до backend апликацијата заедно со tokenId.** [[Image(id_7.2_resized.png)]] [[Image(id_7.3_resized.png)]] **Во backend апликацијата, request-от е пресретнат од контролер кој што содржи метод со соодветен API endpoint, кој пак го проследува токенот до сервис каде што се наоѓа целата логика.** [[Image(id_7.4_resized.png)]] **Методот кој што се повикува од сервисот прво го автентификува корисникот преку неговиот токен со Google Id Token Verifier (достапно во целосниот изворен код), а потоа користејќи ја неговата е-маил адреса, се обидуваме преку repository-то за Job Seeker да го пронајдеме во датабазата. Доколку најдеме корисник со таа е-маил адреса, генерираме JWT и го испраќаме назад, заедно со неговото име, улога и останати работи. Во спротивно, дополнително креираме нов објект од класата Job Seeker, каде ги поставуваме соодветните податоци за корисникот, без лозинка и го зачувуваме корисникот во датабаза преку repository-то. Веднаш потоа се повикува и методот submitGoogleProfilePic кој служи за зачувување на неговата профилна слика.** [[Image(id_7.5_resized.png)]] **Имено тука прво правиме објект од тип URL преку string-от, каде преку него ја читаме сликата како Buffered Image. Потоа на сликата се прави конверзија во низа од бајти и така се зачувува како Multipart File. Од тука се повикува стандардниот метод за зачувување на слики во датабазата, истиот кој се користи и при upload на профилни слики на корисниците.** [[Image(id_7.6_resized.png)]] == Регистриран корисник - Работодавец (Recruiter) === ИД 7 - Ажурирање на статус на апликација (дел за Е-маил нотификации) **За ова сценарио, потребно е да го вклучиме Spring Boot Starter Mail dependency-то. Исто така треба да поставиме лозинка за апликации на нашиот Google акаунт. Дополнително, во application.properties фајлот, треба да се постават следните конфигурации, каде за лозинка ја поставуваме претходно креираната лозинка за апликации.** [[Image(ID_73.png)]] **По сличен процес на испраќање на POST request од frontend-от со id-a на апликации, заедно со променет статус и порака одговор и пресретнување од контролерот, се повикува соодветниот метод од сервисот. Тука се изминуваат сите ставки од листата каде преку id-то се бара соодветната апликација преку repository-то. Веднаш потоа се поставува статусот и пораката одговор на пронајдената апликација и се зачувува истата со новите податоци во датабазата. Дополнително, преку апликацијата, го зимаме мејлот на работо-барачот, неговото име и името на огласот. Користејќи ги овие податоци, креираме subject и body на мејлот, каде во зависност од новиот статус, се конкатенира соодветна порака. Доколку има и порака одговор, се додава и таа. Потоа се повикува соодветниот метод од Email Sender сервисот, каде се креира пораката како Simple Mail Message и се испраќа преку Java Mail Sender.** [[Image(ID_71_resized.png)]] [[Image(ID_72_resized.png)]]