diff --git a/src/boot/axios.ts b/src/boot/axios.ts index cda3340..0ad51d2 100644 --- a/src/boot/axios.ts +++ b/src/boot/axios.ts @@ -14,7 +14,7 @@ declare module 'vue' { // good idea to move this instance creation inside of the // "export default () => {}" function below (which runs individually // for each client) -const api = axios.create({ baseURL: import.meta.env.VITE_TARGO_BACKEND_URL }); +const api = axios.create({ baseURL: import.meta.env.VITE_TARGO_BACKEND_AUTH_URL }); export default defineBoot(({ app }) => { // for use inside Vue files (Options API) through this.$axios and this.$api diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index fce462c..6e48610 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -141,16 +141,13 @@ export default { }, usersListPage: { tableHeader: 'Users list', - search_input: 'Search', - tableCol_1: 'Status', - tableCol_2: 'First name', - tableCol_3: 'Last name', - tableCol_4: 'Email', - tableCol_5: 'Phone number', - tableCol_6: 'User type', - tableCol_7: 'Role', - tableCol_8: 'Created by', - tableCol_9: 'Supervisor', + searchInput: 'Search', + UserListFirstName: 'First name', + userListLastName: 'Last name', + userListEmail: 'Email', + userListPhone: 'Phone number', + userListRole: 'Role', + userListSupervisor: 'Supervisor', activeStatus: 'Active', unActiveStatus: 'Unactive', addButton: 'Click here to add a new user', diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index 7f9db97..c675590 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -372,17 +372,14 @@ export default { unlockToolTip: 'Déverrouiller la semaine', }, usersListPage: { - tableHeader: 'Liste des utilisateurs', - search_input: 'Rechercher', - tableCol_1: 'État', - tableCol_2: 'Prénom', - tableCol_3: 'Nom de famille', - tableCol_4: 'Email', - tableCol_5: 'Numéro de téléphone', - tableCol_6: 'Type d’utilisateur', - tableCol_7: 'Role', - tableCol_8: 'Créé par', - tableCol_9: 'Superviseur', + tableHeader: 'Liste d`employées', + searchInput: 'rechercher', + UserListFirstName: 'prénom', + userListLastName: 'nom de famille', + userListEmail: 'courriel', + userListPhone: '# téléphone', + userListRole: 'rôle', + userListSupervisor: 'superviseur', activeStatus: 'Actif', unActiveStatus: 'Inactif', addButton: 'Cliquez ici pour ajouter un nouvel utilisateur', diff --git a/src/modules/employee-list/components/supervisor/supervisor-crew-profile-list-item.vue b/src/modules/employee-list/components/supervisor/supervisor-crew-table-item.vue similarity index 100% rename from src/modules/employee-list/components/supervisor/supervisor-crew-profile-list-item.vue rename to src/modules/employee-list/components/supervisor/supervisor-crew-table-item.vue diff --git a/src/modules/employee-list/components/supervisor/supervisor-crew-table.vue b/src/modules/employee-list/components/supervisor/supervisor-crew-table.vue new file mode 100644 index 0000000..525c5aa --- /dev/null +++ b/src/modules/employee-list/components/supervisor/supervisor-crew-table.vue @@ -0,0 +1,41 @@ + + + + + + + \ No newline at end of file diff --git a/src/modules/employee-list/components/supervisor/supervisor-crew.vue b/src/modules/employee-list/components/supervisor/supervisor-crew.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/composables/use-accounts.ts b/src/modules/employee-list/composables/use-accounts.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/composables/use-employee-api.ts b/src/modules/employee-list/composables/use-employee-api.ts new file mode 100644 index 0000000..a0857b3 --- /dev/null +++ b/src/modules/employee-list/composables/use-employee-api.ts @@ -0,0 +1,59 @@ +import { useEmployeeStore } from "src/stores/employee-store"; + +export const useEmployeeListApi = () => { + const employeeListStore = useEmployeeStore(); + + const getEmployeeList = async (): Promise => { + const response = await employeeListStore.getEmployeeList().catch(err => { + console.log("Ran into an API error fetching employee list: ", err); + }); + + if (response) { + console.log("employee api retrieved list successfully") + return true; + } else { + return false; + } + }; + + return { + getEmployeeList, + }; +}; + +// import { useAuthStore } from "../../../stores/auth-store"; +// import type { User } from "src/modules/shared/types/user-interface"; + +// export const useAuthApi = () => { +// const authStore = useAuthStore(); + + + +// const login = () => { +// authStore.login(); +// }; + +// const oidcLogin = () => { +// authStore.oidcLogin(); +// }; + +// const logout = () => { +// authStore.logout(); +// }; + +// const isAuthorizedUser = () => { +// return authStore.isAuthorizedUser; +// }; + +// const setUser = (currentUser: User) => { +// authStore.user = currentUser; +// } + +// return { +// login, +// oidcLogin, +// logout, +// isAuthorizedUser, +// setUser, +// }; +// }; \ No newline at end of file diff --git a/src/modules/employee-list/composables/use-user-validation.ts b/src/modules/employee-list/composables/use-user-validation.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/composables/use-users.ts b/src/modules/employee-list/composables/use-users.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/employee-store.ts b/src/modules/employee-list/employee-store.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/components/supervisor/supervisor-crew-profile-list.vue b/src/modules/employee-list/pages/supervisor-crew-add-employee-page.vue similarity index 100% rename from src/modules/employee-list/components/supervisor/supervisor-crew-profile-list.vue rename to src/modules/employee-list/pages/supervisor-crew-add-employee-page.vue diff --git a/src/modules/employee-list/pages/supervisor-crew-page.vue b/src/modules/employee-list/pages/supervisor-crew-page.vue new file mode 100644 index 0000000..62b135a --- /dev/null +++ b/src/modules/employee-list/pages/supervisor-crew-page.vue @@ -0,0 +1,13 @@ + + + + + + + A test of your reflexes! + + + \ No newline at end of file diff --git a/src/modules/employee-list/pages/user-add-page.vue b/src/modules/employee-list/pages/user-add-page.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/pages/user-profile-wrapper.vue b/src/modules/employee-list/pages/user-profile-wrapper.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/services/services-employee-list.ts b/src/modules/employee-list/services/services-employee-list.ts new file mode 100644 index 0000000..0c9d59c --- /dev/null +++ b/src/modules/employee-list/services/services-employee-list.ts @@ -0,0 +1,43 @@ +// /* eslint-disable */ +import { api } from 'src/boot/axios'; +import type { employeeListTableItem } from '../types/employee-list-table-interface'; + +export const EmployeeListService = { + getEmployeeList: async (): Promise => { + const res = await api.get('/employees/employee-list'); + console.log('response from backend: ', res.data); + return res.data; + } +}; + +// export const AuthService = { +// // Will likely be deprecated and relegated to Authentik +// login: () => { +// //TODO: OIDC customer sign-in, eventually +// }, + +// oidcLogin: (): Window | null => { +// window.addEventListener('message', (event) => { +// if (event.data.type === 'authSuccess') { +// //some kind of logic here to set user in store +// } +// }) + +// return window.open('http://localhost:3000/auth/v1/login', 'authPopup', 'width=600,height=800'); +// }, + +// logout: () => { +// // TODO: logout logic +// api.post('/auth/logout') +// }, + +// refreshToken: () => { +// // TODO: token refresh logic +// api.post('/auth/refresh') +// }, + +// getProfile: () => { +// // TODO: user info fetch logic +// api.get('/auth/me') +// }, +// }; diff --git a/src/modules/employee-list/services/user-service.ts b/src/modules/employee-list/services/user-service.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/employee-list/types/employee-list-table-interface.ts b/src/modules/employee-list/types/employee-list-table-interface.ts new file mode 100644 index 0000000..7aaf40f --- /dev/null +++ b/src/modules/employee-list/types/employee-list-table-interface.ts @@ -0,0 +1,7 @@ +export interface employeeListTableItem { + first_name: string; + last_name: string; + supervisor_full_name: string | null; + company_name: number; + job_title: string; +}; \ No newline at end of file diff --git a/src/modules/employee-list/types/employee-profile-interface.ts b/src/modules/employee-list/types/employee-profile-interface.ts new file mode 100644 index 0000000..88b1caf --- /dev/null +++ b/src/modules/employee-list/types/employee-profile-interface.ts @@ -0,0 +1,12 @@ +export interface EmployeeProfile { + first_name: string; + last_name: string; + email: string; + phone_number: number; + role: string; + job_title: string; + company_code: number; + residence: string; + first_work_day: string; + last_work_day: string; +} \ No newline at end of file diff --git a/src/router/routes.ts b/src/router/routes.ts index 18509ef..564f357 100644 --- a/src/router/routes.ts +++ b/src/router/routes.ts @@ -17,6 +17,11 @@ const routes: RouteRecordRaw[] = [ name: RouteNames.TIMESHEET_APPROVALS, component: () => import('src/modules/timesheet-approval/pages/timesheet-approval.vue'), }, + { + path: 'employees', + name: RouteNames.EMPLOYEE_LIST, + component: () => import('src/modules/employee-list/pages/supervisor-crew-page.vue'), + }, ], }, diff --git a/src/stores/auth-store.ts b/src/stores/auth-store.ts index 19a601e..f25f094 100644 --- a/src/stores/auth-store.ts +++ b/src/stores/auth-store.ts @@ -11,7 +11,7 @@ const defaultUser: User = { }; export const useAuthStore = defineStore('auth', () => { - const user = ref (defaultUser); + const user = ref(defaultUser); const authError = ref(""); const isAuthorizedUser = computed(() => user.value.role !== 'guest'); diff --git a/src/stores/employee-store.ts b/src/stores/employee-store.ts new file mode 100644 index 0000000..49950eb --- /dev/null +++ b/src/stores/employee-store.ts @@ -0,0 +1,19 @@ +import { ref } from "vue"; +import { defineStore } from "pinia"; +import type { employeeListTableItem } from "src/modules/employee-list/types/employee-list-table-interface"; +import { EmployeeListService } from "src/modules/employee-list/services/services-employee-list"; + +export const useEmployeeStore = defineStore('employee', () => { + const employee = ref ({}); + const employeeList = ref([]); + + const getEmployeeList = async () => { + employeeList.value = await EmployeeListService.getEmployeeList().catch(err => { + console.log("Ran into an error fetching employee list: ", err); + }); + console.log("store retrieved list successfully:"); + }; + + return { employee, employeeList, getEmployeeList }; +}); +