= Финална имплементација на случаи на употреба == Регистриран корисник - Работобарател (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 - Ажурирање на статус на апликација (дел за Е-маил нотификации) **По сличен процес на испраќање на 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)]]