Changeset 9885bee
- Timestamp:
- 10/16/21 20:00:57 (3 years ago)
- Branches:
- dev
- Children:
- 3b395c5, 95d80e4
- Parents:
- f9983f5 (diff), dab7a9b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src
- Files:
-
- 22 added
- 1 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts
rf9983f5 r9885bee 1 1 import { NgModule } from '@angular/core'; 2 2 import { Routes, RouterModule } from '@angular/router'; 3 import { AuthorizedGuard } from './core/guards/authorized.guard'; 3 4 4 5 const routes: Routes = [ 6 { 7 path: 'questioning', 8 canActivate: [AuthorizedGuard], 9 loadChildren: () => import('./modules/questioning/questioning.module').then((x) => x.QuestioningModule) 10 }, 5 11 { 6 12 path: '**', -
src/Clients/Angular/finki-chattery/src/app/app.component.html
rf9983f5 r9885bee 2 2 <mat-progress-bar class="global-loader" [class.hidden]="!(loader.isLoading | async)" mode="indeterminate"></mat-progress-bar> 3 3 <router-outlet></router-outlet> 4 <button (click)="login()">LOGIN</button>5 4 </main> -
src/Clients/Angular/finki-chattery/src/app/app.component.ts
rf9983f5 r9885bee 8 8 }) 9 9 export class AppComponent implements OnInit { 10 constructor(public loader: LoaderService, private redirect: RedirectService , private auth: AuthService) {}10 constructor(public loader: LoaderService, private redirect: RedirectService) {} 11 11 12 12 ngOnInit(): void { 13 13 this.redirect.redirectLoggedInUser(); 14 14 } 15 16 public login(): void {17 this.auth.login();18 }19 15 } -
src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts
rf9983f5 r9885bee 35 35 map((user) => { 36 36 if (user) { 37 if (user.expired) { 38 return false; 39 } 40 37 41 return true; 38 42 } -
src/Clients/Angular/finki-chattery/src/app/core/services/notification.service.ts
rf9983f5 r9885bee 22 22 23 23 public successNotification(title: string, description?: string): void { 24 this.toastr.success(this.translate.instant(description), this.translate.instant(title)); 24 if (description) { 25 this.toastr.success(this.translate.instant(description), this.translate.instant(title)); 26 } 27 this.toastr.success(this.translate.instant(title)); 25 28 } 26 29 } -
src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts
rf9983f5 r9885bee 15 15 export class QuestionFacadeService { 16 16 effectWorking$: Observable<boolean | HttpErrorResponse>; 17 question$: Observable<QuestionStateViewModel>;18 17 19 18 constructor(private store: Store<QuestionState>) { 20 this.question$ = this.store21 .select(questionStateQuery.getQuestion)22 .pipe(filter((x: QuestionStateViewModel | null): x is QuestionStateViewModel => x !== null));23 19 this.effectWorking$ = this.store.select(questionStateQuery.effectWorking).pipe( 24 20 filter((effect) => effect !== null), … … 36 32 } 37 33 34 public getQuestion(): Observable<QuestionStateViewModel> { 35 return this.store 36 .select(questionStateQuery.getQuestion) 37 .pipe(filter((x: QuestionStateViewModel | null): x is QuestionStateViewModel => x !== null)); 38 } 39 38 40 public fetchQuestion(questionUid: string): void { 39 41 this.dispatchEffect(new GetQuestionState(questionUid)); -
src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question-state.models.ts
rf9983f5 r9885bee 16 16 public index!: string; 17 17 public imageUrl!: string; 18 public reputation!: number; 18 19 } 19 20 … … 42 43 public index!: string; 43 44 public imageUrl!: string; 45 public reputation!: number; 44 46 } 45 47 … … 55 57 public index!: string; 56 58 public imageUrl!: string; 59 public reputation!: number; 57 60 } -
src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.mapper.ts
rf9983f5 r9885bee 25 25 y.studentResponse.uid, 26 26 y.studentResponse.index, 27 y.studentResponse.imageUrl 27 y.studentResponse.imageUrl, 28 y.studentResponse.reputation 28 29 ); 29 30 … … 35 36 x.studentResponse.uid, 36 37 x.studentResponse.index, 37 x.studentResponse.imageUrl 38 x.studentResponse.imageUrl, 39 x.studentResponse.reputation 38 40 ); 39 41 … … 65 67 questionStateResponse.studentResponse.uid, 66 68 questionStateResponse.studentResponse.index, 67 questionStateResponse.studentResponse.imageUrl 69 questionStateResponse.studentResponse.imageUrl, 70 questionStateResponse.studentResponse.reputation 68 71 ); 69 72 -
src/Clients/Angular/finki-chattery/src/app/shared-app/directives/directives.ts
rf9983f5 r9885bee 1 import { HandleInputFormErrorsDirective, HoverElevationDirective, LoaderDirective, HandleSelectFormErrorsDirective } from '.';1 import { HandleInputFormErrorsDirective, HoverElevationDirective, LoaderDirective, HandleSelectFormErrorsDirective, ShareLinkDirective } from '.'; 2 2 3 export const DIRECTIVES: any[] = [ 4 HandleInputFormErrorsDirective, 5 LoaderDirective, 6 HoverElevationDirective, 7 HandleSelectFormErrorsDirective 8 ]; 3 export const DIRECTIVES: any[] = [HandleInputFormErrorsDirective, LoaderDirective, HoverElevationDirective, HandleSelectFormErrorsDirective, ShareLinkDirective]; -
src/Clients/Angular/finki-chattery/src/app/shared-app/directives/index.ts
rf9983f5 r9885bee 3 3 export * from './hover-elevation.directive'; 4 4 export * from './handle-select-form-errors.directive'; 5 export * from './share-link.directive'; -
src/Clients/Angular/finki-chattery/src/app/shared-app/models/question-state-view-models.models.ts
rf9983f5 r9885bee 15 15 16 16 export class StudentQuestionStateViewModel { 17 constructor(public uid: string, public index: string, public imageUrl: string ) {}17 constructor(public uid: string, public index: string, public imageUrl: string, public reputation: number) {} 18 18 } 19 19 … … 39 39 40 40 export class AnswerStudentQuestionStateViewModel { 41 constructor(public uid: string, public index: string, public imageUrl: string ) {}41 constructor(public uid: string, public index: string, public imageUrl: string, public reputation: number) {} 42 42 } 43 43 … … 52 52 53 53 export class AnswerResponseStudentQuestionStateViewModel { 54 constructor(public uid: string, public index: string, public imageUrl: string ) {}54 constructor(public uid: string, public index: string, public imageUrl: string, public reputation: number) {} 55 55 } -
src/Clients/Angular/finki-chattery/src/app/shared-app/services/translate-from-json.service.ts
rf9983f5 r9885bee 43 43 } 44 44 45 public instant(key?: string): string | undefined { 46 if (key) { 47 return this.translateService.instant(key); 48 } 49 return undefined; 45 public instant(key: string): string { 46 return this.translateService.instant(key); 50 47 } 51 48 } -
src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts
rf9983f5 r9885bee 8 8 import { FileUploadModule } from 'ng2-file-upload'; 9 9 10 import { COMPONENTS } from './components/ generic/components';10 import { COMPONENTS } from './components/components'; 11 11 import { SharedMaterialModule } from '../shared-material/shared-material.module'; 12 12 import { DIRECTIVES } from './directives/directives'; 13 13 import { SERVICES } from './services/services'; 14 14 import { PIPES } from './pipes/pipes'; 15 import { FileUploadComponent } from './components/generic/file-upload/file-upload.component';16 import { HandleSelectFormErrorsDirective } from './directives/handle-select-form-errors.directive';17 15 18 16 @NgModule({ 19 declarations: [COMPONENTS, DIRECTIVES, PIPES , FileUploadComponent, HandleSelectFormErrorsDirective],17 declarations: [COMPONENTS, DIRECTIVES, PIPES], 20 18 providers: [SERVICES], 21 19 imports: [ … … 39 37 COMPONENTS, 40 38 DIRECTIVES, 41 PIPES 39 PIPES, 40 SharedMaterialModule 42 41 ] 43 42 }) -
src/Clients/Angular/finki-chattery/src/app/shared-material/shared-material.module.ts
rf9983f5 r9885bee 20 20 import { MatDatepickerModule } from '@angular/material/datepicker'; 21 21 import { MatNativeDateModule } from '@angular/material/core'; 22 import { MatChipsModule } from '@angular/material/chips'; 23 import { MatTooltipModule } from '@angular/material/tooltip'; 24 import { MatButtonToggleModule } from '@angular/material/button-toggle'; 25 22 26 @NgModule({ 23 27 imports: [ … … 40 44 MatTableModule, 41 45 MatDatepickerModule, 42 MatNativeDateModule 46 MatNativeDateModule, 47 MatChipsModule, 48 MatTooltipModule, 49 MatButtonToggleModule 43 50 ], 44 51 exports: [ … … 60 67 MatTableModule, 61 68 MatDatepickerModule, 62 MatNativeDateModule 69 MatNativeDateModule, 70 MatChipsModule, 71 MatTooltipModule, 72 MatButtonToggleModule 63 73 ] 64 74 }) -
src/Clients/Angular/finki-chattery/src/assets/translations/en.json
rf9983f5 r9885bee 14 14 "password-not-match": "Passwords don't match", 15 15 "code-date-passed": "The code date has passed", 16 "not-found": "Not found" 16 "not-found": "Not found", 17 "question-preview-subtitle": "Asked <b>{{createdOn}}</b>, Last active <b>{{lastActive}}</b>, Viewed <b>{{views}}</b> times", 18 "share-link": "Share", 19 "share-link-success": "Successfully copied link for sharing", 20 "question-asked-by-subtitle": "Asked on: {{date}}", 21 "question-answers": "{{answerCount}} Answers", 22 "question-answered-by-subtitle": "Answered on: {{date}}", 23 "student-reputation": "{{reputation}} reputation", 24 "vote-correct-answer": "This has been accepted as the correct answer by the owner of the question", 25 "answer-sort-oldest": "Oldest", 26 "answer-sort-votes": "Votes" 17 27 } -
src/Clients/Angular/finki-chattery/src/styles.scss
rf9983f5 r9885bee 264 264 265 265 .avatar-image { 266 width: 100px;267 height: 100px;266 width: 80px; 267 height: 80px; 268 268 display: block; 269 269 border-radius: 50%; -
src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/QuestionMapper.cs
rf9983f5 r9885bee 24 24 answerResponses = x.AnswerResponsesDto.Select(y => 25 25 { 26 var answerResponseStudent = new AnswerResponseStudentQuestionStateResponse(y.StudentDto.Id, y.StudentDto.Uid, y.StudentDto.Index, y.StudentDto.ImageUrl );26 var answerResponseStudent = new AnswerResponseStudentQuestionStateResponse(y.StudentDto.Id, y.StudentDto.Uid, y.StudentDto.Index, y.StudentDto.ImageUrl, y.StudentDto.Reputation); 27 27 28 28 return new AnswerResponseQuestionStateResponse(y.Id, y.Uid, y.Text, y.CreatedOn, answerResponseStudent); … … 30 30 } 31 31 32 var answerStudent = new AnswerStudentQuestionStateResponse(x.StudentDto.Id, x.StudentDto.Uid, x.StudentDto.Index, x.StudentDto.ImageUrl );32 var answerStudent = new AnswerStudentQuestionStateResponse(x.StudentDto.Id, x.StudentDto.Uid, x.StudentDto.Index, x.StudentDto.ImageUrl, x.StudentDto.Reputation); 33 33 34 34 return new AnswerQuestionStateResponse(x.Id, x.Uid, x.Text, x.CorrectAnswer, x.CreatedOn, x.UpvotesCount, answerStudent, answerResponses); … … 50 50 } 51 51 52 var student = new StudentQuestionStateResponse(questionState.StudentDto.Id, questionState.StudentDto.Uid, questionState.StudentDto.Index, questionState.StudentDto.ImageUrl );52 var student = new StudentQuestionStateResponse(questionState.StudentDto.Id, questionState.StudentDto.Uid, questionState.StudentDto.Index, questionState.StudentDto.ImageUrl, questionState.StudentDto.Reputation); 53 53 54 54 return new QuestionStateResponse(questionState.Id, questionState.Uid, questionState.Title, questionState.Text, questionState.CreatedOn, questionState.Views, questionState.LastActiveOn, student, answers, questionCategories, team); -
src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetQuestionState/QuestionStateResponse.cs
rf9983f5 r9885bee 40 40 public class StudentQuestionStateResponse 41 41 { 42 public StudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl )42 public StudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl, long reputation) 43 43 { 44 44 Id = id; … … 46 46 Index = index; 47 47 ImageUrl = imageUrl; 48 Reputation = reputation; 48 49 } 49 50 … … 53 54 public string Index { get; } 54 55 public string ImageUrl { get; } 56 public long Reputation { get; } 55 57 } 56 58 … … 112 114 public class AnswerStudentQuestionStateResponse 113 115 { 114 public AnswerStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl )116 public AnswerStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl, long reputation) 115 117 { 116 118 Id = id; … … 118 120 Index = index; 119 121 ImageUrl = imageUrl; 122 Reputation = reputation; 120 123 } 121 124 … … 125 128 public string Index { get; } 126 129 public string ImageUrl { get; } 130 public long Reputation { get; } 127 131 } 128 132 … … 148 152 public class AnswerResponseStudentQuestionStateResponse 149 153 { 150 public AnswerResponseStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl )154 public AnswerResponseStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl, long reputation) 151 155 { 152 156 Id = id; … … 154 158 Index = index; 155 159 ImageUrl = imageUrl; 160 Reputation = reputation; 156 161 } 157 162 … … 161 166 public string Index { get; } 162 167 public string ImageUrl { get; } 168 public long Reputation { get; } 163 169 } 164 170 } -
src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/Question/QuestionStateDto.cs
rf9983f5 r9885bee 38 38 public class StudentQuestionStateDto 39 39 { 40 public StudentQuestionStateDto(long id, Guid uid, string index, string imageUrl )40 public StudentQuestionStateDto(long id, Guid uid, string index, string imageUrl, long reputation) 41 41 { 42 42 Id = id; … … 44 44 Index = index; 45 45 ImageUrl = imageUrl; 46 Reputation = reputation; 46 47 } 47 48 … … 50 51 public string Index { get; } 51 52 public string ImageUrl { get; } 53 public long Reputation { get; } 52 54 } 53 55 … … 106 108 public class AnswerStudentQuestionStateDto 107 109 { 108 public AnswerStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl )110 public AnswerStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl, long reputation) 109 111 { 110 112 Id = id; … … 112 114 Index = index; 113 115 ImageUrl = imageUrl; 116 Reputation = reputation; 114 117 } 115 118 public long Id { get; } … … 117 120 public string Index { get; } 118 121 public string ImageUrl { get; } 122 public long Reputation { get; } 119 123 } 120 124 … … 139 143 public class AnswerResponseStudentQuestionStateDto 140 144 { 141 public AnswerResponseStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl )145 public AnswerResponseStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl, long reputation) 142 146 { 143 147 Id = id; … … 145 149 Index = index; 146 150 ImageUrl = imageUrl; 151 Reputation = reputation; 147 152 } 148 153 … … 151 156 public string Index { get; } 152 157 public string ImageUrl { get; } 158 public long Reputation { get; } 153 159 } 154 160 } -
src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs
rf9983f5 r9885bee 38 38 x.Student.Uid, 39 39 x.Student.IndexNumber, 40 x.Student.ImageUrl), 40 x.Student.ImageUrl, 41 x.Student.Reputation), 41 42 x.Answers.Select(y => 42 43 new AnswerQuestionStateDto( … … 51 52 y.Student.Uid, 52 53 y.Student.IndexNumber, 53 y.Student.ImageUrl), 54 y.Student.ImageUrl, 55 y.Student.Reputation), 54 56 y.AnswerResponses.Select(z => 55 57 new AnswerResponseQuestionStateDto( … … 62 64 z.Student.Uid, 63 65 z.Student.IndexNumber, 64 z.Student.ImageUrl))))), 66 z.Student.ImageUrl, 67 z.Student.Reputation))))), 65 68 x.QuestionCategories.Select(y => 66 69 new QuestionCategoryQuestionStateDto(
Note:
See TracChangeset
for help on using the changeset viewer.