Index: src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -24,4 +24,5 @@
   public user: ApplicationUser | null = null;
   public oidcUser: User | null = null;
+  public selfUser: SelfUserResponse | null = null;
 
   constructor(private baseApi: BaseApiService) {
@@ -35,4 +36,10 @@
         user?.profile.isVerified
       );
+
+      this.selfUserDto().subscribe((selfUser) => {
+        if (selfUser) {
+          this.selfUser = selfUser;
+        }
+      });
     });
   }
@@ -86,4 +93,12 @@
         user.profile.isVerified
       );
+
+      if (!this.selfUser) {
+        this.selfUserDto().subscribe((selfUser) => {
+          if (selfUser) {
+            this.selfUser = selfUser;
+          }
+        });
+      }
     });
   }
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -3,5 +3,5 @@
 import { Action, Store } from '@ngrx/store';
 import { Observable, Subject } from 'rxjs';
-import { filter } from 'rxjs/operators';
+import { filter, map } from 'rxjs/operators';
 
 import {
@@ -12,4 +12,5 @@
   VoteType
 } from 'src/app/shared-app/models';
+import { AuthService } from '../services';
 import {
   EffectStartedWorking,
@@ -18,4 +19,5 @@
   GetQuestionState,
   GetSearchQuestions,
+  SetCorrectAnswer,
   VoteAnswer
 } from './question-state/question.actions';
@@ -31,6 +33,10 @@
   effectWorking$: Observable<boolean | HttpErrorResponse>;
 
-  constructor(private store: Store<QuestionState>) {
+  constructor(private store: Store<QuestionState>, private auth: AuthService) {
     this.effectWorking$ = this.store.select(questionStateQuery.effectWorking).pipe(filter((effect) => effect !== null));
+  }
+
+  public currentQuestionOwnedByCurrentUser(): Observable<boolean> {
+    return this.getQuestion().pipe(map((question) => this.auth.selfUser?.student?.uid === question.student.uid));
   }
 
@@ -71,4 +77,8 @@
   }
 
+  public setCorrectAnswer(questionUid: string, answerUid: string): void {
+    this.dispatchEffect(new SetCorrectAnswer(questionUid, answerUid));
+  }
+
   public voteAnswer(answerUid: string, questionUid: string, voteType: VoteType): void {
     this.dispatchEffect(new VoteAnswer(questionUid, answerUid, voteType));
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.actions.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.actions.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.actions.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -13,4 +13,6 @@
   GetQuestionState = '[Question] Get state',
   GetQuestionStateSuccess = '[Question] Get state success',
+  SetCorrectAnswer = '[Question] Set Correct Answer',
+  SetCorrectAnswerSuccess = '[Question] Set Correct Answer success',
   GetPreviewQuestionsLatest = '[Question] Get preview questions Latest',
   GetPreviewQuestionsLatestSuccess = '[Question] Get preview questions Latest Success',
@@ -36,4 +38,16 @@
 
   constructor(public payload: QuestionStateViewModel) {}
+}
+
+export class SetCorrectAnswer implements Action {
+  readonly type = QuestionActionTypes.SetCorrectAnswer;
+
+  constructor(public questionUid: string, public answerUid: string) {}
+}
+
+export class SetCorrectAnswerSuccess implements Action {
+  readonly type = QuestionActionTypes.SetCorrectAnswerSuccess;
+
+  constructor(public payload: string) {}
 }
 
@@ -110,4 +124,5 @@
   | GetSearchQuestionsSuccess
   | VoteAnswerSuccess
+  | SetCorrectAnswerSuccess
   | EffectStartedWorking
   | EffectFinishedWorking
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.effects.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.effects.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.effects.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -1,9 +1,10 @@
 import { Injectable } from '@angular/core';
 import { act, Actions, createEffect, ofType } from '@ngrx/effects';
-import { catchError, filter, mergeMap, switchMap, withLatestFrom } from 'rxjs/operators';
+import { catchError, filter, mergeMap, switchMap, tap, withLatestFrom } from 'rxjs/operators';
 import { PreviewQuestionsOrderEnum, SearchQuestionsQueryViewModel } from 'src/app/shared-app/models';
 import { TranslateFromJsonService } from 'src/app/shared-app/services';
 
 import { BaseApiService } from 'src/app/shared-app/services/base-api.service';
+import { NotificationService } from '../../services/notification.service';
 import { QuestionFacadeService } from '../question-facade.service';
 import { VoteAnswerRequest } from './question-state-request.models';
@@ -21,4 +22,6 @@
   GetSearchQuestionsSuccess,
   QuestionActionTypes,
+  SetCorrectAnswer,
+  SetCorrectAnswerSuccess,
   VoteAnswer,
   VoteAnswerSuccess
@@ -34,5 +37,6 @@
     private api: BaseApiService,
     private translate: TranslateFromJsonService,
-    private facade: QuestionFacadeService
+    private facade: QuestionFacadeService,
+    private notification: NotificationService
   ) {}
 
@@ -113,4 +117,5 @@
         const body = new VoteAnswerRequest(action.voteType);
         return this.api.post<VoteAnswerResponse>(`v1/questions/${action.questionUid}/answers/${action.answerUid}/votes`, body).pipe(
+          tap((state) => this.notification.successNotification('sucess-vote')),
           switchMap((state) => [new VoteAnswerSuccess(QuestionMapper.ToVoteAnswerViewModel(state)), new EffectFinishedWorking()]),
           catchError((err) => [new EffectFinishedWorkingError(err)])
@@ -119,3 +124,16 @@
     );
   });
+
+  setCorrectAnswer$ = createEffect(() => {
+    return this.actions$.pipe(
+      ofType<SetCorrectAnswer>(QuestionActionTypes.SetCorrectAnswer),
+      mergeMap((action) => {
+        return this.api.put<string>(`v1/questions/${action.questionUid}/answers/${action.answerUid}/correct`).pipe(
+          tap((state) => this.notification.successNotification('success-correct-answer')),
+          switchMap((state) => [new SetCorrectAnswerSuccess(state), new EffectFinishedWorking()]),
+          catchError((err) => [new EffectFinishedWorkingError(err)])
+        );
+      })
+    );
+  });
 }
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.reducers.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.reducers.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.reducers.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -1,3 +1,3 @@
-import { VoteType } from 'src/app/shared-app/models';
+import { AnswerQuestionStateViewModel, VoteType } from 'src/app/shared-app/models';
 import { QuestionAction, QuestionActionTypes } from './question.actions';
 import { initialState, QuestionState } from './question.state';
@@ -61,4 +61,33 @@
       };
     }
+    case QuestionActionTypes.SetCorrectAnswerSuccess: {
+      if (state.question) {
+        return {
+          ...state,
+          question: {
+            ...state.question,
+            answers: state.question.answers.map((x) => {
+              if (x.correctAnswer) {
+                return {
+                  ...x,
+                  correctAnswer: false
+                };
+              }
+              if (x.uid === action.payload) {
+                return {
+                  ...x,
+                  correctAnswer: true
+                };
+              }
+              return x;
+            })
+          }
+        };
+      }
+
+      return {
+        ...state
+      };
+    }
     case QuestionActionTypes.EffectStartedWorking: {
       return {
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.html	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.html	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -1,3 +1,3 @@
-<div>
+<div class="main-div">
   <div class="vote-icons" fxLayout="column" fxLayoutAlign="center center">
     <mat-icon class="vote-icon" (click)="voted(VoteType.Upvote)" [inline]="true">arrow_drop_up</mat-icon>
@@ -7,4 +7,11 @@
       >check</mat-icon
     >
+    <mat-icon
+      *ngIf="canSetCorrectAnswer && !correct"
+      [inline]="true"
+      class="text-center text-bold green set-correct-answer"
+      (click)="setCorrectAnswer.emit()"
+      >check</mat-icon
+    >
   </div>
 </div>
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.scss
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.scss	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.scss	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -14,2 +14,19 @@
   cursor: pointer;
 }
+
+.show-on-hover {
+  display: none;
+}
+
+.set-correct-answer {
+  opacity: 0.3;
+  visibility: hidden;
+}
+
+.main-div:hover > .vote-icons > .set-correct-answer {
+  visibility: visible;
+}
+
+.main-div {
+  height: 100%;
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -10,6 +10,8 @@
 export class VoteComponent implements OnInit {
   @Input() voteCount: number | undefined;
+  @Input() canSetCorrectAnswer: boolean | null = false;
   @Input() correct = false;
   @Output() voteClicked = new EventEmitter<VoteType>();
+  @Output() setCorrectAnswer = new EventEmitter<void>();
 
   VoteType = VoteType;
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.html	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.html	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -15,7 +15,9 @@
         <div fxLayout="row wrap" fxLayoutAlign="space-around none">
           <app-vote
+            [canSetCorrectAnswer]="canSetCorrectAnswer | async"
             [voteCount]="answer.votesCount"
             [correct]="answer.correctAnswer"
             (voteClicked)="answerVoted($event, answer.uid, question.uid)"
+            (setCorrectAnswer)="setCorrectAnswer(question.uid, answer.uid)"
             fxFlex="6%"
           ></app-vote>
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -13,4 +13,5 @@
 })
 export class QuestionPreviewComponent implements OnInit {
+  canSetCorrectAnswer = this.questionFacade.currentQuestionOwnedByCurrentUser();
   question!: QuestionStateViewModel;
   working = true;
@@ -34,3 +35,7 @@
     this.questionFacade.voteAnswer(answerUid, questionUid, voteType);
   }
+
+  setCorrectAnswer(questionUid: string, answerUid: string): void {
+    this.questionFacade.setCorrectAnswer(questionUid, answerUid);
+  }
 }
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/models/user.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/models/user.models.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/models/user.models.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -9,8 +9,4 @@
 }
 
-export class SelfUserResponse {
-  uid!: string;
-}
-
 export enum ApplicationUserType {
   Student = 'Student',
@@ -19,2 +15,44 @@
   Guest = 'Guest'
 }
+
+export class SelfUserResponse {
+  public student?: StudentSelfResponse | null;
+  public teacher?: TeacherSelfResponse | null;
+  public moderator?: ModeratorSelfResponse | null;
+}
+
+export class StudentSelfResponse {
+  public uid!: string;
+  public applicationUserId!: number;
+  public index!: string;
+  public reputation!: number;
+  public imageUrl!: string;
+  public questions!: StudentQuestionResponse[];
+  public teams!: StudentTeamResponse[];
+}
+
+export class StudentQuestionResponse {
+  public questionUid!: string;
+  public title!: string;
+}
+
+export class StudentTeamResponse {
+  public teamUid!: string;
+  public name!: string;
+}
+
+export class ModeratorSelfResponse {
+  public uid!: string;
+  public applicationUserId!: number;
+}
+
+export class TeacherSelfResponse {
+  public uid!: string;
+  public applicationUserId!: number;
+  public teams!: TeacherTeamResponse[];
+}
+
+export class TeacherTeamResponse {
+  public teamUid!: string;
+  public name!: string;
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/services/base-api.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/services/base-api.service.ts	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/services/base-api.service.ts	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -19,5 +19,5 @@
 
   public getSelfUser(): Observable<SelfUserResponse> {
-    return this.get<SelfUserResponse>('self');
+    return this.get<SelfUserResponse>('v1/self');
   }
 
Index: src/Clients/Angular/finki-chattery/src/assets/translations/en.json
===================================================================
--- src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision 7c3e6a8e2aa5fbdc02ceaeab15b40e451cf66116)
+++ src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision 2a9d9d1387f1e5f937ba0f0357680599b3f2187c)
@@ -53,4 +53,6 @@
   "ask-question-stepper-ask": "Ask question",
   "ask-question-ask-button-back": "Edit question",
+  "sucess-vote": "Successfully voted answer",
+  "success-correct-answer": "Successfully set correct answer",
   "ask-question-ask-button": "Ask question",
   "AnswerAlreadyUpvoted": "You have already upvoted this answer",
