From c5d54ad5c5020975b2439795e324949a39f94175 Mon Sep 17 00:00:00 2001 From: Kenta420 Date: Thu, 28 Dec 2023 11:07:17 +0700 Subject: [PATCH] add select department --- .../src/app/core/layout/layout.component.html | 5 ++- .../src/app/core/layout/layout.component.ts | 18 ++++++---- .../app/core/services/department.service.ts | 26 ++++++++++++++ .../src/assets/departments/logo/alpha-3.png | Bin 0 -> 8594 bytes .../src/assets/departments/logo/aus_plate.png | Bin 0 -> 9072 bytes .../src/assets/departments/logo/mys_plate.png | Bin 0 -> 7714 bytes .../src/assets/departments/logo/tha_plate.png | Bin 0 -> 7116 bytes server/contracts/common.go | 4 +++ server/routers/recipe.go | 34 ++++++++++++++++++ 9 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 client/src/app/core/services/department.service.ts create mode 100644 client/src/assets/departments/logo/alpha-3.png create mode 100644 client/src/assets/departments/logo/aus_plate.png create mode 100644 client/src/assets/departments/logo/mys_plate.png create mode 100644 client/src/assets/departments/logo/tha_plate.png diff --git a/client/src/app/core/layout/layout.component.html b/client/src/app/core/layout/layout.component.html index 90fa845..ba0c638 100644 --- a/client/src/app/core/layout/layout.component.html +++ b/client/src/app/core/layout/layout.component.html @@ -24,7 +24,10 @@ > - + (); - - constructor( private _userService: UserService, private _router: ActivatedRoute diff --git a/client/src/app/core/services/department.service.ts b/client/src/app/core/services/department.service.ts new file mode 100644 index 0000000..2287293 --- /dev/null +++ b/client/src/app/core/services/department.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { + BehaviorSubject, lastValueFrom, Observable, +} from 'rxjs'; +import {environment} from "../../../environments/environment"; +@Injectable({ providedIn: 'root' }) +export class DepartmentService { + private departmentSubject = new BehaviorSubject(null); + + constructor(private readonly http: HttpClient) {} + + private _getDepartment(): Observable<{result: string[]}> { + return this.http.get<{result: string[]}>(environment.api + "/departments", { + withCredentials: true, + }) + } + + async fetchDepartment() : Promise { + return lastValueFrom(this._getDepartment()).then(({result}) => result).catch(err => {throw err}) + } + + get currentDepartment(): string | null { + return this.departmentSubject.value + } +} diff --git a/client/src/assets/departments/logo/alpha-3.png b/client/src/assets/departments/logo/alpha-3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7c6fe62b6e1d001417c11a426db189794bcd39 GIT binary patch literal 8594 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 RzXBP6yfjp*TEaN!{{hEZJ7oX> literal 0 HcmV?d00001 diff --git a/client/src/assets/departments/logo/mys_plate.png b/client/src/assets/departments/logo/mys_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..7b7a8ccacd54b44a2deae8a888ce0211385dace7 GIT binary patch literal 7714 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 ZFwrhX6CC-?>Q&MOyq8gyu7Dbc{0EWUbtC`) literal 0 HcmV?d00001 diff --git a/client/src/assets/departments/logo/tha_plate.png b/client/src/assets/departments/logo/tha_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..95540a82006cd89ce3c20d5c3ee450846e64a9d9 GIT binary patch literal 7116 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 C;)p;1 literal 0 HcmV?d00001 diff --git a/server/contracts/common.go b/server/contracts/common.go index a774462..bb65d7c 100644 --- a/server/contracts/common.go +++ b/server/contracts/common.go @@ -4,3 +4,7 @@ type ResponseDefault struct { Status string `json:"status"` Message string `json:"message"` } + +type Response[T any] struct { + Result T `json:"result"` +} diff --git a/server/routers/recipe.go b/server/routers/recipe.go index a202465..172b32a 100644 --- a/server/routers/recipe.go +++ b/server/routers/recipe.go @@ -8,6 +8,7 @@ import ( "path" "recipe-manager/contracts" "recipe-manager/data" + "recipe-manager/enums/permissions" "recipe-manager/helpers" "recipe-manager/models" "recipe-manager/services/logger" @@ -61,6 +62,39 @@ func (rr *RecipeRouter) Route(r chi.Router) { r.Get("/saved/{country}/{filename_version_only}", rr.getSavedRecipes) + r.Get("/departments", func(w http.ResponseWriter, r *http.Request) { + w.Header().Add("Content-Type", "application/json") + + // return departments that user can access + + u := r.Context().Value("user").(*models.User) + var result []string + + if u.Permissions.IsHavePermission(permissions.ThaiPermission) { + result = append(result, "tha") + } + + if u.Permissions.IsHavePermission(permissions.MalayPermission) { + result = append(result, "mys") + } + + if u.Permissions.IsHavePermission(permissions.AusPermission) { + result = append(result, "aus") + } + + if u.Permissions.IsHavePermission(permissions.Alpha3Permission) { + result = append(result, "alpha") + } + + if err := json.NewEncoder(w).Encode(&contracts.Response[[]string]{ + Result: result, + }); err != nil { + rr.taoLogger.Log.Error("RecipeRouter.GetDepartments", zap.Error(err)) + http.Error(w, "Internal Error", http.StatusInternalServerError) + return + } + }) + r.Get("/countries", func(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") // get key from map