Index: src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -1,6 +1,12 @@
 import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
+import { AuthorizedGuard } from './core/guards/authorized.guard';
 
 const routes: Routes = [
+  {
+    path: 'questioning',
+    canActivate: [AuthorizedGuard],
+    loadChildren: () => import('./modules/questioning/questioning.module').then((x) => x.QuestioningModule)
+  },
   {
     path: '**',
Index: src/Clients/Angular/finki-chattery/src/app/app.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app.component.html	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/app.component.html	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -2,4 +2,3 @@
   <mat-progress-bar class="global-loader" [class.hidden]="!(loader.isLoading | async)" mode="indeterminate"></mat-progress-bar>
   <router-outlet></router-outlet>
-  <button (click)="login()">LOGIN</button>
 </main>
Index: src/Clients/Angular/finki-chattery/src/app/app.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app.component.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/app.component.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -8,12 +8,8 @@
 })
 export class AppComponent implements OnInit {
-  constructor(public loader: LoaderService, private redirect: RedirectService, private auth: AuthService) {}
+  constructor(public loader: LoaderService, private redirect: RedirectService) {}
 
   ngOnInit(): void {
     this.redirect.redirectLoggedInUser();
   }
-
-  public login(): void {
-    this.auth.login();
-  }
 }
Index: src/Clients/Angular/finki-chattery/src/app/core/guards/authorized.guard.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/guards/authorized.guard.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/core/guards/authorized.guard.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,25 @@
+import { Injectable } from '@angular/core';
+import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
+import { AuthService } from '../services';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class AuthorizedGuard implements CanActivate {
+  constructor(private auth: AuthService) {}
+
+  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
+    return this.auth.isLoggedIn().pipe(
+      map((loggedIn) => {
+        if (!loggedIn) {
+          this.auth.login();
+          return false;
+        }
+
+        return true;
+      })
+    );
+  }
+}
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 f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -35,4 +35,8 @@
       map((user) => {
         if (user) {
+          if (user.expired) {
+            return false;
+          }
+
           return true;
         }
Index: src/Clients/Angular/finki-chattery/src/app/core/services/notification.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/services/notification.service.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/core/services/notification.service.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -22,5 +22,8 @@
 
   public successNotification(title: string, description?: string): void {
-    this.toastr.success(this.translate.instant(description), this.translate.instant(title));
+    if (description) {
+      this.toastr.success(this.translate.instant(description), this.translate.instant(title));
+    }
+    this.toastr.success(this.translate.instant(title));
   }
 }
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 f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -15,10 +15,6 @@
 export class QuestionFacadeService {
   effectWorking$: Observable<boolean | HttpErrorResponse>;
-  question$: Observable<QuestionStateViewModel>;
 
   constructor(private store: Store<QuestionState>) {
-    this.question$ = this.store
-      .select(questionStateQuery.getQuestion)
-      .pipe(filter((x: QuestionStateViewModel | null): x is QuestionStateViewModel => x !== null));
     this.effectWorking$ = this.store.select(questionStateQuery.effectWorking).pipe(
       filter((effect) => effect !== null),
@@ -36,4 +32,10 @@
   }
 
+  public getQuestion(): Observable<QuestionStateViewModel> {
+    return this.store
+      .select(questionStateQuery.getQuestion)
+      .pipe(filter((x: QuestionStateViewModel | null): x is QuestionStateViewModel => x !== null));
+  }
+
   public fetchQuestion(questionUid: string): void {
     this.dispatchEffect(new GetQuestionState(questionUid));
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question-state.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question-state.models.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question-state.models.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -16,4 +16,5 @@
   public index!: string;
   public imageUrl!: string;
+  public reputation!: number;
 }
 
@@ -42,4 +43,5 @@
   public index!: string;
   public imageUrl!: string;
+  public reputation!: number;
 }
 
@@ -55,3 +57,4 @@
   public index!: string;
   public imageUrl!: string;
+  public reputation!: number;
 }
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.mapper.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.mapper.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.mapper.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -25,5 +25,6 @@
               y.studentResponse.uid,
               y.studentResponse.index,
-              y.studentResponse.imageUrl
+              y.studentResponse.imageUrl,
+              y.studentResponse.reputation
             );
 
@@ -35,5 +36,6 @@
           x.studentResponse.uid,
           x.studentResponse.index,
-          x.studentResponse.imageUrl
+          x.studentResponse.imageUrl,
+          x.studentResponse.reputation
         );
 
@@ -65,5 +67,6 @@
       questionStateResponse.studentResponse.uid,
       questionStateResponse.studentResponse.index,
-      questionStateResponse.studentResponse.imageUrl
+      questionStateResponse.studentResponse.imageUrl,
+      questionStateResponse.studentResponse.reputation
     );
 
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.html	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.html	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,3 @@
+<div>
+  <app-question-preview> </app-question-preview>
+</div>
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.spec.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { QuestionPreviewGeneralComponent } from './question-preview-general.component';
+
+describe('QuestionPreviewGeneralComponent', () => {
+  let component: QuestionPreviewGeneralComponent;
+  let fixture: ComponentFixture<QuestionPreviewGeneralComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ QuestionPreviewGeneralComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(QuestionPreviewGeneralComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/question-preview-general/question-preview-general.component.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,21 @@
+import { Component, OnInit } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { QuestionFacadeService } from 'src/app/core/state/question-facade.service';
+import { ButtonType } from 'src/app/shared-app/components/generic/button/button.models';
+
+@Component({
+  selector: 'app-question-preview-general',
+  templateUrl: './question-preview-general.component.html',
+  styleUrls: ['./question-preview-general.component.scss']
+})
+export class QuestionPreviewGeneralComponent implements OnInit {
+  ButtonType = ButtonType;
+
+  constructor(private questionFacade: QuestionFacadeService, private route: ActivatedRoute) {}
+
+  ngOnInit(): void {
+    this.route.params.subscribe((params) => {
+      this.questionFacade.fetchQuestion(params.questionUid);
+    });
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questioning-components.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questioning-components.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questioning-components.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,3 @@
+import { QuestionPreviewGeneralComponent } from './question-preview-general/question-preview-general.component';
+
+export const QUESTIONING_COMPONENTS: any[] = [QuestionPreviewGeneralComponent];
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.module.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.module.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,11 @@
+import { NgModule } from '@angular/core';
+
+import { QuestioningRoutingModule } from './questioning.routes';
+import { QUESTIONING_COMPONENTS } from './components/questioning-components';
+import { SharedAppModule } from 'src/app/shared-app/shared-app.module';
+
+@NgModule({
+  declarations: [QUESTIONING_COMPONENTS],
+  imports: [SharedAppModule, QuestioningRoutingModule]
+})
+export class QuestioningModule {}
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.routes.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.routes.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.routes.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,16 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { QuestionPreviewGeneralComponent } from './components/question-preview-general/question-preview-general.component';
+
+const routes: Routes = [
+  {
+    path: ':questionUid',
+    component: QuestionPreviewGeneralComponent
+  }
+];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class QuestioningRoutingModule {}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/components.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/components.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/components.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,8 @@
+import { ButtonComponent } from './generic/button/button.component';
+import { FileUploadComponent } from './generic/file-upload/file-upload.component';
+import { FormErrorComponent } from './generic/form-error/form-error.component';
+import { VoteComponent } from './generic/vote/vote.component';
+import { QuestionPreviewComponent } from './question/question-preview/question-preview.component';
+import { StudentCardComponent } from './question/student-card/student-card.component';
+
+export const COMPONENTS: any[] = [ButtonComponent, FormErrorComponent, FileUploadComponent, QuestionPreviewComponent, VoteComponent, StudentCardComponent];
Index: c/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/components.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/components.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import { ButtonComponent } from './button/button.component';
-import { FileUploadComponent } from './file-upload/file-upload.component';
-import { FormErrorComponent } from './form-error/form-error.component';
-
-export const COMPONENTS: any[] = [ButtonComponent, FormErrorComponent, FileUploadComponent];
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 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.html	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,10 @@
+<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>
+    <div class="text-bold text-center">{{ voteCount }}</div>
+    <mat-icon class="vote-icon margin-bottom-xs" (click)="voted(VoteType.Downvote)" [inline]="true">arrow_drop_down</mat-icon>
+    <mat-icon [inline]="true" matTooltip="{{ 'vote-correct-answer' | translate }}" class="text-center text-bold green" *ngIf="correct"
+      >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 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.scss	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,15 @@
+.green {
+  color: green;
+}
+
+.vote-icons mat-icon {
+  font-size: 50px;
+}
+
+.vote-icon {
+  font-size: 70px !important;
+}
+
+mat-icon:hover {
+  cursor: pointer;
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.spec.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { VoteComponent } from './vote.component';
+
+describe('VoteComponent', () => {
+  let component: VoteComponent;
+  let fixture: ComponentFixture<VoteComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ VoteComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(VoteComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
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 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/vote/vote.component.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,29 @@
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { ButtonType } from '../button/button.models';
+
+export enum VoteType {
+  Upvote,
+  Downvote
+}
+
+@Component({
+  selector: 'app-vote',
+  templateUrl: './vote.component.html',
+  styleUrls: ['./vote.component.scss']
+})
+export class VoteComponent implements OnInit {
+  @Input() voteCount: number | undefined;
+  @Input() correct = false;
+  @Output() voteClicked = new EventEmitter<VoteType>();
+
+  VoteType = VoteType;
+  ButtonType = ButtonType;
+
+  constructor() {}
+
+  ngOnInit(): void {}
+
+  public voted(voteType: VoteType): void {
+    this.voteClicked.emit(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 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.html	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,74 @@
+<div *ngIf="!working">
+  <mat-card appHoverElevation class="margin-bottom-xl">
+    <mat-card-title>{{ question.title }}</mat-card-title>
+    <mat-card-subtitle
+      [innerHTML]="
+        'question-preview-subtitle'
+          | translate
+            : {
+                createdOn: question.createdOn | momentDate: 'LLLL',
+                lastActive: question.lastActiveOn | momentDate: 'LLLL',
+                views: question.views
+              }
+      "
+    ></mat-card-subtitle>
+    <mat-card-content>
+      <mat-chip-list>
+        <mat-chip *ngFor="let category of question.categories">
+          {{ category.name }}
+        </mat-chip>
+      </mat-chip-list>
+
+      <div class="margin-top-lg" [innerHTML]="question.text"></div>
+      <div class="align-right">
+        <app-student-card
+          [indexNumber]="question.student.index"
+          [imageUrl]="question.student.imageUrl"
+          [uid]="question.student.uid"
+          [reputation]="question.student.reputation"
+          [subtitle]="'question-asked-by-subtitle' | translate: { date: question.createdOn | momentDate: 'LL' }"
+        ></app-student-card>
+      </div>
+    </mat-card-content>
+    <mat-card-actions>
+      <app-button appShareLink [buttonType]="ButtonType.Basic">{{ 'share-link' | translate }}</app-button>
+    </mat-card-actions>
+  </mat-card>
+
+  <h1 class="mat-headline">{{ 'question-answers' | translate: { answerCount: question.answers.length } }}</h1>
+  <mat-button-toggle-group>
+    <mat-button-toggle>{{ 'answer-sort-oldest' | translate }}</mat-button-toggle>
+    <mat-button-toggle>{{ 'answer-sort-votes' | translate }}</mat-button-toggle>
+  </mat-button-toggle-group>
+
+  <ng-container *ngFor="let answer of question.answers">
+    <mat-card appHoverElevation class="margin-x-md">
+      <mat-card-content>
+        <div fxLayout="row wrap" fxLayoutAlign="space-around none">
+          <app-vote [voteCount]="answer.upvotesCount" [correct]="answer.correctAnswer" fxFlex="6%"></app-vote>
+          <div fxFlex="92%">
+            <div [innerHTML]="answer.text"></div>
+            <div class="align-right">
+              <app-student-card
+                [indexNumber]="answer.student.index"
+                [imageUrl]="answer.student.imageUrl"
+                [uid]="answer.student.uid"
+                [reputation]="answer.student.reputation"
+                [subtitle]="'question-answered-by-subtitle' | translate: { date: answer.createdOn | momentDate: 'LL' }"
+              ></app-student-card>
+            </div>
+
+            <hr />
+            <div *ngFor="let answerResponse of answer.answerResponses">
+              {{ answerResponse.text }}
+              <mat-chip class="cursor" selected>{{ answerResponse.student.index }}</mat-chip> -
+              {{ answerResponse.createdOn | momentDate: 'LL' }}
+              <hr />
+            </div>
+          </div>
+        </div>
+      </mat-card-content>
+      <mat-card-actions> </mat-card-actions>
+    </mat-card>
+  </ng-container>
+</div>
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.scss
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.scss	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.scss	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,8 @@
+.align-right {
+  display: flex;
+  justify-content: right;
+}
+
+mat-card-content {
+  margin-bottom: 0;
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.spec.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { QuestionPreviewComponent } from './question-preview.component';
+
+describe('QuestionPreviewComponent', () => {
+  let component: QuestionPreviewComponent;
+  let fixture: ComponentFixture<QuestionPreviewComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ QuestionPreviewComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(QuestionPreviewComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
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 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,24 @@
+import { Component, OnInit } from '@angular/core';
+import { QuestionFacadeService } from 'src/app/core/state/question-facade.service';
+
+import { QuestionStateViewModel } from 'src/app/shared-app/models';
+import { ButtonType } from '../../generic/button/button.models';
+
+@Component({
+  selector: 'app-question-preview',
+  templateUrl: './question-preview.component.html',
+  styleUrls: ['./question-preview.component.scss']
+})
+export class QuestionPreviewComponent implements OnInit {
+  question!: QuestionStateViewModel;
+  working = true;
+  ButtonType = ButtonType;
+  constructor(private questionFacade: QuestionFacadeService) {}
+
+  ngOnInit(): void {
+    this.questionFacade.getQuestion().subscribe((question) => {
+      this.question = question;
+      this.working = false;
+    });
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.html	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.html	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,8 @@
+<mat-card (click)="cardClicked()">
+  <mat-card-subtitle class="student-subtitle">{{ subtitle }}</mat-card-subtitle>
+  <mat-card-header>
+    <img mat-card-avatar src="{{ imageUrl }}" />
+    <mat-card-title>{{ indexNumber }}</mat-card-title>
+    <mat-card-subtitle>{{ 'student-reputation' | translate: { reputation: reputation } }}</mat-card-subtitle>
+  </mat-card-header>
+</mat-card>
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.scss
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.scss	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.scss	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,13 @@
+mat-card {
+  width: fit-content;
+  padding: 0;
+  box-shadow: none !important;
+}
+
+mat-card:hover {
+  cursor: pointer;
+}
+
+.student-subtitle {
+  margin: 0;
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.spec.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.spec.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { StudentCardComponent } from './student-card.component';
+
+describe('StudentCardComponent', () => {
+  let component: StudentCardComponent;
+  let fixture: ComponentFixture<StudentCardComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ StudentCardComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(StudentCardComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/student-card/student-card.component.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,23 @@
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+
+@Component({
+  selector: 'app-student-card',
+  templateUrl: './student-card.component.html',
+  styleUrls: ['./student-card.component.scss']
+})
+export class StudentCardComponent implements OnInit {
+  @Input() imageUrl: string | undefined;
+  @Input() indexNumber: string | undefined;
+  @Input() uid!: string;
+  @Input() reputation: number | undefined;
+  @Input() subtitle: string | undefined;
+  @Output() studentCardClicked = new EventEmitter<string>();
+
+  constructor() {}
+
+  ngOnInit(): void {}
+
+  cardClicked(): void {
+    this.studentCardClicked.emit(this.uid);
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/directives/directives.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/directives/directives.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/directives/directives.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -1,8 +1,3 @@
-import { HandleInputFormErrorsDirective, HoverElevationDirective, LoaderDirective, HandleSelectFormErrorsDirective } from '.';
+import { HandleInputFormErrorsDirective, HoverElevationDirective, LoaderDirective, HandleSelectFormErrorsDirective, ShareLinkDirective } from '.';
 
-export const DIRECTIVES: any[] = [
-  HandleInputFormErrorsDirective,
-  LoaderDirective,
-  HoverElevationDirective,
-  HandleSelectFormErrorsDirective
-];
+export const DIRECTIVES: any[] = [HandleInputFormErrorsDirective, LoaderDirective, HoverElevationDirective, HandleSelectFormErrorsDirective, ShareLinkDirective];
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/directives/index.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/directives/index.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/directives/index.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -3,2 +3,3 @@
 export * from './hover-elevation.directive';
 export * from './handle-select-form-errors.directive';
+export * from './share-link.directive';
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/directives/share-link.directive.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/directives/share-link.directive.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/directives/share-link.directive.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -0,0 +1,32 @@
+import { Directive, ElementRef, HostListener, Input } from '@angular/core';
+
+import { NotificationService } from 'src/app/core/services/notification.service';
+
+@Directive({
+  selector: '[appShareLink]'
+})
+export class ShareLinkDirective {
+  @Input() link: string | null | undefined;
+
+  el: ElementRef;
+
+  constructor(el: ElementRef, private notification: NotificationService) {
+    this.el = el;
+  }
+
+  @HostListener('click', ['$event']) onClick($event: any): void {
+    let contentToCopy = window.location.href;
+    if (this.link) {
+      contentToCopy = this.link;
+    }
+
+    const copyFromElement = document.createElement('input');
+    copyFromElement.style.display = 'hide';
+    copyFromElement.value = contentToCopy;
+    document.body.appendChild(copyFromElement);
+    copyFromElement.select();
+    document.execCommand('copy');
+    document.body.removeChild(copyFromElement);
+    this.notification.successNotification('share-link-success');
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/models/question-state-view-models.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/models/question-state-view-models.models.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/models/question-state-view-models.models.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -15,5 +15,5 @@
 
 export class StudentQuestionStateViewModel {
-  constructor(public uid: string, public index: string, public imageUrl: string) {}
+  constructor(public uid: string, public index: string, public imageUrl: string, public reputation: number) {}
 }
 
@@ -39,5 +39,5 @@
 
 export class AnswerStudentQuestionStateViewModel {
-  constructor(public uid: string, public index: string, public imageUrl: string) {}
+  constructor(public uid: string, public index: string, public imageUrl: string, public reputation: number) {}
 }
 
@@ -52,4 +52,4 @@
 
 export class AnswerResponseStudentQuestionStateViewModel {
-  constructor(public uid: string, public index: string, public imageUrl: string) {}
+  constructor(public uid: string, public index: string, public imageUrl: string, public reputation: number) {}
 }
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/services/translate-from-json.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/services/translate-from-json.service.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/services/translate-from-json.service.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -43,9 +43,6 @@
   }
 
-  public instant(key?: string): string | undefined {
-    if (key) {
-      return this.translateService.instant(key);
-    }
-    return undefined;
+  public instant(key: string): string {
+    return this.translateService.instant(key);
   }
 }
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -8,14 +8,12 @@
 import { FileUploadModule } from 'ng2-file-upload';
 
-import { COMPONENTS } from './components/generic/components';
+import { COMPONENTS } from './components/components';
 import { SharedMaterialModule } from '../shared-material/shared-material.module';
 import { DIRECTIVES } from './directives/directives';
 import { SERVICES } from './services/services';
 import { PIPES } from './pipes/pipes';
-import { FileUploadComponent } from './components/generic/file-upload/file-upload.component';
-import { HandleSelectFormErrorsDirective } from './directives/handle-select-form-errors.directive';
 
 @NgModule({
-  declarations: [COMPONENTS, DIRECTIVES, PIPES, FileUploadComponent, HandleSelectFormErrorsDirective],
+  declarations: [COMPONENTS, DIRECTIVES, PIPES],
   providers: [SERVICES],
   imports: [
@@ -39,5 +37,6 @@
     COMPONENTS,
     DIRECTIVES,
-    PIPES
+    PIPES,
+    SharedMaterialModule
   ]
 })
Index: src/Clients/Angular/finki-chattery/src/app/shared-material/shared-material.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-material/shared-material.module.ts	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/app/shared-material/shared-material.module.ts	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -20,4 +20,8 @@
 import { MatDatepickerModule } from '@angular/material/datepicker';
 import { MatNativeDateModule } from '@angular/material/core';
+import { MatChipsModule } from '@angular/material/chips';
+import { MatTooltipModule } from '@angular/material/tooltip';
+import { MatButtonToggleModule } from '@angular/material/button-toggle';
+
 @NgModule({
   imports: [
@@ -40,5 +44,8 @@
     MatTableModule,
     MatDatepickerModule,
-    MatNativeDateModule
+    MatNativeDateModule,
+    MatChipsModule,
+    MatTooltipModule,
+    MatButtonToggleModule
   ],
   exports: [
@@ -60,5 +67,8 @@
     MatTableModule,
     MatDatepickerModule,
-    MatNativeDateModule
+    MatNativeDateModule,
+    MatChipsModule,
+    MatTooltipModule,
+    MatButtonToggleModule
   ]
 })
Index: src/Clients/Angular/finki-chattery/src/assets/translations/en.json
===================================================================
--- src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -14,4 +14,14 @@
   "password-not-match": "Passwords don't match",
   "code-date-passed": "The code date has passed",
-  "not-found": "Not found"
+  "not-found": "Not found",
+  "question-preview-subtitle": "Asked <b>{{createdOn}}</b>, Last active <b>{{lastActive}}</b>, Viewed <b>{{views}}</b> times",
+  "share-link": "Share",
+  "share-link-success": "Successfully copied link for sharing",
+  "question-asked-by-subtitle": "Asked on: {{date}}",
+  "question-answers": "{{answerCount}} Answers",
+  "question-answered-by-subtitle": "Answered on: {{date}}",
+  "student-reputation": "{{reputation}} reputation",
+  "vote-correct-answer": "This has been accepted as the correct answer by the owner of the question",
+  "answer-sort-oldest": "Oldest",
+  "answer-sort-votes": "Votes"
 }
Index: src/Clients/Angular/finki-chattery/src/styles.scss
===================================================================
--- src/Clients/Angular/finki-chattery/src/styles.scss	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/Clients/Angular/finki-chattery/src/styles.scss	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -264,6 +264,6 @@
 
 .avatar-image {
-  width: 100px;
-  height: 100px;
+  width: 80px;
+  height: 80px;
   display: block;
   border-radius: 50%;
Index: src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/QuestionMapper.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/QuestionMapper.cs	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/QuestionMapper.cs	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -24,5 +24,5 @@
                         answerResponses = x.AnswerResponsesDto.Select(y =>
                         {
-                            var answerResponseStudent = new AnswerResponseStudentQuestionStateResponse(y.StudentDto.Id, y.StudentDto.Uid, y.StudentDto.Index, y.StudentDto.ImageUrl);
+                            var answerResponseStudent = new AnswerResponseStudentQuestionStateResponse(y.StudentDto.Id, y.StudentDto.Uid, y.StudentDto.Index, y.StudentDto.ImageUrl, y.StudentDto.Reputation);
 
                             return new AnswerResponseQuestionStateResponse(y.Id, y.Uid, y.Text, y.CreatedOn, answerResponseStudent);
@@ -30,5 +30,5 @@
                     }
 
-                    var answerStudent = new AnswerStudentQuestionStateResponse(x.StudentDto.Id, x.StudentDto.Uid, x.StudentDto.Index, x.StudentDto.ImageUrl);
+                    var answerStudent = new AnswerStudentQuestionStateResponse(x.StudentDto.Id, x.StudentDto.Uid, x.StudentDto.Index, x.StudentDto.ImageUrl, x.StudentDto.Reputation);
 
                     return new AnswerQuestionStateResponse(x.Id, x.Uid, x.Text, x.CorrectAnswer, x.CreatedOn, x.UpvotesCount, answerStudent, answerResponses);
@@ -50,5 +50,5 @@
             }
 
-            var student = new StudentQuestionStateResponse(questionState.StudentDto.Id, questionState.StudentDto.Uid, questionState.StudentDto.Index, questionState.StudentDto.ImageUrl);
+            var student = new StudentQuestionStateResponse(questionState.StudentDto.Id, questionState.StudentDto.Uid, questionState.StudentDto.Index, questionState.StudentDto.ImageUrl, questionState.StudentDto.Reputation);
 
             return new QuestionStateResponse(questionState.Id, questionState.Uid, questionState.Title, questionState.Text, questionState.CreatedOn, questionState.Views, questionState.LastActiveOn, student, answers, questionCategories, team);
Index: src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetQuestionState/QuestionStateResponse.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetQuestionState/QuestionStateResponse.cs	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetQuestionState/QuestionStateResponse.cs	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -40,5 +40,5 @@
     public class StudentQuestionStateResponse
     {
-        public StudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl)
+        public StudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl, long reputation)
         {
             Id = id;
@@ -46,4 +46,5 @@
             Index = index;
             ImageUrl = imageUrl;
+            Reputation = reputation;
         }
 
@@ -53,4 +54,5 @@
         public string Index { get; }
         public string ImageUrl { get; }
+        public long Reputation { get; }
     }
 
@@ -112,5 +114,5 @@
     public class AnswerStudentQuestionStateResponse
     {
-        public AnswerStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl)
+        public AnswerStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl, long reputation)
         {
             Id = id;
@@ -118,4 +120,5 @@
             Index = index;
             ImageUrl = imageUrl;
+            Reputation = reputation;
         }
 
@@ -125,4 +128,5 @@
         public string Index { get; }
         public string ImageUrl { get; }
+        public long Reputation { get; }
     }
 
@@ -148,5 +152,5 @@
     public class AnswerResponseStudentQuestionStateResponse
     {
-        public AnswerResponseStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl)
+        public AnswerResponseStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl, long reputation)
         {
             Id = id;
@@ -154,4 +158,5 @@
             Index = index;
             ImageUrl = imageUrl;
+            Reputation = reputation;
         }
 
@@ -161,4 +166,5 @@
         public string Index { get; }
         public string ImageUrl { get; }
+        public long Reputation { get; }
     }
 }
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/Question/QuestionStateDto.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/Question/QuestionStateDto.cs	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/Question/QuestionStateDto.cs	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -38,5 +38,5 @@
     public class StudentQuestionStateDto
     {
-        public StudentQuestionStateDto(long id, Guid uid, string index, string imageUrl)
+        public StudentQuestionStateDto(long id, Guid uid, string index, string imageUrl, long reputation)
         {
             Id = id;
@@ -44,4 +44,5 @@
             Index = index;
             ImageUrl = imageUrl;
+            Reputation = reputation;
         }
 
@@ -50,4 +51,5 @@
         public string Index { get; }
         public string ImageUrl { get; }
+        public long Reputation { get; }
     }
 
@@ -106,5 +108,5 @@
     public class AnswerStudentQuestionStateDto
     {
-        public AnswerStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl)
+        public AnswerStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl, long reputation)
         {
             Id = id;
@@ -112,4 +114,5 @@
             Index = index;
             ImageUrl = imageUrl;
+            Reputation = reputation;
         }
         public long Id { get; }
@@ -117,4 +120,5 @@
         public string Index { get; }
         public string ImageUrl { get; }
+        public long Reputation { get; }
     }
 
@@ -139,5 +143,5 @@
     public class AnswerResponseStudentQuestionStateDto
     {
-        public AnswerResponseStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl)
+        public AnswerResponseStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl, long reputation)
         {
             Id = id;
@@ -145,4 +149,5 @@
             Index = index;
             ImageUrl = imageUrl;
+            Reputation = reputation;
         }
 
@@ -151,4 +156,5 @@
         public string Index { get; }
         public string ImageUrl { get; }
+        public long Reputation { get; }
     }
 }
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs	(revision f9983f5c01ceda688f7f98080777265f431ed225)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs	(revision 9885bee099bdd557d38c272915e2213f08f596be)
@@ -38,5 +38,6 @@
                                                   x.Student.Uid,
                                                   x.Student.IndexNumber,
-                                                  x.Student.ImageUrl),
+                                                  x.Student.ImageUrl,
+                                                  x.Student.Reputation),
                                                 x.Answers.Select(y =>
                                                 new AnswerQuestionStateDto(
@@ -51,5 +52,6 @@
                                                         y.Student.Uid,
                                                         y.Student.IndexNumber,
-                                                        y.Student.ImageUrl),
+                                                        y.Student.ImageUrl,
+                                                        y.Student.Reputation),
                                                     y.AnswerResponses.Select(z =>
                                                     new AnswerResponseQuestionStateDto(
@@ -62,5 +64,6 @@
                                                             z.Student.Uid,
                                                             z.Student.IndexNumber,
-                                                            z.Student.ImageUrl))))),
+                                                            z.Student.ImageUrl,
+                                                            z.Student.Reputation))))),
                                                 x.QuestionCategories.Select(y =>
                                                 new QuestionCategoryQuestionStateDto(
