├── src ├── store │ ├── initialValues │ │ ├── Cv.js │ │ ├── User.js │ │ ├── Timer.js │ │ ├── Employer.js │ │ ├── JobSeeker.js │ │ ├── ProfilePhoto.js │ │ ├── SystemPersonnel.js │ │ ├── WorkExperience.js │ │ ├── CvWorkExperienceState.js │ │ ├── CvTechnology.js │ │ ├── CvSocialMedia.js │ │ ├── CvForeignLanguage.js │ │ └── EducationInformation.js │ ├── actions │ │ ├── CvActions.js │ │ ├── UserActions.js │ │ ├── PhotoActions.js │ │ ├── EmployerActions.js │ │ ├── JobSeekerActions.js │ │ ├── TimerStateActions.js │ │ ├── WorkExperienceActions.js │ │ ├── SystemPersonnelActions.js │ │ ├── CvTechnologyActions.js │ │ ├── CvTechnologyStateActions.js │ │ ├── CvSocialMediaStateActions.js │ │ ├── EducationInformationActions.js │ │ ├── CvWorkExperienceActions.js │ │ ├── CvEducationInformationActions.js │ │ ├── CvSocialMediaActions.js │ │ └── CvForeignLanguageActions.js │ ├── configureStore.js │ ├── reducers │ │ ├── CvReducer.js │ │ ├── UserReducer.js │ │ ├── EmployerReducer.js │ │ ├── JobSeekerReducer.js │ │ ├── TimerStateReducer.js │ │ ├── CvTechnologyReducer.js │ │ ├── WorkExperienceReducer.js │ │ ├── CvSocialMediaReducer.js │ │ ├── SystemPersonnelReducer.js │ │ ├── CvTechnologyStateReducer.js │ │ ├── CvForeignLanguageReducer.js │ │ ├── CvSocialMediaStateReducer.js │ │ ├── CvWorkExperienceStateReducer.js │ │ ├── EducationInformationReducer.js │ │ ├── CvForeignLanguageStateReducer.js │ │ ├── CvEducationInformationStateReducer.js │ │ └── PhotoReducer.js │ └── rootReducer.js ├── components │ ├── navi │ │ ├── register │ │ │ └── SystemPersonnelRegister.jsx │ │ ├── Navi.jsx │ │ ├── Login.jsx │ │ ├── Logout.jsx │ │ ├── PersonnelNavi.jsx │ │ ├── BaseNavi.jsx │ │ ├── JobSeekerNavi.jsx │ │ └── EmployerNavi.jsx │ ├── root │ │ ├── App.css │ │ ├── App.js │ │ └── Dashboard.jsx │ ├── services │ │ ├── CityService.jsx │ │ ├── EmailService.jsx │ │ ├── JobPositionService.jsx │ │ ├── LanguageLevelService.jsx │ │ ├── WorkTypeService.jsx │ │ ├── SocialMediaService.jsx │ │ ├── UniversityService.jsx │ │ ├── WorkTimeTypeService.jsx │ │ ├── ForeignLanguageService.jsx │ │ ├── UniversityDepartmentService.jsx │ │ ├── PhotoService.jsx │ │ ├── TechnologyService.jsx │ │ ├── UserService.jsx │ │ ├── PersonnelService.jsx │ │ ├── CvTechnologyService.jsx │ │ ├── CvSocialMediaService.jsx │ │ ├── WorkExperienceService.jsx │ │ ├── CvForeignLanguageService.jsx │ │ ├── CvService.jsx │ │ ├── EducationInformationService.jsx │ │ ├── FavoriteService.jsx │ │ ├── JobSeekerService.jsx │ │ ├── EmployerService.jsx │ │ └── JobAdvertisementService.jsx │ ├── toolbox │ │ ├── ZYFormLabel.jsx │ │ ├── ZYGreyButton.jsx │ │ ├── ZYRedButton.jsx │ │ ├── ZYFooter.jsx │ │ ├── ZYMainPageButton.jsx │ │ ├── ZYBaseGrid.jsx │ │ ├── ZYTitle.jsx │ │ ├── ZYTextInput.jsx │ │ ├── JobAdvertisementListSegment.jsx │ │ ├── Timer.jsx │ │ └── JobAdvertisementDetailsSegment.jsx │ ├── LeftMenu │ │ ├── LeftMenu.jsx │ │ ├── JobSeekerMenu.jsx │ │ ├── EmployerMenu.jsx │ │ └── SystemPersonnelMenu.jsx │ ├── pages │ │ ├── employers │ │ │ ├── EmployerList.jsx │ │ │ └── EmployerProfile.jsx │ │ ├── cvTechnologies │ │ │ ├── TechnologyList.jsx │ │ │ ├── TechnologyAdd.jsx │ │ │ ├── CvTechnologyList.jsx │ │ │ ├── CvTechnologyUpdate.jsx │ │ │ └── CvTechnologyAdd.jsx │ │ ├── cvSocialMedia │ │ │ ├── SocialMediaList.jsx │ │ │ └── CvSocialMediaList.jsx │ │ ├── cvForeignLanguages │ │ │ ├── ForeignLanguageList.jsx │ │ │ └── CvForeignLanguageList.jsx │ │ ├── jobPositions │ │ │ └── JobPositionList.jsx │ │ ├── cvEducationInformation │ │ │ ├── UniversityDepartmentList.jsx │ │ │ ├── UniversityList.jsx │ │ │ └── CvEducationInformationList.jsx │ │ ├── jobAdvertisement │ │ │ ├── JobAdvertisementClose.jsx │ │ │ ├── CityList.jsx │ │ │ ├── JobAdvertisementDetailsForAll.jsx │ │ │ ├── JobAdvertisementDetails.jsx │ │ │ ├── AllJobAdvertisementList.jsx │ │ │ ├── JobAdvertisementListForEmployer.jsx │ │ │ ├── PassiveJobAdvertisementListForEmployer.jsx │ │ │ ├── ActiveJobAdvertisementListForEmployer.jsx │ │ │ └── FavoriteJobAdvertisementForJobSeeker.jsx │ │ ├── profile │ │ │ └── BaseProfilePage.jsx │ │ ├── login │ │ │ └── Login.jsx │ │ ├── cvPhotos │ │ │ └── CvPhotos.jsx │ │ ├── jobSeekers │ │ │ ├── JobSeekerList.jsx │ │ │ └── JobSeekerDetail.jsx │ │ ├── systemPersonnels │ │ │ ├── UnApprovedJobAdvertisementList.jsx │ │ │ ├── ApprovedJobAdvertisementList.jsx │ │ │ ├── UpdatedEmployerList.jsx │ │ │ ├── SystemPersonnelProfile.jsx │ │ │ ├── ApprovedEmployerList.jsx │ │ │ ├── UnApprovedEmployerList.jsx │ │ │ └── UpdatedEmployerListApproval.jsx │ │ ├── mainPage │ │ │ └── MainPage.jsx │ │ ├── cv │ │ │ ├── CvAdd.jsx │ │ │ └── CvList.jsx │ │ ├── cvObjective │ │ │ ├── CvObjective.jsx │ │ │ └── CvObjectiveUpdate.jsx │ │ └── password │ │ │ └── PasswordUpdate.jsx │ └── mainLayout │ │ └── MainLayout.jsx ├── css │ ├── LeftMenu.css │ ├── JobAdvertisementList.css │ ├── Login.css │ ├── JobSeekerCss.css │ ├── JobAdvertisement.css │ ├── Navi.css │ ├── CvList.css │ ├── MainLayout.css │ ├── CvCard.css │ └── JobAdvertisementAdd.css ├── setupTests.js ├── App.test.js ├── reportWebVitals.js ├── index.css ├── index.js └── logo.svg ├── public ├── favicon.ico ├── logo192.png ├── logo512.png ├── robots.txt ├── manifest.json └── index.html ├── out └── src │ └── umlDiagram │ └── componentsUml │ └── componentsUml.png ├── README.md ├── .gitignore └── package.json /src/store/initialValues/Cv.js: -------------------------------------------------------------------------------- 1 | export const cvs={} -------------------------------------------------------------------------------- /src/store/initialValues/User.js: -------------------------------------------------------------------------------- 1 | export const user={} -------------------------------------------------------------------------------- /src/components/navi/register/SystemPersonnelRegister.jsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/store/initialValues/Timer.js: -------------------------------------------------------------------------------- 1 | export const timerState={} -------------------------------------------------------------------------------- /src/store/initialValues/Employer.js: -------------------------------------------------------------------------------- 1 | export const employer = {} -------------------------------------------------------------------------------- /src/store/initialValues/JobSeeker.js: -------------------------------------------------------------------------------- 1 | export const jobSeeker ={} -------------------------------------------------------------------------------- /src/store/initialValues/ProfilePhoto.js: -------------------------------------------------------------------------------- 1 | export const profilePhoto={} -------------------------------------------------------------------------------- /src/store/initialValues/SystemPersonnel.js: -------------------------------------------------------------------------------- 1 | export const systemPersonnel={} -------------------------------------------------------------------------------- /src/store/initialValues/WorkExperience.js: -------------------------------------------------------------------------------- 1 | export const workExperience={} 2 | -------------------------------------------------------------------------------- /src/store/initialValues/CvWorkExperienceState.js: -------------------------------------------------------------------------------- 1 | export const workExperienceState={state:0} -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeynebb/HrmsProjectReact/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeynebb/HrmsProjectReact/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeynebb/HrmsProjectReact/HEAD/public/logo512.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/store/initialValues/CvTechnology.js: -------------------------------------------------------------------------------- 1 | export const cvTechnology={} 2 | 3 | export const cvTechnologyState={state:0} -------------------------------------------------------------------------------- /src/store/initialValues/CvSocialMedia.js: -------------------------------------------------------------------------------- 1 | export const cvSocialMedia ={} 2 | 3 | export const cvSocialMediaState={state:0} -------------------------------------------------------------------------------- /src/store/initialValues/CvForeignLanguage.js: -------------------------------------------------------------------------------- 1 | export const cvForeignLanguage={} 2 | 3 | export const cvForeignLanguageState={state:0} -------------------------------------------------------------------------------- /out/src/umlDiagram/componentsUml/componentsUml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeynebb/HrmsProjectReact/HEAD/out/src/umlDiagram/componentsUml/componentsUml.png -------------------------------------------------------------------------------- /src/store/actions/CvActions.js: -------------------------------------------------------------------------------- 1 | export const GET_CV ="GET_CV" 2 | 3 | export function getCv(cv) { 4 | return{ 5 | type: GET_CV, 6 | payload: cv 7 | } 8 | } -------------------------------------------------------------------------------- /src/store/initialValues/EducationInformation.js: -------------------------------------------------------------------------------- 1 | //export const educationInformationId=0 2 | export const educationInformation={} 3 | 4 | export const educationInformationState={state:0} -------------------------------------------------------------------------------- /src/css/LeftMenu.css: -------------------------------------------------------------------------------- 1 | .ui.leftMenuOne{ 2 | background-color: black; 3 | 4 | } 5 | 6 | .leftMenuOne .leftMenu{ 7 | font-family: Arial, Helvetica, sans-serif; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/store/actions/UserActions.js: -------------------------------------------------------------------------------- 1 | export const GET_USER ="GET_USER" 2 | 3 | export function getUser(user) { 4 | return{ 5 | type: GET_USER, 6 | payload: user 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/root/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | font-family: Arial; 4 | } 5 | 6 | .ui.main.container{ 7 | margin-top: 5em; 8 | } 9 | .body{ 10 | height: 100%; 11 | margin: 0; 12 | } -------------------------------------------------------------------------------- /src/store/actions/PhotoActions.js: -------------------------------------------------------------------------------- 1 | export const LIST_TO_PHOTO = "LIST_TO_PHOTO" 2 | 3 | 4 | export function listToPhoto(photo) { 5 | return{ 6 | type: LIST_TO_PHOTO, 7 | payload: photo 8 | } 9 | } -------------------------------------------------------------------------------- /src/components/services/CityService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class CityService { 4 | 5 | getCities() { 6 | return axios.get("/api/city/getAll") 7 | 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/store/actions/EmployerActions.js: -------------------------------------------------------------------------------- 1 | export const GET_EMPLOYER ="GET_EMPLOYER" 2 | 3 | export function getEmployer(employer) { 4 | return{ 5 | type: GET_EMPLOYER, 6 | payload: employer 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/services/EmailService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class EmailService { 4 | 5 | emailCheck(email){ 6 | return axios.get("/api/emails/emailCheck?email="+email) 7 | } 8 | 9 | } -------------------------------------------------------------------------------- /src/components/services/JobPositionService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class JobPositionService { 4 | 5 | getJobPositions() { 6 | return axios.get("/api/jobPosition/getAll") 7 | } 8 | 9 | } -------------------------------------------------------------------------------- /src/components/services/LanguageLevelService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class LanguageLevelService { 4 | 5 | getAll(){ 6 | return axios.get("/api/languageLevels/getAll") 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/services/WorkTypeService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class WorkTypeService { 4 | 5 | getWorkTypes() { 6 | return axios.get("/api/workType/getAll") 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/store/actions/JobSeekerActions.js: -------------------------------------------------------------------------------- 1 | export const GET_JOB_SEEKER ="GET_JOB_SEEKER" 2 | 3 | export function getJobSeeker(jobSeeker) { 4 | return{ 5 | type: GET_JOB_SEEKER, 6 | payload: jobSeeker 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/css/JobAdvertisementList.css: -------------------------------------------------------------------------------- 1 | .favoriteIcon{ 2 | position: absolute; 3 | right: 3%; 4 | top: 10%; 5 | } 6 | 7 | .jobAdvertisementDiv{ 8 | text-align: left; 9 | font-family: "Arial, Helvetica, sans-serif"; 10 | } -------------------------------------------------------------------------------- /src/components/services/SocialMediaService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class SocialMediaService { 4 | 5 | getSocialMedia() { 6 | return axios.get("/api/socialMedia/getAll") 7 | 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /src/components/services/UniversityService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class UniversityService { 4 | 5 | getUniversities() { 6 | return axios.get("/api/university/getAll") 7 | 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /src/components/services/WorkTimeTypeService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class WorkTimeTypeService { 4 | 5 | getWorkTimeTypes() { 6 | return axios.get("/api/workTimeType/getAll") 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/css/Login.css: -------------------------------------------------------------------------------- 1 | .ui.segmentLogin{ 2 | text-align: left; 3 | } 4 | 5 | .segmentLogin .headerLogin{ 6 | background-color: black; 7 | color:white; 8 | font-family: Arial; 9 | font-size: 18px; 10 | text-align: center; 11 | } -------------------------------------------------------------------------------- /src/store/actions/TimerStateActions.js: -------------------------------------------------------------------------------- 1 | export const GET_TIMER_STATE = "GET_TIMER_STATE" 2 | 3 | export default function getTimerState(state) { 4 | return { 5 | type: GET_TIMER_STATE, 6 | payload: state 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /src/components/services/ForeignLanguageService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class ForeignLanguageService { 4 | 5 | getForeignLanguages() { 6 | return axios.get("/api/foreignLanguage/getAll") 7 | 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /src/store/actions/WorkExperienceActions.js: -------------------------------------------------------------------------------- 1 | export const GET_WORK_EXPERIENCE ="GET_WORK_EXPERIENCE" 2 | 3 | export function getWorkExperience(workExperience) { 4 | return{ 5 | type: GET_WORK_EXPERIENCE, 6 | payload: workExperience 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /src/store/actions/SystemPersonnelActions.js: -------------------------------------------------------------------------------- 1 | export const GET_SYSTEM_PERSONNEL ="GET_SYSTEM_PERSONNEL" 2 | 3 | export function getSystemPersonnel(systemPersonnel) { 4 | return{ 5 | type: GET_SYSTEM_PERSONNEL, 6 | payload: systemPersonnel 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/services/UniversityDepartmentService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class UniversityDepartmentService { 4 | 5 | getUniversityDepartments() { 6 | return axios.get("/api/universityDepartment/getAll") 7 | 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /src/store/actions/CvTechnologyActions.js: -------------------------------------------------------------------------------- 1 | export const GET_CV_TECHNOLOGY ="GET_CV_TECHNOLOGY" 2 | 3 | export default function getCvTechnology(cvTechnology) { 4 | return{ 5 | type: GET_CV_TECHNOLOGY, 6 | payload: cvTechnology 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /src/store/actions/CvTechnologyStateActions.js: -------------------------------------------------------------------------------- 1 | export const GET_CV_TECHNOLOGY_STATE = "GET_CV_TECHNOLOGY_STATE" 2 | 3 | export default function getCvTechnologyState(state) { 4 | return { 5 | type: GET_CV_TECHNOLOGY_STATE, 6 | payload: state 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/store/configureStore.js: -------------------------------------------------------------------------------- 1 | import { createStore } from "redux"; 2 | import { devToolsEnhancer } from "redux-devtools-extension"; 3 | import rootReducer from "./rootReducer"; 4 | 5 | export function configureStore() { 6 | return createStore(rootReducer, devToolsEnhancer()) 7 | } -------------------------------------------------------------------------------- /src/store/actions/CvSocialMediaStateActions.js: -------------------------------------------------------------------------------- 1 | export const CHANGE_SOCIAL_MEDIA_STATE = "CHANGE_SOCIAL_MEDIA_STATE" 2 | 3 | export default function getCvSocialMediaState(state) { 4 | return{ 5 | type: CHANGE_SOCIAL_MEDIA_STATE, 6 | payload: state 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /src/components/navi/Navi.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import '../../css/Navi.css' 3 | import BaseNavi from './BaseNavi'; 4 | 5 | 6 | export default function Navi() { 7 | 8 | return ( 9 |
10 | 11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /src/store/actions/EducationInformationActions.js: -------------------------------------------------------------------------------- 1 | export const GET_EDUCATION_INFORMATION ="GET_EDUCATION_INFORMATION" 2 | 3 | export function getEducationInformation(educationInformation) { 4 | return{ 5 | type: GET_EDUCATION_INFORMATION, 6 | payload: educationInformation 7 | } 8 | } -------------------------------------------------------------------------------- /src/store/actions/CvWorkExperienceActions.js: -------------------------------------------------------------------------------- 1 | export const CHANGE_WORK_EXPERIENCE_STATE ="CHANGE_WORK_EXPERIENCE_STATE" 2 | 3 | export default function getCvWorkExperienceState(state) { 4 | return{ 5 | type: CHANGE_WORK_EXPERIENCE_STATE, 6 | payload: state 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /src/store/actions/CvEducationInformationActions.js: -------------------------------------------------------------------------------- 1 | export const CHANGE_EDUCATION_INFORMATION_STATE = "CHANGE_EDUCATION_INFORMATION_STATE" 2 | 3 | export default function getEducationInformationState(state) { 4 | return{ 5 | type: CHANGE_EDUCATION_INFORMATION_STATE, 6 | payload: state 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/services/PhotoService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class PhotoService { 4 | 5 | getPhotos() { 6 | return axios.get("/api/photo/getAll") 7 | 8 | } 9 | getPhotoForCvId(cvId){ 10 | return axios.get("/api/photo/getByPhotoForCvId?cvId="+cvId) 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /src/components/toolbox/ZYFormLabel.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const ZYFormLabel = ({ placeHolder }) => { 4 | 5 | return ( 6 |
7 | 8 |
9 | ) 10 | 11 | }; 12 | 13 | export default ZYFormLabel; -------------------------------------------------------------------------------- /src/components/services/TechnologyService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class TechnologyService { 4 | 5 | getTechnology() { 6 | return axios.get("/api/technology/getAll") 7 | 8 | } 9 | add(technology){ 10 | return axios.post("/api/technology/add", technology) 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /src/css/JobSeekerCss.css: -------------------------------------------------------------------------------- 1 | .jobSeeker{ 2 | 3 | } 4 | .ui.jobSeeker.table{ 5 | 6 | 7 | } 8 | .tableHeader{ 9 | font-size: xx-large; 10 | background-color: #9c0300; 11 | } 12 | 13 | .ui.jobSeeker.header{ 14 | background-color: #9c0300; 15 | font-size: xx-large; 16 | } 17 | 18 | .deneme{ 19 | background-color: #9c0300 ; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Hrms Project - React - Front-End 2 | 3 | + React Front-End 4 | 5 | ![reactProjectFrontEnd](https://user-images.githubusercontent.com/46132459/122122351-5cc5fd80-ce35-11eb-9c92-29ae7fe4a02d.gif) 6 | 7 | + Uml Diyagramı: 8 | 9 | ![componentsUml](https://user-images.githubusercontent.com/46132459/121368813-042dc680-c944-11eb-899b-4ad1f971fd15.png) 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/toolbox/ZYGreyButton.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Button } from 'semantic-ui-react'; 3 | 4 | const ZYGreyButton = ({name}) => { 5 | 6 | return ( 7 |
8 | 9 |
10 | ) 11 | 12 | }; 13 | 14 | export default ZYGreyButton; -------------------------------------------------------------------------------- /src/components/toolbox/ZYRedButton.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Button } from 'semantic-ui-react'; 3 | 4 | const ZYRedButton = ({name}) => { 5 | 6 | return ( 7 |
8 | 9 |
10 | ) 11 | 12 | }; 13 | 14 | export default ZYRedButton; -------------------------------------------------------------------------------- /src/components/services/UserService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class UserService { 4 | 5 | getAll(){ 6 | return axios.get("/api/user/getAll") 7 | } 8 | 9 | updatePassword(password,passwordAgain,userId){ 10 | return axios.post("/api/user/updatePassword?password="+password+"&passwordAgain="+passwordAgain+"&userId="+userId) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/components/toolbox/ZYFooter.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const ZYFooter = ({ placeHolder }) => { 4 | 5 | return ( 6 |
7 |
8 | {placeHolder} 9 |
10 |
11 | ) 12 | 13 | }; 14 | 15 | export default ZYFooter; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src/store/reducers/CvReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_CV } from "../actions/CvActions"; 2 | import { cvs } from "../initialValues/Cv"; 3 | 4 | const initialState = { 5 | cvs: cvs 6 | } 7 | 8 | export default function CvReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_CV: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /src/store/reducers/UserReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_USER } from "../actions/UserActions"; 2 | import { user } from "../initialValues/User"; 3 | 4 | const initialState = { 5 | user: user 6 | } 7 | 8 | export default function UserReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_USER: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/store/reducers/EmployerReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_EMPLOYER } from "../actions/EmployerActions"; 2 | import { employer } from "../initialValues/Employer"; 3 | 4 | const initialState = { 5 | employer: employer 6 | } 7 | 8 | export default function EmployerReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_EMPLOYER: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /src/store/reducers/JobSeekerReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_JOB_SEEKER } from "../actions/JobSeekerActions"; 2 | import { jobSeeker } from "../initialValues/JobSeeker"; 3 | 4 | const initialState = { 5 | jobSeeker: jobSeeker 6 | } 7 | 8 | export default function JobSeekerReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_JOB_SEEKER: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /src/store/reducers/TimerStateReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_TIMER_STATE } from "../actions/TimerStateActions"; 2 | import { timerState } from "../initialValues/Timer"; 3 | 4 | const initialState = { 5 | timerState: timerState 6 | } 7 | 8 | export default function TimerStateReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_TIMER_STATE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/store/actions/CvSocialMediaActions.js: -------------------------------------------------------------------------------- 1 | export const GET_CV_SOCIAL_MEDIA ="GET_CV_SOCIAL_MEDIA" 2 | export const CHANGE_SOCIAL_MEDIA_STATE = "CHANGE_SOCIAL_MEDIA_STATE" 3 | 4 | export default function getCvSocialMedia(cvSocialMedia) { 5 | return{ 6 | type: GET_CV_SOCIAL_MEDIA, 7 | payload: cvSocialMedia 8 | } 9 | } 10 | 11 | export function getCvSocialMediaState(state) { 12 | return{ 13 | type: CHANGE_SOCIAL_MEDIA_STATE, 14 | payload: state 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/store/reducers/CvTechnologyReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_CV_TECHNOLOGY } from "../actions/CvTechnologyActions"; 2 | import { cvTechnology } from "../initialValues/CvTechnology"; 3 | 4 | const initialState = { 5 | cvTechnology: cvTechnology 6 | } 7 | 8 | export default function CvTechnologyReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_CV_TECHNOLOGY: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/css/JobAdvertisement.css: -------------------------------------------------------------------------------- 1 | .ui.jobAdvertisementTable{ 2 | font-family: Arial, Helvetica, sans-serif; 3 | padding: 15px; 4 | 5 | } 6 | 7 | .jobAdvertisementTable .leftTd{ 8 | width:45%; 9 | font-weight: bold; 10 | font-size: medium; 11 | 12 | } 13 | 14 | .jobAdvertisementTable .rightTd{ 15 | width:55%; 16 | font-size: medium; 17 | 18 | } 19 | 20 | .ui.listDiv{ 21 | font-size: x-large; 22 | font-family: Arial, Helvetica, sans-serif; 23 | background-color: black; 24 | 25 | } -------------------------------------------------------------------------------- /src/store/reducers/WorkExperienceReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_WORK_EXPERIENCE } from "../actions/WorkExperienceActions"; 2 | import { workExperience } from "../initialValues/WorkExperience"; 3 | 4 | const initialState = { 5 | workExperience: workExperience 6 | } 7 | 8 | export default function WorkExperienceReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_WORK_EXPERIENCE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /src/components/LeftMenu/LeftMenu.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import '../../css/LeftMenu.css' 3 | import EmployerMenu from './EmployerMenu' 4 | import JobSeekerMenu from './JobSeekerMenu' 5 | import SystemPersonnelMenu from './SystemPersonnelMenu' 6 | 7 | //Menüler, kullanıcı statüsüne göre görüntülenecek 8 | export default function LeftMenu() { 9 | return ( 10 |
11 | 12 | 13 | 14 |
15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /src/store/reducers/CvSocialMediaReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_CV_SOCIAL_MEDIA } from "../actions/CvSocialMediaActions"; 2 | import { cvSocialMedia } from "../initialValues/CvSocialMedia"; 3 | 4 | const initialState = { 5 | cvSocialMedia: cvSocialMedia 6 | } 7 | 8 | export default function CvSocialMediaReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_CV_SOCIAL_MEDIA: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/store/reducers/SystemPersonnelReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_SYSTEM_PERSONNEL } from "../actions/SystemPersonnelActions"; 2 | import { systemPersonnel } from "../initialValues/SystemPersonnel"; 3 | 4 | const initialState = { 5 | systemPersonnel: systemPersonnel 6 | } 7 | 8 | export default function SystemPersonnelReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_SYSTEM_PERSONNEL: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/components/pages/employers/EmployerList.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import EmployerService from '../../services/EmployerService' 3 | 4 | export default function EmployerList() { 5 | 6 | const [employers, setEmployers] = useState([]); 7 | 8 | useEffect(() => { 9 | let employerService = new EmployerService() 10 | employerService.getEmployers().then(result => setEmployers(result.data.data)) 11 | }, []) 12 | 13 | 14 | return ( 15 |
16 | 17 |
18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /src/components/root/App.js: -------------------------------------------------------------------------------- 1 | import '../root/App.css' 2 | import Navi from '../navi/Navi'; 3 | import { Container } from 'semantic-ui-react'; 4 | import Dashboard from '../root/Dashboard.jsx'; 5 | import 'semantic-ui-css/semantic.min.css'; 6 | import "react-datepicker/dist/react-datepicker.css"; 7 | 8 | function App() { 9 | return ( 10 |
11 | 12 | 13 | 14 | 15 | 16 |
17 | ); 18 | } 19 | 20 | export default App; 21 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | height: 100%; 4 | font-family: Arial; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 11 | monospace; 12 | } 13 | 14 | .leftMenu{ 15 | color: white; 16 | background-color: black; 17 | font-size: large; 18 | 19 | } 20 | .loginButton{ 21 | color: white; 22 | background-color: teal; 23 | } 24 | label{ 25 | font-family: Arial, Helvetica, sans-serif; 26 | } -------------------------------------------------------------------------------- /src/store/actions/CvForeignLanguageActions.js: -------------------------------------------------------------------------------- 1 | export const GET_CV_FOREIGN_LANGUAGE ="GET_CV_FOREIGN_LANGUAGE" 2 | export const GET_CV_FOREIGN_LANGUAGE_STATE ="GET_CV_FOREIGN_LANGUAGE_STATE" 3 | 4 | export default function getCvForeignLanguage(cvForeignLanguage) { 5 | return{ 6 | type: GET_CV_FOREIGN_LANGUAGE, 7 | payload: cvForeignLanguage 8 | } 9 | } 10 | 11 | export function getCvForeignLanguageState(state) { 12 | return{ 13 | type: GET_CV_FOREIGN_LANGUAGE_STATE, 14 | payload: state 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/store/reducers/CvTechnologyStateReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_CV_TECHNOLOGY_STATE } from "../actions/CvTechnologyStateActions"; 2 | import { cvTechnologyState, } from "../initialValues/CvTechnology"; 3 | 4 | const initialState = { 5 | cvTechnologyState: cvTechnologyState 6 | } 7 | 8 | export default function CvTechnologyStateReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_CV_TECHNOLOGY_STATE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/store/reducers/CvForeignLanguageReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_CV_FOREIGN_LANGUAGE } from "../actions/CvForeignLanguageActions"; 2 | import { cvForeignLanguage } from "../initialValues/CvForeignLanguage"; 3 | 4 | const initialState = { 5 | cvForeignLanguage: cvForeignLanguage 6 | } 7 | 8 | export default function CvForeignLanguageReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_CV_FOREIGN_LANGUAGE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/store/reducers/CvSocialMediaStateReducer.js: -------------------------------------------------------------------------------- 1 | import { CHANGE_SOCIAL_MEDIA_STATE } from "../actions/CvSocialMediaActions"; 2 | import { cvSocialMediaState } from "../initialValues/CvSocialMedia"; 3 | 4 | const initialState = { 5 | cvSocialMediaState: cvSocialMediaState 6 | } 7 | 8 | export default function CvSocialMediaStateReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case CHANGE_SOCIAL_MEDIA_STATE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/components/toolbox/ZYMainPageButton.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { NavLink } from 'react-router-dom'; 3 | import { Button } from 'semantic-ui-react'; 4 | 5 | const ZYMainPageButton = ({ name, src }) => { 6 | 7 | return ( 8 |
9 | 12 |
13 | ) 14 | 15 | }; 16 | 17 | export default ZYMainPageButton; -------------------------------------------------------------------------------- /src/css/Navi.css: -------------------------------------------------------------------------------- 1 | .naviObject .link{ 2 | margin-left: "3em"; 3 | margin-top: "0.3em"; 4 | color: "white"; 5 | position: "left"; 6 | font-size:"20px"; 7 | } 8 | 9 | .naviMenu{ 10 | font-family: Arial, Helvetica, sans-serif; 11 | } 12 | 13 | .naviMenu .naviObject{ 14 | margin-left: "3em"; 15 | margin-top: "0.3em"; 16 | color: "white"; 17 | position: "left"; 18 | font-size:"20px"; 19 | } 20 | 21 | Link{ 22 | margin-left: "3em"; 23 | margin-top: "0.3em"; 24 | color: "white"; 25 | position: "left"; 26 | font-size:"20px"; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/components/pages/cvTechnologies/TechnologyList.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import TechnologyService from '../../services/TechnologyService' 3 | 4 | export default function TechnologyList() { 5 | 6 | const [technologies, setTechnologies] = useState([]); 7 | 8 | useEffect(() => { 9 | let technologyService = new TechnologyService() 10 | technologyService.getTechnology().then(result => setTechnologies(result.data.data)) 11 | }, []) 12 | 13 | return ( 14 |
15 | 16 |
17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/components/pages/cvSocialMedia/SocialMediaList.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import SocialMediaService from '../../services/SocialMediaService' 3 | 4 | export default function SocialMediaList() { 5 | 6 | const [socialMedia, setSocialMedia] = useState([]); 7 | 8 | useEffect(() => { 9 | let socialMediaService = new SocialMediaService() 10 | socialMediaService.getSocialMedia().then(result => setSocialMedia(result.data.data)) 11 | }, []) 12 | 13 | 14 | return ( 15 |
16 | 17 |
18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /src/store/reducers/CvWorkExperienceStateReducer.js: -------------------------------------------------------------------------------- 1 | import { CHANGE_WORK_EXPERIENCE_STATE } from "../actions/CvWorkExperienceActions"; 2 | import { workExperienceState } from "../initialValues/CvWorkExperienceState"; 3 | 4 | const initialState = { 5 | workExperienceState: workExperienceState 6 | } 7 | 8 | export default function CvWorkExperienceStateReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case CHANGE_WORK_EXPERIENCE_STATE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /src/store/reducers/EducationInformationReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_EDUCATION_INFORMATION } from "../actions/EducationInformationActions"; 2 | import { educationInformation } from "../initialValues/EducationInformation"; 3 | 4 | const initialState = { 5 | educationInformation: educationInformation 6 | } 7 | 8 | export default function EducationInformationReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_EDUCATION_INFORMATION: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /src/css/CvList.css: -------------------------------------------------------------------------------- 1 | .ui.cvTable{ 2 | font-family: Arial, Helvetica, sans-serif; 3 | padding: 15px; 4 | 5 | } 6 | 7 | .cvTable .leftTd{ 8 | width:35%; 9 | font-weight: bold; 10 | font-size: medium; 11 | 12 | } 13 | 14 | .cvTable .rightTd{ 15 | width:65%; 16 | font-size: medium; 17 | 18 | } 19 | 20 | .headerThree{ 21 | font-family: Arial; 22 | margin: 15px; 23 | margin-top: 2%; 24 | font-size:"20px"; 25 | background-color:"black"; 26 | } 27 | 28 | #segmentCv{ 29 | background-color:"black"; 30 | text-align: left; 31 | } -------------------------------------------------------------------------------- /src/store/reducers/CvForeignLanguageStateReducer.js: -------------------------------------------------------------------------------- 1 | import { GET_CV_FOREIGN_LANGUAGE_STATE } from "../actions/CvForeignLanguageActions"; 2 | import { cvForeignLanguageState } from "../initialValues/CvForeignLanguage"; 3 | 4 | const initialState = { 5 | cvForeignLanguageState: cvForeignLanguageState 6 | } 7 | 8 | export default function CvForeignLanguageStateReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case GET_CV_FOREIGN_LANGUAGE_STATE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /src/css/MainLayout.css: -------------------------------------------------------------------------------- 1 | .segmentLeft{ 2 | background-image:"url(" + "https://res.cloudinary.com/zeydatabase/image/upload/v1626437675/work2_vla8cf.jpg" + ")"; 3 | /* width: 350px; 4 | height: 200px; */ 5 | width: initial; 6 | height: 200px; 7 | } 8 | 9 | #mainBackground{ 10 | background-image: url("https://res.cloudinary.com/zeydatabase/image/upload/v1626462960/work11Blur_pfcnid.jpg"); 11 | 12 | height: 100%; 13 | 14 | background-position: center; 15 | background-repeat: no-repeat; 16 | background-size: cover; 17 | } 18 | 19 | .gridMain{ 20 | height: 100%; 21 | } -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /src/components/pages/cvForeignLanguages/ForeignLanguageList.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ForeignLanguageService from '../../services/ForeignLanguageService' 3 | 4 | 5 | export default function ForeignLanguageList() { 6 | 7 | const [foreignLanguages, setForeignLanguages] = useState([]); 8 | 9 | useEffect(() => { 10 | let foreignLanguageService = new ForeignLanguageService() 11 | foreignLanguageService.getForeignLanguages().then(result => setForeignLanguages(result.data.data)) 12 | }, []) 13 | 14 | return ( 15 |
16 | 17 |
18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /src/store/reducers/CvEducationInformationStateReducer.js: -------------------------------------------------------------------------------- 1 | import { CHANGE_EDUCATION_INFORMATION_STATE } from "../actions/CvEducationInformationActions"; 2 | import { educationInformationState } from "../initialValues/EducationInformation"; 3 | 4 | const initialState = { 5 | educationInformationState: educationInformationState 6 | } 7 | 8 | export default function CvEducationInformationStateReducer(state = initialState, { type, payload }) { 9 | switch (type) { 10 | case CHANGE_EDUCATION_INFORMATION_STATE: 11 | return payload 12 | default: 13 | return state; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/components/services/PersonnelService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class PersonnelService { 4 | 5 | getPersonnels() { 6 | return axios.get("/api/personnel/getAll") 7 | 8 | } 9 | add(systemPersonnel){ 10 | return axios.post("/api/personnel/register", systemPersonnel) 11 | } 12 | getByPersonnelId(personnelId){ 13 | return axios.get("/api/personnel/getByUserId?userId="+personnelId) 14 | } 15 | 16 | employerVerification(employerId, status){ 17 | return axios.post("/api/personnel/employerVerification?employerId="+employerId+"&status="+status) 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /src/components/toolbox/ZYBaseGrid.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Grid } from 'semantic-ui-react'; 3 | 4 | const ZYBaseGrid = ({ menu, contents }) => { 5 | 6 | return ( 7 |
8 | 9 | 10 | 11 | {menu} 12 | 13 | 14 | {contents} 15 | 16 | 17 | 18 |
19 | 20 | ) 21 | 22 | }; 23 | 24 | export default ZYBaseGrid; -------------------------------------------------------------------------------- /src/components/pages/jobPositions/JobPositionList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react' 2 | import JobPositionService from '../../services/JobPositionService' 3 | import { Icon, Menu, Table } from 'semantic-ui-react' 4 | 5 | export default function JobPositionList() { 6 | 7 | const [jobPositions, setJobPositions] = useState([]) 8 | 9 | useEffect(() => { 10 | let jobPositionService = new JobPositionService() 11 | jobPositionService.getJobPositions().then(result => setJobPositions(result.data.data)) 12 | }, []) 13 | return ( 14 |
15 | 16 |
17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/components/services/CvTechnologyService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class CvTechnologyService { 4 | 5 | getCvTechnologies() { 6 | return axios.get("/api/cvTechnology/getAll") 7 | 8 | } 9 | add(cvTechnology){ 10 | return axios.post("/api/cvTechnology/add",cvTechnology) 11 | } 12 | 13 | delete(cvTechnologyId){ 14 | return axios.post("/api/cvTechnology/deleteCvTechnology?cvTechnologiesId="+cvTechnologyId) 15 | } 16 | 17 | getCvTechnologiesByCvId(cvId) { 18 | return axios.get("/api/cvTechnology/getCvTechnologyWithTechnologydetails?cvId="+cvId) 19 | 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/components/toolbox/ZYTitle.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const ZYTitleH3 = ({ placeHolder, color, fontSize }) => { 4 | 5 | return ( 6 |
7 |

{placeHolder}

8 |
9 | ) 10 | 11 | }; 12 | 13 | export default ZYTitleH3; 14 | 15 | export const ZYTitleH2 = ({ placeHolder, color, fontSize }) => { 16 | 17 | return ( 18 |
19 |

{placeHolder}

20 |
21 | ) 22 | 23 | }; -------------------------------------------------------------------------------- /src/components/services/CvSocialMediaService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class CvSocialMediaService { 4 | 5 | getCvSocialMedia() { 6 | return axios.get("/api/cvSocialMedia/getAll") 7 | 8 | } 9 | 10 | add(cvSocialMedia){ 11 | return axios.post("/api/cvSocialMedia/add", cvSocialMedia) 12 | } 13 | 14 | delete(cvSocialMediaId){ 15 | return axios.post("/api/cvSocialMedia/deleteByCvSocialMediaId?cvSocialMediaId="+cvSocialMediaId) 16 | } 17 | 18 | getCvSocialMediaByCvId(cvId) { 19 | return axios.get("/api/cvSocialMedia/getCvSocialMediaWithSocialMediaDetails?cvId="+cvId) 20 | 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /src/components/services/WorkExperienceService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class WorkExperienceService { 4 | 5 | getWorkExperiences() { 6 | return axios.get("/api/workExperience/getAll") 7 | 8 | } 9 | add(workExperience){ 10 | return axios.post("/api/workExperience/add", workExperience) 11 | } 12 | 13 | delete(workExperienceId){ 14 | return axios.post("/api/workExperience/deleteByWorkExperienceId?workExperienceId="+workExperienceId) 15 | } 16 | 17 | getWorkExperiencesByCvId(cvId) { 18 | return axios.get("/api/workExperience/getWorkExperienceWithCvWithJobPositionDetails?cvId="+cvId) 19 | 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/components/pages/cvEducationInformation/UniversityDepartmentList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import UniversityDepartmentService from '../../services/UniversityDepartmentService' 3 | 4 | export default function UniversityDepartmentList() { 5 | 6 | const[universityDepartments , setUniversityDepartments] = useState([]) 7 | 8 | useEffect(()=> { 9 | let universityDepartmentService = new UniversityDepartmentService() 10 | universityDepartmentService.getUniversityDepartments().then(result => setUniversityDepartments(result.data.data)) 11 | }, []) 12 | 13 | 14 | return ( 15 |
16 | 17 |
18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /src/store/reducers/PhotoReducer.js: -------------------------------------------------------------------------------- 1 | import { profilePhoto } from "../initialValues/ProfilePhoto"; 2 | import { LIST_TO_PHOTO } from "../actions/PhotoActions"; 3 | 4 | const initialState ={ 5 | profilePhoto: profilePhoto 6 | } 7 | //henüz kullanmadım yanlış olabilir 8 | export default function PhotoReducer(state = initialState, {type, payload}) { 9 | 10 | switch (type) { 11 | case LIST_TO_PHOTO: 12 | let photo = state.profilePhoto.find(p => p.cv.cvId === payload.cvId) 13 | if (photo) { 14 | return { 15 | ...state 16 | } 17 | } 18 | default: 19 | return state; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/components/services/CvForeignLanguageService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class CvForeignLanguageService { 4 | 5 | getCvForeignLanguages() { 6 | return axios.get("/api/cvForeignLanguage/getAll") 7 | 8 | } 9 | add(cvForeignLanguage){ 10 | return axios.post("/api/cvForeignLanguage/add", cvForeignLanguage) 11 | } 12 | delete(cvForeignLanguageId){ 13 | return axios.post("/api/cvForeignLanguage/deleteCvForeignLanguage?foreignLanguageId="+cvForeignLanguageId) 14 | } 15 | getCvForeignLanguagesByCvId(cvId) { 16 | return axios.get("/api/cvForeignLanguage/getCvForeignLanguageWithForeignLanguageDetails?cvId="+cvId) 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /src/components/toolbox/ZYTextInput.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const ZYTextInput = ({ name, label, onChange, placeHolder, values, error }) => { 4 | 5 | let wrapperClass = "form-greoup" 6 | if (error && error.length > 0) { 7 | wrapperClass += " has-error" 8 | } 9 | 10 | return ( 11 |
12 | 13 |
14 | 16 | 17 | {error&&
{error}
} 18 |
19 | 20 |
21 | ) 22 | 23 | }; 24 | 25 | export default ZYTextInput; -------------------------------------------------------------------------------- /src/components/services/CvService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class CvService { 4 | 5 | getCvs() { 6 | return axios.get("/api/cv/getAll") 7 | } 8 | addCv(cv) { 9 | return axios.post("/api/cv/addCv", cv) 10 | } 11 | 12 | deleteCv(cvId){ 13 | return axios.post("/api/cv/delete?cvId="+cvId) 14 | } 15 | 16 | deleteObjective(cvId){ 17 | return axios.post("/api/cv/deleteObjective?cvId="+cvId) 18 | } 19 | 20 | getCvsByCvId(cvId) { 21 | return axios.get("/api/cv/getCvWithJobSeekerDetails?cvId=" + cvId) 22 | } 23 | 24 | getCvsByJobSeekerId(jobSeekerId) { 25 | return axios.get("/api/cv/getByCvIdForJobSeeker_UserId?userId=" + jobSeekerId) 26 | } 27 | 28 | updateCreationDate(cvId){ 29 | return axios.post("/api/cv/updateCvSetCreationDate?cvId="+cvId) 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/JobAdvertisementClose.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useParams } from 'react-router' 3 | import JobAdvertisementService from '../../services/JobAdvertisementService' 4 | import JobAdvertisementDetails from './JobAdvertisementDetails' 5 | 6 | export default function JobAdvertisementClose() { 7 | 8 | const { jobAdvertisementId, employerId} = useParams() 9 | 10 | const [jobAdvertisement, setJobAdvertisement] = useState({}) 11 | 12 | useEffect(()=>{ 13 | let jobAdertisemetService = new JobAdvertisementService() 14 | jobAdertisemetService.closeTheJobAdvertisement(jobAdvertisementId, employerId).then(result => setJobAdvertisement(result.data.data)) 15 | 16 | },[]) 17 | 18 | 19 | return ( 20 |
21 | 22 | 23 | 24 |
25 | ) 26 | } 27 | -------------------------------------------------------------------------------- /src/components/LeftMenu/JobSeekerMenu.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Menu } from 'semantic-ui-react' 3 | import { NavLink } from 'react-router-dom' 4 | import '../../css/LeftMenu.css' 5 | 6 | export default function JobSeekerMenu() { 7 | return ( 8 |
9 | 10 | Anasayfa 12 | Özgeçmiş 13 | Özgeçmişler 14 | İş İlanları 15 | 16 | 17 |
18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /src/components/services/EducationInformationService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class EducationInformationService { 4 | 5 | getEducationInformations() { 6 | return axios.get("/api/educationInformation/getAll") 7 | } 8 | getEducationInformationsByCvId(cvId) { 9 | return axios.get("/api/educationInformation/getEducationInformationWithCvWithUniversityWithUniversityDepartmentDetails?cvId="+cvId) 10 | } 11 | getEducationInformationsByEducationId(educationId) { 12 | return axios.get("/api/educationInformation/getEducationInformationDetails?educationId="+educationId) 13 | } 14 | 15 | delete(educationId){ 16 | return axios.post("/api/educationInformation/deleteEducation?educationId="+educationId) 17 | } 18 | 19 | add(educationInformation){ 20 | return axios.post("/api/educationInformation/add", educationInformation) 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/CityList.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Dropdown } from 'semantic-ui-react'; 3 | import CityService from '../../services/CityService' 4 | 5 | export default function CityList() { 6 | 7 | const [cities, setCities] = useState([]); 8 | 9 | useEffect(() => { 10 | let cityService = new CityService() 11 | cityService.getCities().then(result => setCities(result.data.data)) 12 | }, []) 13 | 14 | const getCities = cities.map((city, index) => ({ 15 | key: index, 16 | text: city.cityName, 17 | value: city.id, 18 | })); 19 | 20 | 21 | return ( 22 |
23 | 31 |
32 | ) 33 | } 34 | -------------------------------------------------------------------------------- /src/components/services/FavoriteService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class FavoriteService { 4 | 5 | getAll(){ 6 | return axios.get("/api/favorite/getAll") 7 | } 8 | add(favorite){ 9 | return axios.post("/api/favorite/add", favorite) 10 | } 11 | delete(favoriteId){ 12 | return axios.post("/api/favorite/delete?favoriteId="+favoriteId) 13 | } 14 | deleteByJobAdvertisementId(jobAdvertisementId){ 15 | return axios.post("/api/favorite/deleteByJobAdvertisementId?jobAdvertisementId="+jobAdvertisementId) 16 | } 17 | existsJobAdvertisement(jobAdvertisementId, jobSeekerId){ 18 | return axios.get("/api/favorite/existsByJobAdvertisement?jobAdvertisementId="+jobAdvertisementId+"&jobSeekerId="+jobSeekerId) 19 | } 20 | getAllFavoritesByUserId(userId){ 21 | return axios.get("/api/favorite/getFavoritesByJobSeekerId?userId="+userId) 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/css/CvCard.css: -------------------------------------------------------------------------------- 1 | div.iki{ 2 | 3 | background-color:#ffffff; 4 | position:absolute; 5 | border-color:black; 6 | border-style:ridge; 7 | 8 | text-align:center; 9 | 10 | box-shadow: 2px 2px black; 11 | 12 | } 13 | 14 | div.cvLeft{ 15 | width:33%; 16 | float:left; 17 | 18 | } 19 | 20 | div.cvRight{ 21 | 22 | width: 65%; 23 | float: right; 24 | 25 | } 26 | div.cvLeftRight{ 27 | width:40%; 28 | float:left; 29 | text-align:left; 30 | font-weight:bold; 31 | } 32 | 33 | div.cvRightRight{ 34 | width:60%; 35 | float:right; 36 | text-align:left; 37 | } 38 | 39 | div.cvLeft.cvImage{ 40 | height:20%; 41 | width: 20%; 42 | background-color: black; 43 | padding: 20px; 44 | position:center; 45 | } 46 | 47 | .cvHeader1{ 48 | font-family:'Trattatello', cursive; 49 | font-size:25px; 50 | text-align:left; 51 | } 52 | 53 | .cvHeader2{ 54 | text-align:left; 55 | font-size:10px; 56 | font-weight:bold; 57 | } -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/JobAdvertisementDetailsForAll.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useParams } from 'react-router' 3 | import JobAdvertisementService from '../../services/JobAdvertisementService' 4 | import JobAdvertisementDetailsSegment from '../../toolbox/JobAdvertisementDetailsSegment' 5 | 6 | export default function JobAdvertisementDetailsForAll() { 7 | 8 | let { jobAdvertisementId} = useParams() 9 | 10 | let [ jobAdvertisement, setJobAdvertisement] = useState([]) 11 | 12 | let jobAdvertisementService = new JobAdvertisementService() 13 | 14 | useEffect(()=> { 15 | jobAdvertisementService.getJobAdvertisementByJobAdvertisementId(jobAdvertisementId).then(result => setJobAdvertisement(result.data.data)) 16 | }, []) 17 | 18 | return ( 19 |
20 | 21 | 22 |
23 | ) 24 | } 25 | -------------------------------------------------------------------------------- /src/components/navi/Login.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { NavLink } from 'react-router-dom' 3 | import { Dropdown, Menu, Image, Container } from 'semantic-ui-react' 4 | 5 | //userId bilgisi ekle 6 | export default function Login({ logOut }) { 7 | return ( 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /src/components/pages/profile/BaseProfilePage.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { useSelector } from 'react-redux' 3 | import { useParams } from 'react-router' 4 | import EmployerProfile from '../employers/EmployerProfile' 5 | import EmployerProfileUpdate from '../employers/EmployerProfileUpdate' 6 | import SystemPersonnelProfile from '../systemPersonnels/SystemPersonnelProfile' 7 | import SystemPersonnelProfileUpdate from '../systemPersonnels/SystemPersonnelProfileUpdate' 8 | 9 | export default function BaseProfilePage() { 10 | 11 | let { userId } = useParams() 12 | 13 | const systemPersonnelId = useSelector(state => state.systemPersonnel.userId) 14 | const employerId = useSelector(state => state.employer.userId) 15 | 16 | return ( 17 |
18 | {/*(systemPersonnelId) > 0 ? 19 | : */} 20 | {(employerId) > 0 ? 21 | : } 22 |
23 | ) 24 | } 25 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './components/root/App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | import { BrowserRouter } from 'react-router-dom'; 7 | import "react-toastify/dist/ReactToastify.min.css" 8 | import { Provider } from 'react-redux'; 9 | import { configureStore } from './store/configureStore' 10 | import "primereact/resources/themes/saga-blue/theme.css"; 11 | import "primereact/resources/primereact.min.css"; 12 | import "primeicons/primeicons.css"; 13 | 14 | const store = configureStore() 15 | 16 | ReactDOM.render( 17 | 18 | 19 | 20 | 21 | 22 | , 23 | , 24 | document.getElementById('root') 25 | ); 26 | 27 | // If you want to start measuring performance in your app, pass a function 28 | // to log results (for example: reportWebVitals(console.log)) 29 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 30 | reportWebVitals(); 31 | -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/JobAdvertisementDetails.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useParams } from 'react-router' 3 | import JobAdvertisementService from '../../services/JobAdvertisementService' 4 | import '../../../css/JobAdvertisement.css' 5 | import '../../../css/JobAdvertisementList.css' 6 | import JobAdvertisementDetailsSegment from '../../toolbox/JobAdvertisementDetailsSegment' 7 | 8 | export default function JobAdvertisementDetails() { 9 | 10 | let { userId } = useParams() 11 | let { jobAdvertisementId } = useParams() 12 | 13 | const [jobAdvertisement, setJobAdvertisement] = useState({}) 14 | 15 | useEffect(() => { 16 | let jobAdvertisementService = new JobAdvertisementService() 17 | jobAdvertisementService.getJobAdvertisementByJobAdvertisementId(jobAdvertisementId).then(result => setJobAdvertisement(result.data.data)) 18 | }, []) 19 | return ( 20 |
21 | 22 | 23 |
24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /src/components/navi/Logout.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { NavLink } from 'react-router-dom' 3 | import { Button, Dropdown, Form, Menu } from 'semantic-ui-react' 4 | 5 | export default function Logout({ logIn }) { 6 | return ( 7 |
8 | 9 | 17 | 19 | 20 | 21 |
22 | ) 23 | } 24 | -------------------------------------------------------------------------------- /src/components/services/JobSeekerService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class JobSeekerService{ 4 | 5 | getJobSeeker(){ 6 | return axios.get("/api/jobSeekers/getAll") 7 | } 8 | 9 | getJobSeekerByUserId(userId){ 10 | return axios.get("/api/jobSeekers/getJobSeekerByUserId?userId="+userId) 11 | } 12 | 13 | register(jobSeeker, passwordAgain, validationCode){ 14 | return axios.post("/api/jobSeekers/register?passwordAgain="+passwordAgain+"&validationCode="+validationCode, jobSeeker) 15 | } 16 | 17 | emailVerification(jobSeeker, passwordAgain, validationCode){ 18 | return axios.post("/api/jobSeekers/emailVerification?passwordAgain="+passwordAgain+"&validationCode="+validationCode, jobSeeker) 19 | } 20 | emailSending(email){ 21 | return axios.post("/api/jobSeekers/emailSending?email="+email) 22 | } 23 | 24 | emailIsItUsed(email){ 25 | return axios.get("/api/jobSeekers/emailIsItUsed?email="+email) 26 | } 27 | nationalityIdIsItUsed(nationalityId){ 28 | return axios.get("/api/jobSeekers/nationalityIdIsItUsed?nationalityId="+nationalityId) 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /src/components/LeftMenu/EmployerMenu.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { NavLink } from 'react-router-dom' 3 | import { Menu } from 'semantic-ui-react' 4 | import '../../css/LeftMenu.css' 5 | 6 | export default function EmployerMenu() { 7 | return ( 8 |
9 | 10 | Anasayfa 11 | İş İlanları 12 | İş İlanı Ekle 13 | Firmaya Ait Tüm İş İlanları 14 | Firmaya Ait Aktif İş İlanları 15 | Firmaya Ait Pasif İş İlanları 16 | 17 | 18 | 19 |
20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /src/components/LeftMenu/SystemPersonnelMenu.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { NavLink } from 'react-router-dom' 3 | import { Menu } from 'semantic-ui-react' 4 | import '../../css/LeftMenu.css' 5 | 6 | export default function SystemPersonnelMenu() { 7 | return ( 8 |
9 | 10 | Anasayfa 11 | Onaylanmış İş İlanları 12 | Onaylanmamış İş İlanları 13 | 14 | Onaylanmış İş Veren Listesi 15 | Onaylanmamış İş Veren Listesi 16 | 17 | İş Veren Güncellemesi Onaylama 18 | 19 |
20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /src/components/pages/login/Login.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Button, Form, Segment } from 'semantic-ui-react' 3 | import '../../../css/Login.css' 4 | import ZYFormLabel from '../../toolbox/ZYFormLabel' 5 | import ZYRedButton from '../../toolbox/ZYRedButton' 6 | 7 | export default function Login() { 8 | return ( 9 |
10 | 11 | GİRİŞ YAP 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 |
30 | ) 31 | } 32 | -------------------------------------------------------------------------------- /src/components/pages/cvTechnologies/TechnologyAdd.jsx: -------------------------------------------------------------------------------- 1 | import { useFormik } from 'formik'; 2 | import React from 'react' 3 | import { Button } from 'rebass'; 4 | import TechnologyService from '../../services/TechnologyService' 5 | 6 | export default function TechnologyAdd() { 7 | 8 | let technologyService = new TechnologyService(); 9 | const formik = useFormik({ 10 | initialValues: { 11 | technologyName: "", 12 | }, 13 | onSubmit: (values) => { 14 | console.log(values); 15 | let technology = { 16 | technologyName: values.technologyName 17 | }; 18 | console.log(technology); 19 | technologyService 20 | .add(technology) 21 | .then((result) => console.log(result.data.message)); 22 | }, 23 | }); 24 | return ( 25 |
26 |
27 | 28 | 29 |
30 | 31 | 32 |
33 | 34 |
35 | ) 36 | } 37 | -------------------------------------------------------------------------------- /src/components/pages/cvPhotos/CvPhotos.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useSelector } from 'react-redux' 3 | import { useParams } from 'react-router' 4 | import { Image } from 'semantic-ui-react' 5 | import PhotoService from '../../services/PhotoService' 6 | 7 | export default function CvPhotos() { 8 | 9 | let { cvId } = useParams() 10 | const [photos, setPhotos] = useState({}) 11 | const [cvPhotos, setCvPhotos] = useState({}) 12 | const cv = useSelector(state => state.cv.cvId) 13 | 14 | useEffect(() => { 15 | let photoService = new PhotoService() 16 | photoService.getPhotoForCvId(cvId).then(result => setPhotos(result.data.data)) 17 | {cv != null && 18 | photoService.getPhotoForCvId(cv).then(result => setCvPhotos(result.data.data)) 19 | } 20 | 21 | }, []) 22 | 23 | return ( 24 |
25 | {photos != null && 26 | } 27 | {photos == null && cv != null && 28 | } 29 | {photos == null && cv == null && 30 | } 31 | 32 |
33 | ) 34 | } 35 | -------------------------------------------------------------------------------- /src/components/services/EmployerService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class EmployerService { 4 | 5 | getEmployers() { 6 | return axios.get("/api/employers/getAll") 7 | } 8 | register(employer, passwordAgain, validationCode) { 9 | return axios.post("/api/employers/register?passwordAgain=" + passwordAgain + "&validationCode=" + validationCode, employer) 10 | } 11 | updateEmployer(employer) { 12 | return axios.post("/api/employers/update", employer) 13 | } 14 | login(email, password) { 15 | return axios.post("api/employers/login?email=" + email + "&password=" + password) 16 | } 17 | getAllEmployerByVerificationStatus(status) { 18 | return axios.get("/api/employers/getAllEmployerByVerificationStatus?status=" + status) 19 | } 20 | getByEmployerForUserId(employerId) { 21 | return axios.get("/api/employers/getByEmployerUserId?userId=" + employerId) 22 | } 23 | getAllUpdatedEmployer() { 24 | return axios.get("/api/employers/getAllUpdatedEmployer") 25 | } 26 | updatedEmployerApproval(employerId) { 27 | return axios.post("/api/employers/updatedEmployerVerification?employerId=" + employerId) 28 | } 29 | emailSending(email, website) { 30 | return axios.post("/api/employers/emailSending?email=" + email + "&website=" + website) 31 | } 32 | emailIsItUsed(email){ 33 | return axios.get("/api/employers/emailIsItUsed?email="+email) 34 | } 35 | } -------------------------------------------------------------------------------- /src/components/root/Dashboard.jsx: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import { ToastContainer } from 'react-toastify' 3 | import { Grid } from 'semantic-ui-react' 4 | import LeftMenu from '../LeftMenu/LeftMenu' 5 | import MainLayout from '../mainLayout/MainLayout' 6 | import MainPage from '../pages/mainPage/MainPage' 7 | import '../../css/MainLayout.css' 8 | 9 | export default class Dashboard extends Component { 10 | render() { 11 | return ( 12 |
13 | 24 |
25 | 26 |
27 | {/* 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | */} 38 | 39 |
40 | ) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/AllJobAdvertisementList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { Grid } from 'semantic-ui-react' 3 | import LeftMenu from '../../LeftMenu/LeftMenu' 4 | import JobAdvertisementService from '../../services/JobAdvertisementService' 5 | import JobAdvertisementListSegment from '../../toolbox/JobAdvertisementListSegment' 6 | 7 | export default function AllJobAdvertisementList() { 8 | 9 | let [jobAdvertisements, setJobAdvertisements] = useState([]) 10 | let jobAdvertisementService = new JobAdvertisementService() 11 | 12 | useEffect(() => { 13 | jobAdvertisementService.getByAdvertisementStatusAndApprovalStatus().then(result => setJobAdvertisements(result.data.data)) 14 | }, []) 15 | return ( 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | {jobAdvertisements.map(jobAdvertisement => ( 24 | 26 | )) 27 | } 28 | 29 | 30 | 31 | 32 | 33 |
34 | ) 35 | } 36 | -------------------------------------------------------------------------------- /src/css/JobAdvertisementAdd.css: -------------------------------------------------------------------------------- 1 | .ui.dropdownStyle{ 2 | margin-top: 1em; 3 | font-weight: lighter; 4 | 5 | } 6 | 7 | .divStyle{ 8 | margin-top: 1em; 9 | margin-bottom: 1em; 10 | font-family: Arial; 11 | } 12 | 13 | .headerStyle{ 14 | background-color: black; 15 | color:white; 16 | font-family: Arial, Helvetica, sans-serif; 17 | } 18 | 19 | label { 20 | font-size: 16px; 21 | font-weight: bold; 22 | } 23 | 24 | #cityId{ 25 | font-family: Arial; 26 | margin-top: 1em; 27 | font-weight: lighter; 28 | } 29 | #positionId{ 30 | font-family: Arial; 31 | margin-top: 1em; 32 | font-weight: lighter; 33 | } 34 | #workTypeId{ 35 | font-family: Arial; 36 | margin-top: 1em; 37 | font-weight: lighter; 38 | } 39 | #workTimeTypeId{ 40 | font-family: Arial; 41 | margin-top: 1em; 42 | font-weight: lighter; 43 | } 44 | #minSalary{ 45 | font-family: Arial; 46 | margin-top: 1em; 47 | font-weight: lighter; 48 | } 49 | 50 | #maxSalary{ 51 | font-family: Arial; 52 | margin-top: 1em; 53 | font-weight: lighter; 54 | } 55 | #positionAmount{ 56 | font-family: Arial; 57 | margin-top: 1em; 58 | font-weight: lighter; 59 | } 60 | #applicationDeadline{ 61 | font-family: Arial; 62 | margin-top: 1em; 63 | font-weight: lighter; 64 | } 65 | #jobDescription{ 66 | font-family: Arial; 67 | margin-top: 1em; 68 | font-weight: lighter; 69 | min-height: 100; 70 | } 71 | #error{ 72 | color: red; 73 | } 74 | #addButton{ 75 | background-color:#780000; 76 | color: white; 77 | margin-bottom: 0.001em; 78 | } -------------------------------------------------------------------------------- /src/components/navi/PersonnelNavi.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import { Link, useHistory } from 'react-router-dom'; 3 | import { Container, Menu } from 'semantic-ui-react' 4 | import '../../css/Navi.css' 5 | import Login from './Login'; 6 | import Logout from './Logout'; 7 | 8 | 9 | export default function PersonnelNavi() { 10 | 11 | const [isAuthenticated, setIsAuthenticated] = useState(false) 12 | 13 | const history = useHistory() 14 | 15 | function handleSingOut() { 16 | setIsAuthenticated(false) 17 | history.push("/") 18 | 19 | } 20 | function handleSingIn() { 21 | setIsAuthenticated(true) 22 | } 23 | 24 | return ( 25 |
26 | 27 | 28 | 29 | Anasayfa 30 | 31 | 32 | İş İlanları 33 | 34 | 35 | {isAuthenticated ? 36 | 37 | : } 38 | 39 | 40 | 41 | 42 | 43 |
44 | ); 45 | } 46 | -------------------------------------------------------------------------------- /src/components/navi/BaseNavi.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import { Link, useHistory } from 'react-router-dom'; 3 | import { Container, Menu } from 'semantic-ui-react' 4 | import '../../css/Navi.css' 5 | import Login from './Login'; 6 | import Logout from './Logout'; 7 | 8 | 9 | export default function BaseNavi() { 10 | 11 | const [isAuthenticated, setIsAuthenticated] = useState(false) 12 | 13 | const history = useHistory() 14 | 15 | function handleSingOut() { 16 | setIsAuthenticated(false) 17 | history.push("/") 18 | 19 | } 20 | function handleSingIn() { 21 | setIsAuthenticated(true) 22 | } 23 | 24 | return ( 25 |
26 | 27 | 28 | 29 | Anasayfa 31 | 32 | 33 | İş İlanları 35 | 36 | 37 | {isAuthenticated ? 38 | 39 | : } 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | ) 48 | } 49 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hrms-project", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@fortawesome/free-regular-svg-icons": "^5.15.3", 7 | "@fortawesome/free-solid-svg-icons": "^5.15.3", 8 | "@material-ui/core": "^4.11.4", 9 | "@material-ui/icons": "^4.11.2", 10 | "@testing-library/jest-dom": "^5.13.0", 11 | "@testing-library/react": "^11.2.7", 12 | "@testing-library/user-event": "^12.8.3", 13 | "axios": "^0.21.1", 14 | "formik": "^2.2.9", 15 | "lodash": "^4.17.21", 16 | "moment": "^2.29.1", 17 | "pretty-rating-react": "^2.1.0", 18 | "primeicons": "^4.1.0", 19 | "primereact": "^6.5.0-rc.2", 20 | "react": "^17.0.2", 21 | "react-alert": "^7.0.3", 22 | "react-datepicker": "^4.1.1", 23 | "react-delay": "^0.1.0", 24 | "react-dom": "^17.0.2", 25 | "react-icons": "^4.2.0", 26 | "react-modal": "^3.14.3", 27 | "react-redux": "^7.2.4", 28 | "react-router-dom": "^5.2.0", 29 | "react-scripts": "4.0.3", 30 | "react-toastify": "^7.0.4", 31 | "rebass": "^4.0.7", 32 | "redux-devtools-extension": "^2.13.9", 33 | "semantic-ui-css": "^2.4.1", 34 | "semantic-ui-react": "^2.0.3", 35 | "web-vitals": "^1.1.2", 36 | "yup": "^0.32.9" 37 | }, 38 | "scripts": { 39 | "start": "react-scripts start", 40 | "build": "react-scripts build", 41 | "test": "react-scripts test", 42 | "eject": "react-scripts eject" 43 | }, 44 | "eslintConfig": { 45 | "extends": [ 46 | "react-app", 47 | "react-app/jest" 48 | ] 49 | }, 50 | "browserslist": { 51 | "production": [ 52 | ">0.2%", 53 | "not dead", 54 | "not op_mini all" 55 | ], 56 | "development": [ 57 | "last 1 chrome version", 58 | "last 1 firefox version", 59 | "last 1 safari version" 60 | ] 61 | }, 62 | "proxy": "http://localhost:8080" 63 | } 64 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/components/navi/JobSeekerNavi.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import { Link, useHistory, useParams } from 'react-router-dom'; 3 | import { Container, Menu } from 'semantic-ui-react' 4 | import '../../css/Navi.css' 5 | import Login from './Login'; 6 | import Logout from './Logout'; 7 | 8 | 9 | export default function JobSeekerNavi() { 10 | 11 | let { userId } = useParams() 12 | 13 | const [isAuthenticated, setIsAuthenticated] = useState(false) 14 | 15 | const history = useHistory() 16 | 17 | function handleSingOut() { 18 | setIsAuthenticated(false) 19 | history.push("/") 20 | 21 | } 22 | function handleSingIn() { 23 | setIsAuthenticated(true) 24 | } 25 | 26 | return ( 27 |
28 | 29 | 30 | 31 | Anasayfa 33 | 34 | 35 | İş İlanları 37 | Özgeçmişler 39 | 40 | 41 | {isAuthenticated ? 42 | 43 | : } 44 | 45 | 46 | 47 | 48 | 49 |
50 | ); 51 | } 52 | -------------------------------------------------------------------------------- /src/components/pages/cvEducationInformation/UniversityList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import UniversityService from '../../services/UniversityService' 3 | 4 | export default function UniversityList() { 5 | 6 | const [universities, setUniversities] = useState([]); 7 | 8 | useEffect(() => { 9 | let universityService = new UniversityService() 10 | universityService.getUniversities().then(result => setUniversities(result.data.data)) 11 | }, []) 12 | 13 | return ( 14 |
15 | 16 | 17 | 18 | Üniversite 19 | 20 | 21 | 22 | { 23 | universities.map(university => ( 24 | 25 | {university.universityName} 26 | 27 | )) 28 | } 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 1 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 |
48 | ) 49 | } 50 | -------------------------------------------------------------------------------- /src/store/rootReducer.js: -------------------------------------------------------------------------------- 1 | //tüm state'leri topladığımız eyr 2 | 3 | import { combineReducers } from "redux"; 4 | import CvReducer from "./reducers/CvReducer"; 5 | import EducationInformationReducer from "./reducers/EducationInformationReducer"; 6 | import WorkExperienceReducer from "./reducers/WorkExperienceReducer"; 7 | import CvTechnologyReducer from "./reducers/CvTechnologyReducer"; 8 | import CvForeignLanguageReducer from "./reducers/CvForeignLanguageReducer"; 9 | import CvSocialMediaReducer from "./reducers/CvSocialMediaReducer"; 10 | import SystemPersonnelReducer from "./reducers/SystemPersonnelReducer"; 11 | import EmployerReducer from "./reducers/EmployerReducer"; 12 | import UserReducer from "./reducers/UserReducer"; 13 | import CvEducationInformationStateReducer from "./reducers/CvEducationInformationStateReducer"; 14 | import CvWorkExperienceStateReducer from "./reducers/CvWorkExperienceStateReducer"; 15 | import CvTechnologyStateReducer from "./reducers/CvTechnologyStateReducer"; 16 | import CvForeignLanguageStateReducer from "./reducers/CvForeignLanguageStateReducer"; 17 | import CvSocialMediaStateReducer from "./reducers/CvSocialMediaStateReducer"; 18 | import JobSeekerReducer from "./reducers/JobSeekerReducer"; 19 | import TimerStateReducer from "./reducers/TimerStateReducer"; 20 | 21 | const rootReducer = combineReducers({ 22 | cv: CvReducer, 23 | educationInformation: EducationInformationReducer, 24 | workExperience: WorkExperienceReducer, 25 | cvTechnology: CvTechnologyReducer, 26 | cvForeignLanguage: CvForeignLanguageReducer, 27 | cvSocialMedia: CvSocialMediaReducer, 28 | systemPersonnel: SystemPersonnelReducer, 29 | employer: EmployerReducer, 30 | user: UserReducer, 31 | jobSeeker: JobSeekerReducer, 32 | 33 | educationInformationState: CvEducationInformationStateReducer, 34 | workExperienceState: CvWorkExperienceStateReducer, 35 | cvTechnologyState: CvTechnologyStateReducer, 36 | cvForeignLanguageState: CvForeignLanguageStateReducer, 37 | cvSocialMediaState: CvSocialMediaStateReducer, 38 | timerState: TimerStateReducer, 39 | 40 | 41 | }) 42 | 43 | export default rootReducer; -------------------------------------------------------------------------------- /src/components/services/JobAdvertisementService.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export default class JobAdvertisementService { 4 | 5 | getJobAdvertisements() { 6 | return axios.get("/api/jobAdvertisement/getAll") 7 | } 8 | getJobAdvertisementsSorted() { 9 | return axios.get("/api/jobAdvertisement/getAll") 10 | 11 | } 12 | getAllByPageSize(pageNo, pageSize){ 13 | return axios.get("/api/jobAdvertisement/getAllByPageSize?pageNo="+pageNo+"&pageSize="+pageSize) 14 | } 15 | getActiveOrPassiveJobAdvertisementsSorted(status) { 16 | return axios.get("/api/jobAdvertisement/getAllSortedJobAdvertisementByStatus?status="+status) 17 | 18 | } 19 | getJobAdvertisementByJobAdvertisementId(jobAdvertisementId) { 20 | return axios.get("/api/jobAdvertisement/getByJobAdvertisementId?id="+jobAdvertisementId) 21 | } 22 | 23 | addJobAdvertisement(jobAdvertisement){ 24 | return axios.post("/api/jobAdvertisement/add",jobAdvertisement) 25 | } 26 | closeTheJobAdvertisement(employerId, jobAdvertisementId, status){ 27 | return axios.post("/api/jobAdvertisement/closeTheJobAdvertisement?employerId="+employerId+"&jobAdvertisementId="+jobAdvertisementId+"&status="+status) 28 | } 29 | getJobAdvertisementForEmployerId(employerId){ 30 | return axios.get("/api/jobAdvertisement/getByEmployerJobAdvertisements?userId="+employerId) 31 | } 32 | getActiveOrPassiveJobAdvertisementsSortedForEmployer(status, employerId) { 33 | return axios.get("/api/jobAdvertisement/getAllSortedJobAdvertisementByStatusForEmployerId?employerId="+employerId+"&status="+status) 34 | } 35 | getApprovedOrUnapprovedJobAdvertisement(status){ 36 | return axios.get("/api/jobAdvertisement/getAllApproveStatus?status="+status) 37 | } 38 | 39 | changeApprovalStatusForJobAdvertisementId(jobAdvertisementID, status){ 40 | return axios.post("/api/jobAdvertisement/updateJobAdvertisementSetApprovalStatus?jobAdvertisementId="+jobAdvertisementID+"&status="+status) 41 | } 42 | 43 | getByAdvertisementStatusAndApprovalStatus(){ 44 | return axios.get("/api/jobAdvertisement/getByAdvertisementStatusAndApprovalStatus") 45 | } 46 | 47 | } -------------------------------------------------------------------------------- /src/components/toolbox/JobAdvertisementListSegment.jsx: -------------------------------------------------------------------------------- 1 | import { NavLink } from "react-router-dom"; 2 | import { Button, Image, Segment } from "semantic-ui-react"; 3 | 4 | 5 | const JobAdvertisementListSegment = ({ jobAdvertisement, url }) => { 6 | 7 | return ( 8 | 9 |
10 | 11 | 12 |

13 | İş İlanı - {jobAdvertisement.position?.positionName}

14 | 15 | 16 |
17 | 18 |
19 | 20 |
21 |

{jobAdvertisement.position?.positionName}

22 |

{jobAdvertisement.jobDescription}

23 |

{jobAdvertisement.employer?.companyName}

24 |

{jobAdvertisement.city?.cityName}

25 | 28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | ) 36 | 37 | } 38 | export default JobAdvertisementListSegment; -------------------------------------------------------------------------------- /src/components/toolbox/Timer.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { useDispatch, useSelector } from 'react-redux'; 3 | import getTimerState from '../../store/actions/TimerStateActions' 4 | 5 | const Timer = ({ hoursMinSecs }) => { 6 | const dispatch = useDispatch() 7 | 8 | const timerState = useSelector(state => state.timerState) 9 | 10 | function sendTimerState(state) { 11 | dispatch(getTimerState(state)) 12 | } 13 | 14 | const { hours = 0, minutes = 0, seconds = 60 } = hoursMinSecs; 15 | const [[hrs, mins, secs], setTime] = React.useState([hours, minutes, seconds]); 16 | 17 | 18 | const tick = () => { 19 | 20 | if (hrs === 0 && mins === 0 && secs === 0) { 21 | sendTimerState(1)//süre dolduğunda => timerState == 1 22 | if (timerState === 2) {//yeniden mail gönderme butonuna basıldıysa 23 | reset()//süre yeniden başlar 24 | sendTimerState(3)//timerState == 3 olur 25 | } 26 | } 27 | else if (mins === 0 && secs === 0) { 28 | setTime([hrs - 1, 59, 59]); 29 | } else if (secs === 0) { 30 | setTime([hrs, mins - 1, 59]); 31 | } else { 32 | setTime([hrs, mins, secs - 1]); 33 | } 34 | 35 | }; 36 | const reset = () => setTime([parseInt(hours), parseInt(minutes), parseInt(seconds)]); 37 | 38 | React.useEffect(() => { 39 | const timerId = setInterval(() => tick(), 1000); 40 | return () => clearInterval(timerId); 41 | }); 42 | 43 | return ( 44 |
45 | {mins > 0 ? //eğer 1 dakikadan fazla süre varsa yeşil renkte görünür 46 |

{`${hrs.toString().padStart(2, '0')}:${mins 47 | .toString() 48 | .padStart(2, '0')}:${secs.toString().padStart(2, '0')}`}

49 | ://eğer 1 dakikadan az süre varsa kırmızı renkte görünür 50 |

{`${hrs.toString().padStart(2, '0')}:${mins 51 | .toString() 52 | .padStart(2, '0')}:${secs.toString().padStart(2, '0')}`}

53 | } 54 |
55 | ); 56 | } 57 | 58 | export default Timer; -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/navi/EmployerNavi.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import { Link, useHistory, useParams } from 'react-router-dom'; 3 | import { Container, Menu } from 'semantic-ui-react' 4 | import '../../css/Navi.css' 5 | import Login from './Login'; 6 | import Logout from './Logout'; 7 | 8 | export default function EmployerNavi() { 9 | 10 | let { userId } = useParams() 11 | const [isAuthenticated, setIsAuthenticated] = useState(false) 12 | 13 | const history = useHistory() 14 | 15 | function handleSingOut() { 16 | setIsAuthenticated(false) 17 | history.push("/") 18 | 19 | } 20 | function handleSingIn() { 21 | setIsAuthenticated(true) 22 | } 23 | return ( 24 |
25 | 26 | 27 | 28 | Anasayfa 31 | 32 | 33 | İş İlanları 36 | 37 | 38 | 46 | 47 | 48 | {isAuthenticated ? 49 | 50 | : } 51 | 52 | 53 | 54 | 55 | 56 | 57 |
58 | ) 59 | } 60 | -------------------------------------------------------------------------------- /src/components/pages/jobSeekers/JobSeekerList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react' 2 | import JobSeekerService from '../../services/JobSeekerService' 3 | import { Icon, Menu, Table } from 'semantic-ui-react' 4 | import '../../../css/JobSeekerCss.css' 5 | 6 | export default function JobSeekerList() { 7 | 8 | const [jobSeekers, setJobSeekers] = useState([]) 9 | 10 | useEffect(() => { 11 | let jobSeekerService = new JobSeekerService() 12 | jobSeekerService.getJobSeeker().then(result => setJobSeekers(result.data.data)) 13 | }, []) 14 | return ( 15 |
16 | 17 | 18 | 19 | Email 20 | İsim 21 | Soyisim 22 | Doğum Yılı 23 | 24 | 25 | 26 | { 27 | jobSeekers.map(jobSeeker => ( 28 | 29 | {jobSeeker.email} 30 | {jobSeeker.firstName} 31 | {jobSeeker.lastName} 32 | {jobSeeker.birthYear} 33 | 34 | )) 35 | } 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 1 46 | 2 47 | 3 48 | 4 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 |
58 | ) 59 | } 60 | -------------------------------------------------------------------------------- /src/components/pages/systemPersonnels/UnApprovedJobAdvertisementList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { NavLink } from 'react-router-dom'; 3 | import { Segment,Image, Button } from 'semantic-ui-react'; 4 | import JobAdvertisementService from '../../services/JobAdvertisementService'; 5 | 6 | export default function UnapprovedJobAdvertisementList() { 7 | 8 | const [jobAdvertisements, setJobAdvertisements] = useState([]); 9 | 10 | useEffect(() => { 11 | let jobAdvertisementService = new JobAdvertisementService() 12 | jobAdvertisementService.getApprovedOrUnapprovedJobAdvertisement(false).then(result => setJobAdvertisements(result.data.data)) 13 | }, []) 14 | 15 | return ( 16 |
17 |
18 | {jobAdvertisements.map(jobAdvertisement => ( 19 | 20 | 21 |

22 | İş İlanı - {jobAdvertisement.position.positionName}

23 | 24 | 25 |
26 | 27 |
28 | 29 |
30 |

{jobAdvertisement.position.positionName}

31 |

{jobAdvertisement.jobDescription}

32 |

{jobAdvertisement.employer.companyName}

33 |

{jobAdvertisement.city.cityName}

34 | 35 |
36 |
37 |
38 |
39 | )) 40 | } 41 |
42 | 43 |
44 | ) 45 | } 46 | -------------------------------------------------------------------------------- /src/components/pages/mainPage/MainPage.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { Divider, Grid, Image, Input, Label, Segment } from 'semantic-ui-react' 3 | import '../../../css/MainLayout.css' 4 | import ZYTitleH3 from '../../toolbox/ZYTitle'; 5 | import { ZYTitleH2 } from '../../toolbox/ZYTitle'; 6 | import * as Yup from "yup"; 7 | import { useFormik } from 'formik'; 8 | import JobAdvertisementService from '../../services/JobAdvertisementService'; 9 | import ZYFormLabel from '../../toolbox/ZYFormLabel'; 10 | import ZYRedButton from '../../toolbox/ZYRedButton'; 11 | import ZYMainPageButton from '../../toolbox/ZYMainPageButton'; 12 | 13 | export default function MainPage() { 14 | 15 | const [jobAdvertisements, setJobAdvertisements] = useState([]); 16 | let jobAdvertisementService = new JobAdvertisementService() 17 | 18 | useEffect(() => { 19 | jobAdvertisementService.getByAdvertisementStatusAndApprovalStatus().then((result) => setJobAdvertisements(result.data.data)) 20 | }, []) 21 | 22 | const initialValues = { 23 | email: "", 24 | password: "", 25 | } 26 | const formik = useFormik({ 27 | initialValues: initialValues, 28 | validationSchema: Yup.object({ 29 | email: Yup.string().email("Geçerli bir email adresi giriniz!").required("Email boş bırakılamaz!"), 30 | password: Yup.string().min(6, "Şifre en az 6 haneli olmalıdır!").required("Şifre boş bırakılamaz!") 31 | }) 32 | }); 33 | return ( 34 |
35 | 36 | 37 | 38 | 39 | {/* */} 40 | 41 | 42 | 43 | 44 | 45 | {/* */} 46 | 47 | 48 | 49 | 50 | 51 | 52 | {/* */} 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
62 | ) 63 | } 64 | -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/JobAdvertisementListForEmployer.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { NavLink } from 'react-router-dom'; 3 | import { Image, Segment, Button, Table } from 'semantic-ui-react' 4 | import { useParams } from 'react-router' 5 | import JobAdvertisementService from '../../services/JobAdvertisementService'; 6 | 7 | export default function JobAdvertisementListForEmployer() { 8 | 9 | const { userId } = useParams() 10 | 11 | const [jobAdvertisements, setJobAdvertisements] = useState([]); 12 | 13 | useEffect(() => { 14 | let jobAdvertisementService = new JobAdvertisementService() 15 | jobAdvertisementService.getJobAdvertisementForEmployerId(userId).then(result => setJobAdvertisements(result.data.data)) 16 | }, []) 17 | 18 | 19 | return ( 20 |
21 |
22 | {jobAdvertisements.map(jobAdvertisement => ( 23 | 24 | 25 |

26 | İş İlanı - {jobAdvertisement.position.positionName}

27 | 28 | 29 |
30 | 31 |
32 | 33 |
34 |

{jobAdvertisement.position.positionName}

35 |

{jobAdvertisement.jobDescription}

36 |

{jobAdvertisement.employer.companyName}

37 |

{jobAdvertisement.city.cityName}

38 | 39 |
40 |
41 |
42 |
43 | )) 44 | } 45 |
46 |
47 | ) 48 | } 49 | -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/PassiveJobAdvertisementListForEmployer.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { NavLink } from 'react-router-dom'; 3 | import { Image, Segment, Button } from 'semantic-ui-react' 4 | import { useParams } from 'react-router' 5 | import JobAdvertisementService from '../../services/JobAdvertisementService'; 6 | 7 | export default function PassiveJobAdvertisementListForEmployer() { 8 | 9 | const { userId } = useParams() 10 | let status = false; 11 | const [jobAdvertisements, setJobAdvertisements] = useState([]); 12 | 13 | useEffect(() => { 14 | let jobAdvertisementService = new JobAdvertisementService() 15 | jobAdvertisementService.getActiveOrPassiveJobAdvertisementsSortedForEmployer(status, userId).then(result => setJobAdvertisements(result.data.data)) 16 | }, []) 17 | 18 | return ( 19 |
20 |
21 | {jobAdvertisements.map(jobAdvertisement => ( 22 | 23 | 24 |

25 | İş İlanı - {jobAdvertisement.position.positionName}

26 | 27 | 28 |
29 | 30 |
31 | 32 |
33 |

{jobAdvertisement.position.positionName}

34 |

{jobAdvertisement.jobDescription}

35 |

{jobAdvertisement.employer.companyName}

36 |

{jobAdvertisement.city.cityName}

37 | 38 |
39 |
40 |
41 |
42 | )) 43 | } 44 |
45 |
46 | ) 47 | } 48 | -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/ActiveJobAdvertisementListForEmployer.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { NavLink } from 'react-router-dom'; 3 | import { Image, Segment, Button } from 'semantic-ui-react' 4 | import { useParams } from 'react-router' 5 | import JobAdvertisementService from '../../services/JobAdvertisementService'; 6 | 7 | export default function ActiveJobAdvertisementListForEmployer() { 8 | 9 | const { userId } = useParams() 10 | let status = true; 11 | const [jobAdvertisements, setJobAdvertisements] = useState([]); 12 | 13 | useEffect(() => { 14 | let jobAdvertisementService = new JobAdvertisementService() 15 | jobAdvertisementService.getActiveOrPassiveJobAdvertisementsSortedForEmployer(status, userId).then(result => setJobAdvertisements(result.data.data)) 16 | }, []) 17 | 18 | return ( 19 |
20 |
21 | {jobAdvertisements.map(jobAdvertisement => ( 22 | 23 | 24 |

25 | İş İlanı - {jobAdvertisement.position.positionName}

26 | 27 | 28 |
29 | 30 |
31 | 32 |
33 |

{jobAdvertisement.position.positionName}

34 |

{jobAdvertisement.jobDescription}

35 |

{jobAdvertisement.employer.companyName}

36 |

{jobAdvertisement.city.cityName}

37 | 38 |
39 |
40 |
41 |
42 |
43 | )) 44 | } 45 |
46 | 47 |
48 | ) 49 | } 50 | -------------------------------------------------------------------------------- /src/components/pages/cv/CvAdd.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import CvService from '../../services/CvService' 3 | import { Table, Segment, TextArea, Form } from 'semantic-ui-react' 4 | import '../../../css/CvList.css' 5 | import { useParams } from 'react-router'; 6 | import moment from 'moment'; 7 | import { Button } from 'rebass'; 8 | import { useFormik } from 'formik'; 9 | import * as Yup from "yup"; 10 | import { toast } from 'react-toastify'; 11 | 12 | 13 | //kullanılmıyor 14 | export default function CvListUpdate() { 15 | 16 | let { userId } = useParams() 17 | 18 | let cvService = new CvService() 19 | const [cvs, setCvs] = useState([]); 20 | 21 | useEffect(() => { 22 | cvService.addCv(userId).then(result => setCvs(result.data.data)) 23 | }, []) 24 | 25 | const formik = useFormik({ 26 | initialValues: { 27 | cvId: "", 28 | objective: "", 29 | userId: userId, 30 | creationDate: moment().format("YYYY-MM-DD")//veritabanında default değer-> CURRENT_TIMESTAMP 31 | }, 32 | validationSchema: Yup.object({ 33 | objective: Yup.string().required("Önyazı boş bırakılamaz!"), 34 | creationDate: Yup.string().required("Oluşturma tarihi boş bırakılamaz!") 35 | }), 36 | onSubmit: (values) => { 37 | console.log(values); 38 | let cv = {//sol taraftakiler swagger'da gelen değişkenler, sağ taraftakiler ise initialValues kısmında belirlediklerimiz 39 | cvId: values.cvId, 40 | objective: values.objective, 41 | jobSeeker: { userId: values.userId }, 42 | creationDate: values.creationDate 43 | }; 44 | console.log(cv); 45 | cvService.addCv(cv).then((result) => console.log(result.data.message)); 46 | toast.success('Özgeçmiş Eklendi.') 47 | }, 48 | }); 49 | 50 | return ( 51 |
52 | { 53 | cvs.map(cv => ( 54 | 55 |

Ön Söz

56 |
57 | 58 | 60 | 63 | 66 | 67 | 68 | 69 |
59 |
61 |

62 |
64 | 65 |
70 |
71 |
72 | )) 73 | } 74 |
75 | ) 76 | } 77 | -------------------------------------------------------------------------------- /src/components/pages/systemPersonnels/ApprovedJobAdvertisementList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { NavLink } from 'react-router-dom'; 3 | import { Segment, Image, Button } from 'semantic-ui-react'; 4 | import SystemPersonnelMenu from '../../LeftMenu/SystemPersonnelMenu'; 5 | import JobAdvertisementService from '../../services/JobAdvertisementService'; 6 | import ZYBaseGrid from '../../toolbox/ZYBaseGrid'; 7 | 8 | export default function ApprovedJobAdvertisementList() { 9 | 10 | const [jobAdvertisements, setJobAdvertisements] = useState([]); 11 | 12 | useEffect(() => { 13 | let jobAdvertisementService = new JobAdvertisementService() 14 | jobAdvertisementService.getApprovedOrUnapprovedJobAdvertisement(true).then(result => setJobAdvertisements(result.data.data)) 15 | }, []) 16 | 17 | return ( 18 |
19 | } 20 | contents={ 21 |
22 | {jobAdvertisements.map(jobAdvertisement => ( 23 | 24 | 25 |

26 | İş İlanı - {jobAdvertisement.position.positionName}

27 | 28 | 29 |
30 | 31 |
32 | 33 |
34 |

{jobAdvertisement.position.positionName}

35 |

{jobAdvertisement.jobDescription}

36 |

{jobAdvertisement.employer.companyName}

37 |

{jobAdvertisement.city.cityName}

38 | 39 |
40 |
41 |
42 |
43 | )) 44 | } 45 |
46 | } /> 47 | 48 |
49 | ) 50 | } 51 | -------------------------------------------------------------------------------- /src/components/pages/cvObjective/CvObjective.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useDispatch } from 'react-redux'; 3 | import { useParams } from 'react-router'; 4 | import { toast } from 'react-toastify'; 5 | import { Segment, Table, Button, Grid } from 'semantic-ui-react'; 6 | import { getCv } from '../../../store/actions/CvActions'; 7 | import CvService from '../../services/CvService'; 8 | 9 | export default function CvObjective() { 10 | 11 | let { cvId } = useParams() 12 | 13 | const dispatch = useDispatch() 14 | let cvService = new CvService() 15 | 16 | let [cvs, setCvs] = useState([]) 17 | 18 | useEffect(() => { 19 | cvService.getCvsByCvId(cvId).then(result => setCvs(result.data.data)) 20 | }, []) 21 | 22 | const handleGetCvId = (cv) => { 23 | dispatch(getCv(cv)); 24 | } 25 | function deleteObjective(cvId) { 26 | cvService.deleteObjective(cvId).then(result => console.log(result.data.message)) 27 | toast.success("Ön Söz Silindi") 28 | } 29 | return ( 30 |
31 | 32 |

Ön Söz

33 | { 34 | cvs.map(cv => ( 35 | 36 | 37 | 38 | 39 |

40 |
41 | 42 | {cv.objective != null && 43 |

{cv.objective}

44 | } 45 | {cv.objective == null && 46 |

İş verenlerin sizi daha iyi tanıyabilmesi için ön söz ekleyebilirsiniz...

47 | } 48 | 49 |
50 | 51 | {cv.objective != null && 52 | } 54 | {cv.objective != null && 55 | } 57 | {cv.objective == null && 58 | } 60 | 61 | 62 |
63 |
64 | ))} 65 |
66 |
67 | ) 68 | } 69 | -------------------------------------------------------------------------------- /src/components/pages/cvObjective/CvObjectiveUpdate.jsx: -------------------------------------------------------------------------------- 1 | import { useFormik } from 'formik'; 2 | import React from 'react' 3 | import { useDispatch, useSelector } from 'react-redux'; 4 | import { getCv } from '../../../store/actions/CvActions'; 5 | import * as Yup from "yup"; 6 | import { Form, Segment, Table, TextArea, Button } from 'semantic-ui-react'; 7 | import CvService from '../../services/CvService'; 8 | import moment from 'moment'; 9 | import { toast } from 'react-toastify'; 10 | 11 | export default function CvObjectiveUpdate() { 12 | 13 | const dispatch = useDispatch() 14 | 15 | const cvs = useSelector(state => state.cv) 16 | 17 | let cvService = new CvService() 18 | 19 | const handleGetCvId = () => { 20 | dispatch(getCv(0)); 21 | } 22 | 23 | const formik = useFormik({ 24 | initialValues: { 25 | cvId: cvs.cvId, 26 | objective: cvs.objective, 27 | userId: 10, 28 | creationDate: moment().format("YYYY-MM-DD")//veritabanında default değer-> CURRENT_TIMESTAMP 29 | }, 30 | validationSchema: Yup.object({ 31 | objective: Yup.string().required("Önyazı boş bırakılamaz!"), 32 | creationDate: Yup.string().required("Oluşturma tarihi boş bırakılamaz!") 33 | }), 34 | onSubmit: (values) => { 35 | console.log(values); 36 | let cv = {//sol taraftakiler swagger'da gelen değişkenler, sağ taraftakiler ise initialValues kısmında belirlediklerimiz 37 | cvId: values.cvId, 38 | objective: values.objective, 39 | jobSeeker: { userId: values.userId }, 40 | creationDate: values.creationDate 41 | }; 42 | console.log(cv); 43 | cvService.addCv(cv).then((result) => console.log(result.data.message)); 44 | toast.success(`Ön Söz Başarıyla Güncellendi.`) 45 | }, 46 | }); 47 | return ( 48 |
49 |
50 | 51 |

Ön Söz

52 |
53 | 54 | 56 | 59 | 62 | 63 | 64 | 65 | 66 |
55 |
57 |

58 |
60 | 61 |
67 |
68 |
69 |
70 | 71 |
72 | ) 73 | } 74 | -------------------------------------------------------------------------------- /src/components/pages/systemPersonnels/UpdatedEmployerList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useDispatch } from 'react-redux' 3 | import { Button, Grid, Icon, Menu, Table } from 'semantic-ui-react' 4 | import EmployerService from '../../services/EmployerService' 5 | import { getEmployer } from '../../../store/actions/EmployerActions'; 6 | import { NavLink } from 'react-router-dom'; 7 | import SystemPersonnelMenu from '../../LeftMenu/SystemPersonnelMenu'; 8 | import ZYBaseGrid from '../../toolbox/ZYBaseGrid'; 9 | 10 | export default function UpdatedEmployerList() { 11 | 12 | const dispatch = useDispatch() 13 | let [employers, setEmployers] = useState([]) 14 | let employerService = new EmployerService() 15 | 16 | useEffect(() => { 17 | employerService.getAllUpdatedEmployer().then(result => setEmployers(result.data.data)) 18 | }, []) 19 | 20 | function handleEmployer(employer) { 21 | dispatch(getEmployer(employer)) 22 | } 23 | return ( 24 |
25 | } 26 | contents={ 27 |
28 | 29 | 30 | 31 | Şirket İsmi 32 | Website 33 | 34 | 35 | 36 | {employers.map(employer => ( 37 | 38 | 39 | {employer.companyName} 40 | {employer.website} 41 | 42 | 44 | 45 | 46 | 47 | ))} 48 |
49 | 50 | 51 | 52 | 53 | 1 54 | 2 55 | 3 56 | 4 57 | 58 | 59 | 60 | 61 |
} 62 | /> 63 |
64 | ) 65 | } 66 | -------------------------------------------------------------------------------- /src/components/pages/systemPersonnels/SystemPersonnelProfile.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useDispatch } from 'react-redux' 3 | import { useParams } from 'react-router' 4 | import { Segment, Table,Button } from 'semantic-ui-react' 5 | import PersonnelService from '../../services/PersonnelService' 6 | import CvPhotos from '../cvPhotos/CvPhotos' 7 | import { getSystemPersonnel } from '../../../store/actions/SystemPersonnelActions'; 8 | 9 | export default function SystemPersonnelProfile() { 10 | 11 | const dispatch = useDispatch() 12 | let { userId } = useParams() 13 | 14 | const [personnel, setPersonnel] = useState({}) 15 | 16 | useEffect(() => { 17 | let personnelService = new PersonnelService() 18 | personnelService.getByPersonnelId(userId).then(result => setPersonnel(result.data.data)) 19 | }, []) 20 | 21 | const handleGetSystemPersonnel = (systemPersonnel) => { 22 | dispatch(getSystemPersonnel(systemPersonnel)); 23 | } 24 | 25 | return ( 26 |
27 | 28 |

İletişim Bilgileri

29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 42 | 45 | 46 | 47 | 50 | 53 | 54 | 55 | 56 | 59 | 62 | 63 | 64 | 67 | 70 | 71 | 72 | 74 | 78 | 79 | 80 |
31 |
38 |
40 |

İsim:

41 |
43 |

{personnel.firstName}

44 |
48 |

Soyisim:

49 |
51 |

{personnel.lastName}

52 |
57 |

Email:

58 |
60 |

{personnel.email}

61 |
65 |

Şifre:

66 |
68 |

{personnel.password}

69 |
73 | 75 | 77 |
81 |
82 |
83 | ) 84 | } 85 | -------------------------------------------------------------------------------- /src/components/pages/jobSeekers/JobSeekerDetail.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useParams } from 'react-router' 3 | import { Grid, Segment, Table } from 'semantic-ui-react' 4 | import JobSeekerService from '../../services/JobSeekerService' 5 | import CvPhotos from '../cvPhotos/CvPhotos' 6 | 7 | export default function JobSeekerDetail() { 8 | 9 | let { userId } = useParams() 10 | let { cvId } = useParams() 11 | 12 | const [jobSeeker, setJobSeeker] = useState({}) 13 | 14 | useEffect(() => { 15 | let jobSeekerService = new JobSeekerService() 16 | jobSeekerService.getJobSeekerByUserId(userId).then(result => setJobSeeker(result.data.data)) 17 | }, []) 18 | 19 | return ( 20 |
21 | 22 |

İletişim Bilgileri

23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |

İsim:

33 |
34 | 35 | {jobSeeker.firstName} 36 | 37 |
38 | 39 | 40 |

Soyisim:

41 |
42 | 43 | 44 |

{jobSeeker.lastName}

45 |
46 |
47 | 48 | 49 |

Email:

50 |
51 | 52 |

{jobSeeker.email}

53 |
54 |
55 | 56 | 57 |

Doğum Yılı:

58 |
59 | 60 |

{jobSeeker.birthYear}

61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | ) 70 | } 71 | -------------------------------------------------------------------------------- /src/components/pages/systemPersonnels/ApprovedEmployerList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { Segment, Table, Button } from 'semantic-ui-react' 3 | import EmployerService from '../../services/EmployerService'; 4 | import PersonnelService from '../../services/PersonnelService'; 5 | import _, { delay } from 'lodash' 6 | import { toast } from 'react-toastify'; 7 | import ZYBaseGrid from '../../toolbox/ZYBaseGrid'; 8 | import EmployerMenu from '../../LeftMenu/EmployerMenu'; 9 | import SystemPersonnelMenu from '../../LeftMenu/SystemPersonnelMenu'; 10 | 11 | export default function ApprovedEmployerList() { 12 | 13 | const [employers, setEmployers] = useState([]); 14 | let employerService = new EmployerService() 15 | let personnelService = new PersonnelService() 16 | 17 | useEffect(() => { 18 | employerService.getAllEmployerByVerificationStatus(true).then(result => setEmployers(result.data.data)) 19 | }, []) 20 | 21 | function employerVerification(employerId, status) { 22 | personnelService.employerVerification(employerId, status).then(result => result.data.success ? toast.success("Onay İptal Edildi!") 23 | && _.delay(refreshPage(), 5000) 24 | : toast.error("Onay İptal Edilemedi!")) 25 | } 26 | function refreshPage() { 27 | window.location.reload(); 28 | } 29 | 30 | 31 | return ( 32 |
33 | } 34 | contents={employers.map(employer => ( 35 | 36 | 37 |

38 | Firma Bilgileri

39 | 40 | 41 | 44 | 47 | 48 | 49 | 52 | 55 | 56 | 57 | 58 | 61 | 64 | 65 | 66 | 69 | 72 | 73 | 74 | 76 | 80 | 81 |
42 |

Şirket İsmi:

43 |
45 |

{employer.companyName}

46 |
50 |

Website:

51 |
53 |

{employer.website}

54 |
59 |

Email:

60 |
62 |

{employer.email}

63 |
67 |

Telefon Numarası:

68 |
70 |

{employer.phoneNumber}

71 |
75 | 77 | 79 |
82 |
83 | ))} 84 | /> 85 | 86 |
87 | ) 88 | } 89 | -------------------------------------------------------------------------------- /src/components/pages/systemPersonnels/UnApprovedEmployerList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { Segment, Table, Button } from 'semantic-ui-react' 3 | import EmployerService from '../../services/EmployerService'; 4 | import PersonnelService from '../../services/PersonnelService'; 5 | import _ from 'lodash' 6 | import { toast } from 'react-toastify'; 7 | import ZYBaseGrid from '../../toolbox/ZYBaseGrid'; 8 | import SystemPersonnelMenu from '../../LeftMenu/SystemPersonnelMenu'; 9 | 10 | export default function UnApprovedEmployerList() { 11 | const [employers, setEmployers] = useState([]); 12 | let employerService = new EmployerService() 13 | let personnelService = new PersonnelService() 14 | 15 | useEffect(() => { 16 | employerService.getAllEmployerByVerificationStatus(false).then(result => setEmployers(result.data.data)) 17 | }, []) 18 | 19 | function refreshPage() { 20 | window.location.reload(); 21 | } 22 | 23 | function employerVerification(employerId, status) { 24 | personnelService.employerVerification(employerId, status).then(result => result.data.success ? toast.success("İş Veren Onaylandı!") 25 | && _.delay(refreshPage(), 5000)//sayfayı yenilemek için 26 | : toast.error("İş Veren Onaylanamadı!")); 27 | 28 | } 29 | 30 | return ( 31 |
32 | } 33 | contents= 34 | {employers.map(employer => ( 35 | 36 | 37 |

38 | Firma Bilgileri

39 |
40 | 41 | 42 | 45 | 48 | 49 | 50 | 53 | 56 | 57 | 58 | 59 | 62 | 65 | 66 | 67 | 70 | 73 | 74 | 75 | 76 | 78 | 82 | 83 | 84 |
43 |

Şirket İsmi:

44 |
46 |

{employer.companyName}

47 |
51 |

Website:

52 |
54 |

{employer.website}

55 |
60 |

Email:

61 |
63 |

{employer.email}

64 |
68 |

Telefon Numarası:

69 |
71 |

{employer.phoneNumber}

72 |
77 | 79 | 81 |
85 |
86 | ))} 87 | /> 88 | 89 |
90 | ) 91 | } 92 | -------------------------------------------------------------------------------- /src/components/pages/cv/CvList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import CvService from '../../services/CvService' 3 | import CvEducationInformationList from '../cvEducationInformation/CvEducationInformationList'; 4 | import CvWorkExperienceList from '../cvWorkExperiences/CvWorkExperienceList'; 5 | import CvTechnologyList from '../cvTechnologies/CvTechnologyList'; 6 | import CvSocialMediaList from '../cvSocialMedia/CvSocialMediaList'; 7 | import CvForeignLanguageList from '../cvForeignLanguages/CvForeignLanguageList'; 8 | import JobSeekerDetail from '../jobSeekers/JobSeekerDetail'; 9 | import CvEducationInformationListUpdate from '../cvEducationInformation/CvEducationInformationListUpdate'; 10 | import { useSelector } from 'react-redux'; 11 | import CvObjectiveUpdate from '../cvObjective/CvObjectiveUpdate'; 12 | import CvObjective from '../cvObjective/CvObjective'; 13 | import CvWorkExperienceUpdate from '../cvWorkExperiences/CvWorkExperienceUpdate'; 14 | import CvTechnologyUpdate from '../cvTechnologies/CvTechnologyUpdate'; 15 | import CvForeignLanguageUpdate from '../cvForeignLanguages/CvForeignLanguageUpdate'; 16 | import CvSocialMediaUpdate from '../cvSocialMedia/CvSocialMediaUpdate'; 17 | import { useParams } from 'react-router'; 18 | import CvEducationInformationAdd from '../cvEducationInformation/CvEducationInformationAdd'; 19 | import CvWorkExperienceAdd from '../cvWorkExperiences/CvWorkExperienceAdd'; 20 | import CvTechnologyAdd from '../cvTechnologies/CvTechnologyAdd'; 21 | import CvForeignLanguageAdd from '../cvForeignLanguages/CvForeignLanguageAdd'; 22 | import CvSocialMediaAdd from '../cvSocialMedia/CvSocialMediaAdd'; 23 | 24 | export default function CvList() { 25 | 26 | let { cvId } = useParams() 27 | let { userId } = useParams() 28 | 29 | const cvIds = useSelector(state => state.cv.cvId) 30 | 31 | //redux ile state kontrolü 32 | const educationInformationState = useSelector(state => state.educationInformationState.state) 33 | const workExperienceState = useSelector(state => state.workExperienceState.state) 34 | const cvTechnologyState = useSelector(state => state.cvTechnologyState.state) 35 | const cvForeignLanguageState = useSelector(state => state.cvForeignLanguageState.state) 36 | const cvSocialMediaState = useSelector(state => state.cvSocialMediaState.state) 37 | 38 | const [cvs, setCvs] = useState([]); 39 | 40 | useEffect(() => { 41 | let cvService = new CvService() 42 | cvService.getCvsByCvId(cvId).then(result => setCvs(result.data.data)) 43 | }, []) 44 | 45 | return ( 46 |
47 | 48 |
49 |
50 | {(cvIds) > 0 ? 51 | : } 52 |
53 |
54 | {educationInformationState == null && 55 | } 56 | {educationInformationState == 1 && 57 | } 58 | {educationInformationState == 2 && 59 | } 60 |
61 |
62 | 63 | {workExperienceState == null && } 64 | {workExperienceState == 1 && } 65 | {workExperienceState == 2 && } 66 |
67 |
68 | {cvTechnologyState == null && } 69 | {cvTechnologyState == 1 && } 70 | {cvTechnologyState == 2 && } 71 |
72 |
73 | {cvForeignLanguageState == null && } 74 | {cvForeignLanguageState == 1 && } 75 | {cvForeignLanguageState == 2 && } 76 |
77 |
78 | {cvSocialMediaState == null && } 79 | {cvSocialMediaState == 1 && } 80 | {cvSocialMediaState == 2 && } 81 |
82 |
83 |
84 | ) 85 | } 86 | -------------------------------------------------------------------------------- /src/components/pages/cvTechnologies/CvTechnologyList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import CvTechnologyService from '../../services/CvTechnologyService' 3 | import { Segment, Image, Button, Grid, Icon } from 'semantic-ui-react' 4 | import { useParams } from 'react-router'; 5 | import '../../../css/CvList.css' 6 | import getCvTechnology from '../../../store/actions/CvTechnologyActions'; 7 | import getCvTechnologyState from '../../../store/actions/CvTechnologyStateActions'; 8 | import { useDispatch } from 'react-redux'; 9 | import { toast } from 'react-toastify'; 10 | 11 | export default function CvTechnologyList() { 12 | 13 | const dispatch = useDispatch() 14 | let { cvId } = useParams() 15 | 16 | const [cvTechnologies, setCvTechnologies] = useState([]); 17 | let cvTechnologyService = new CvTechnologyService() 18 | useEffect(() => { 19 | cvTechnologyService.getCvTechnologiesByCvId(cvId).then(result => setCvTechnologies(result.data.data)) 20 | }, []) 21 | 22 | const handleGetTechnology = (cvTechnology) => { 23 | dispatch(getCvTechnology(cvTechnology)); 24 | } 25 | const handleGetTechnologyState = (state) => { 26 | let newState = { state } 27 | dispatch(getCvTechnologyState(newState)); 28 | } 29 | function deleteTechnologies(cvTechnologyId) { 30 | cvTechnologyService.delete(cvTechnologyId).then(result => console.log(result.data.message)) 31 | toast.success("Yetenek Bilgisi Silindi.") 32 | } 33 | 34 | return ( 35 |
36 | 37 | 38 | 39 | 40 | 41 |

Yetenekler

42 |
43 | 44 | 46 | 47 |
48 |
49 |
50 | { 51 | cvTechnologies.map(cvTechnology => ( 52 | 53 | 54 | 55 | 56 | 57 | 58 |

Teknoloji Adı:

59 |
60 | 61 |

{cvTechnology.technologyname}

62 |
63 | 64 | 66 | 68 | 69 |
70 | 71 |
72 | ))} 73 |
74 | 75 |
76 | ) 77 | } 78 | -------------------------------------------------------------------------------- /src/components/pages/employers/EmployerProfile.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { Segment, Table, Button, Grid } from 'semantic-ui-react' 3 | import EmployerService from '../../services/EmployerService' 4 | import '../../../css/JobAdvertisement.css' 5 | import { useParams } from 'react-router' 6 | import { useDispatch } from 'react-redux' 7 | import { getEmployer } from '../../../store/actions/EmployerActions'; 8 | import EmployerMenu from '../../LeftMenu/EmployerMenu' 9 | import ZYBaseGrid from '../../toolbox/ZYBaseGrid' 10 | 11 | export default function EmployerDetail() { 12 | const dispatch = useDispatch() 13 | 14 | let { userId } = useParams() 15 | 16 | const [employer, setEmployer] = useState({}) 17 | 18 | useEffect(() => { 19 | let employerService = new EmployerService() 20 | employerService.getByEmployerForUserId(userId).then(result => setEmployer(result.data.data)) 21 | }, []) 22 | 23 | function handleGetEmployer(employer) { 24 | dispatch(getEmployer(employer)) 25 | } 26 | 27 | return ( 28 |
29 | } 30 | contents={ 31 | 32 | 33 |

34 | Firma Bilgileri

35 |
36 | 37 | 38 | 41 | 44 | 45 | 46 | 49 | 52 | 53 | 54 | 57 | 60 | 61 | 62 | 65 | 68 | 69 | 70 | 72 | 80 | 81 |
39 |

Şirket İsmi:

40 |
42 |

{employer.companyName}

43 |
47 |

Website:

48 |
50 |

{employer.website}

51 |
55 |

Email:

56 |
58 |

{employer.email}

59 |
63 |

Telefon Numarası:

64 |
66 |

{employer.phoneNumber}

67 |
71 | 73 | 75 | {employer.updateStatus == false && employer.update != null && 76 |

77 |

} 79 |
82 |
83 | } /> 84 |
85 | ) 86 | } 87 | -------------------------------------------------------------------------------- /src/components/pages/password/PasswordUpdate.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { Form, Input, Segment, Table, Button } from 'semantic-ui-react' 3 | import UserService from '../../services/UserService' 4 | import '../../../css/JobAdvertisement.css' 5 | import { useParams } from 'react-router' 6 | import { getUser } from '../../../store/actions/UserActions'; 7 | import { useDispatch, useSelector } from 'react-redux' 8 | import * as Yup from "yup"; 9 | import { toast } from 'react-toastify' 10 | import { useFormik } from 'formik' 11 | 12 | export default function PasswordUpdate() { 13 | 14 | const dispatch = useDispatch() 15 | let { userId } = useParams() 16 | let userService = new UserService() 17 | 18 | //onceki sayfaya giderken id'yi siler 19 | function handlePassword() { 20 | dispatch(getUser(0)) 21 | } 22 | 23 | const formik = useFormik({ 24 | initialValues: { 25 | userId: userId, 26 | password: "", 27 | passwordAgain: "", 28 | }, 29 | validationSchema: Yup.object({ 30 | password: Yup.string().min(6, "Şifre 6 karakter olmalıdır!").required("Şifre boş bırakılamaz!"), 31 | passwordAgain: Yup.string().min(6, "Şifre tekrarı minimum 6 karakter olmalıdır!").required("Şifre tekrarı boş bırakılamaz!") 32 | }), 33 | onSubmit: (values) => { 34 | console.log(values); 35 | let password = values.password 36 | let passwordAgain = values.passwordAgain 37 | let userId = values.userId 38 | console.log(password, passwordAgain, userId); 39 | userService.updatePassword(password, passwordAgain, userId).then((result) => console.log(result.data.message)); 40 | toast.success(`Şifre Başarıyla Güncellendi.`) 41 | }, 42 | }); 43 | 44 | 45 | return ( 46 |
47 | 48 |

Şifre Değiştir

49 |
50 | 51 | 52 | 55 | 61 | 62 | 63 | 66 | 72 | 73 | 74 | 76 | 80 | 81 |
53 |

Şifre:

54 |
56 | 57 | {formik.errors.password && formik.touched.password && ( 58 |

{formik.errors.password}

59 | )} 60 |
64 |

Şifre Tekrarı:

65 |
67 | 68 | {formik.errors.passwordAgain && formik.touched.passwordAgain && ( 69 |

{formik.errors.passwordAgain}

70 | )} 71 |
75 | 77 | 78 | 79 |
82 |
83 |
84 | 85 |
86 | ) 87 | } 88 | -------------------------------------------------------------------------------- /src/components/pages/jobAdvertisement/FavoriteJobAdvertisementForJobSeeker.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useParams } from 'react-router' 3 | import { NavLink } from 'react-router-dom' 4 | import { Button, Image, Rating, Segment } from 'semantic-ui-react' 5 | import FavoriteService from '../../services/FavoriteService' 6 | 7 | export default function FavoriteJobAdvertisementForJobSeeker() { 8 | 9 | let { userId } = useParams() 10 | let [favorites, setFavorites] = useState([]) 11 | let favoriteService = new FavoriteService() 12 | 13 | useEffect(() => { 14 | favoriteService.getAllFavoritesByUserId(userId).then(result => setFavorites(result.data.data)) 15 | },[]) 16 | function addFavorite(jobAdvertisementId) { 17 | let favorite = { 18 | jobAdvertisement: { jobAdvertisementId: jobAdvertisementId }, 19 | jobSeeker: { userId: userId } 20 | } 21 | favoriteService.add(favorite).then(result => console.log(result.data.message)) 22 | } 23 | function deleteFavorite(jobAdvertisementId) { 24 | favoriteService.deleteByJobAdvertisementId(jobAdvertisementId).then(result => console.log(result.data.message)) 25 | } 26 | 27 | return ( 28 |
29 | { 30 | favorites.map(favorite => ( 31 |
32 | 33 | 34 |

35 | İş İlanı - {favorite.jobAdvertisement.position?.positionName}

36 | 37 | 38 |
39 | 40 |
41 | 42 |
43 |

{favorite.jobAdvertisement.position?.positionName}

44 |

{favorite.jobAdvertisement.jobDescription}

45 |

{favorite.jobAdvertisement.employer?.companyName}

46 |

{favorite.jobAdvertisement.city?.cityName}

47 | 48 |
49 | 51 | favoriteJobAdversitement.jobAdvertisement.jobAdvertisementId === favorite.jobAdvertisement.jobAdvertisementId) ? 1 : 0} 52 | onRate={(event, data) => 53 | data.rating === 1 ? 54 | addFavorite(favorite.jobAdvertisement.jobAdvertisementId) 55 | : deleteFavorite(favorite.jobAdvertisement.jobAdvertisementId) 56 | } > 57 | 58 |
59 |
60 |
61 |
62 |
63 |
64 | )) 65 | } 66 |
67 | ) 68 | } 69 | -------------------------------------------------------------------------------- /src/components/toolbox/JobAdvertisementDetailsSegment.jsx: -------------------------------------------------------------------------------- 1 | import moment from "moment"; 2 | import { NavLink } from "react-router-dom"; 3 | import { Button, Segment, Table } from "semantic-ui-react"; 4 | 5 | const JobAdvertisementDetailsSegment = ({ jobAdvertisement, url }) => { 6 | 7 | return ( 8 | 9 | 10 |

11 | İş İlanı - {jobAdvertisement.position?.positionName}

12 |
13 | 14 | 15 | 18 | 21 | 22 | 23 | 26 | 29 | 30 | 31 | 32 | 35 | 38 | 39 | 40 | 43 | 46 | 47 | 48 | 49 | 52 | 55 | 56 | 57 | 60 | 63 | 64 | 65 | 66 | 69 | 72 | 73 | 74 | 77 | 80 | 81 | 82 | 83 | 86 | 89 | 90 | 91 | 94 | 97 | 98 | 99 | 100 | 103 | 106 | 107 | 108 | 110 | 113 | 114 |
16 |

İş Tanımı:

17 |
19 |

{jobAdvertisement.jobDescription}

20 |
24 |

Pozisyon Adı:

25 |
27 |

{jobAdvertisement.position?.positionName}

28 |
33 |

Şehir:

34 |
36 |

{jobAdvertisement.city?.cityName}

37 |
41 |

Maksimum Maaş:

42 |
44 |

{jobAdvertisement.maxSalary}

45 |
50 |

Minimum Maaş:

51 |
53 |

{jobAdvertisement.minSalary}

54 |
58 |

Son Başvuru Tarihi:

59 |
61 |

{moment(jobAdvertisement.applicationDeadline).format("DD.MM.yyyy")}

62 |
67 |

Alınacak Kişi Sayısı:

68 |
70 |

{jobAdvertisement.positionAmount}

71 |
75 |

Çalışma Türü:

76 |
78 |

{jobAdvertisement.workType?.workTypeName}

79 |
84 |

Çalışma Zamanı Türü:

85 |
87 |

{jobAdvertisement.workTimeType?.workTimeTypeName}

88 |
92 |

Firma Adı:

93 |
95 |

{jobAdvertisement.employer?.companyName}

96 |
101 |

Web Sitesi:

102 |
104 |

{jobAdvertisement.employer?.website}

105 |
109 | 111 | 112 |
115 |
116 | ) 117 | } 118 | export default JobAdvertisementDetailsSegment; -------------------------------------------------------------------------------- /src/components/pages/cvForeignLanguages/CvForeignLanguageList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import CvForeignLanguageService from '../../services/CvForeignLanguageService' 3 | import { Segment, Image, Button, Grid, Icon } from 'semantic-ui-react' 4 | import { useParams } from 'react-router'; 5 | import '../../../css/CvList.css' 6 | import { useDispatch } from 'react-redux'; 7 | import getCvForeignLanguage, { getCvForeignLanguageState } from '../../../store/actions/CvForeignLanguageActions'; 8 | import { toast } from 'react-toastify'; 9 | 10 | export default function CvForeignLanguageList() { 11 | 12 | const dispatch = useDispatch() 13 | let { cvId } = useParams() 14 | 15 | const [cvForeignLanguages, setCvForeignLanguages] = useState([]); 16 | let cvForeignLanguageService = new CvForeignLanguageService() 17 | 18 | useEffect(() => { 19 | cvForeignLanguageService.getCvForeignLanguagesByCvId(cvId).then(result => setCvForeignLanguages(result.data.data)) 20 | }, []) 21 | 22 | const handleGetForeignLanguage = (cvForeignLanguage) => { 23 | dispatch(getCvForeignLanguage(cvForeignLanguage)); 24 | } 25 | const handleGetForeignLanguageState = (state) => { 26 | let newState = { state } 27 | dispatch(getCvForeignLanguageState(newState)); 28 | } 29 | function deleteCvForeignLanguage(cvForeignLanguageId) { 30 | cvForeignLanguageService.delete(cvForeignLanguageId).then(result => console.log(result.data.message)) 31 | toast.success("Yabancı Dil Bilgisi Silindi") 32 | } 33 | 34 | return ( 35 |
36 | 37 | 38 | 39 | 40 | 41 |

Yabancı Diller

42 |
43 | 44 | 46 | 47 |
48 |
49 |
50 | { 51 | cvForeignLanguages.map(cvForeignLanguage => ( 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |

Yabancı Dil Adı:

62 |
63 | 64 |

{cvForeignLanguage.foreignLanguageName}

65 |
66 |
67 | 68 | 69 |

Yabancı Dil Seviyesi:

70 |
71 | 72 |

{cvForeignLanguage.languageLevelName}

73 |
74 |
75 |
76 |
77 | 78 | 80 | 82 | 83 |
84 |
85 | ))} 86 |
87 |
88 | ) 89 | } 90 | -------------------------------------------------------------------------------- /src/components/mainLayout/MainLayout.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Route } from 'react-router' 3 | import CvList from '../pages/cv/CvList' 4 | import EmployerRegister from '../navi/register/EmployerRegister' 5 | import JobSeekerRegister from '../navi/register/JobSeekerRegister' 6 | import JobAdvertisementDetails from '../pages/jobAdvertisement/JobAdvertisementDetails' 7 | import TechnologyAdd from '../pages/cvTechnologies/TechnologyAdd' 8 | import Login from '../pages/login/Login' 9 | import JobAdvertisementAdd from '../pages/jobAdvertisement/JobAdvertisementAdd' 10 | import JobAdvertisementListForEmployer from '../pages/jobAdvertisement/JobAdvertisementListForEmployer' 11 | import JobAdvertisementDetailForEmployer from '../pages/jobAdvertisement/JobAdvertisementDetailForEmployer' 12 | import ActiveJobAdvertisementListForEmployer from '../pages/jobAdvertisement/ActiveJobAdvertisementListForEmployer' 13 | import PassiveJobAdvertisementListForEmployer from '../pages/jobAdvertisement/PassiveJobAdvertisementListForEmployer' 14 | import EmployerProfile from '../pages/employers/EmployerProfile' 15 | import ApprovedEmployerList from '../pages/systemPersonnels/ApprovedEmployerList' 16 | import UnApprovedEmployerList from '../pages/systemPersonnels/UnApprovedEmployerList' 17 | import ApprovedJobAdvertisementList from '../pages/systemPersonnels/ApprovedJobAdvertisementList' 18 | import UnApprovedJobAdvertisementList from '../pages/systemPersonnels/UnApprovedJobAdvertisementList' 19 | import JobAdvertisementDetailsForPersonnel from '../pages/jobAdvertisement/JobAdvertisementDetailsForPersonnel' 20 | import Cvs from '../pages/cv/Cvs' 21 | import CvAdd from '../pages/cv/CvAdd' 22 | import JobSeekerDetail from '../pages/jobSeekers/JobSeekerDetail' 23 | import SystemPersonnelProfile from '../pages/systemPersonnels/SystemPersonnelProfile' 24 | import SystemPersonnelProfileUpdate from '../pages/systemPersonnels/SystemPersonnelProfileUpdate' 25 | import BaseProfilePage from '../pages/profile/BaseProfilePage' 26 | import UpdatedEmployerList from '../pages/systemPersonnels/UpdatedEmployerList' 27 | import UpdatedEmployerListApproval from '../pages/systemPersonnels/UpdatedEmployerListApproval' 28 | import FavoriteJobAdvertisementForJobSeeker from '../pages/jobAdvertisement/FavoriteJobAdvertisementForJobSeeker' 29 | import JobAdvertisementDetailsForAll from '../pages/jobAdvertisement/JobAdvertisementDetailsForAll' 30 | import AllJobAdvertisementList from '../pages/jobAdvertisement/AllJobAdvertisementList' 31 | import JobAdvertisementListForJobSeeker from '../pages/jobAdvertisement/JobAdvertisementListForJobSeeker' 32 | import JobAdvertisementList from '../pages/jobAdvertisement/JobAdvertisementList' 33 | import MainPage from '../pages/mainPage/MainPage' 34 | import '../../css/MainLayout.css' 35 | 36 | export default function MainLayout() { 37 | return ( 38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | {/* */} 80 |
81 | ) 82 | } 83 | -------------------------------------------------------------------------------- /src/components/pages/cvTechnologies/CvTechnologyUpdate.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useDispatch, useSelector } from 'react-redux' 3 | import { Button, Dropdown, Grid, Image, Segment } from 'semantic-ui-react' 4 | import TechnologyService from '../../services/TechnologyService' 5 | import getCvTechnology from '../../../store/actions/CvTechnologyActions'; 6 | import getCvTechnologyState from '../../../store/actions/CvTechnologyStateActions'; 7 | import { useParams } from 'react-router' 8 | import * as Yup from "yup"; 9 | import CvTechnologyService from '../../services/CvTechnologyService' 10 | import { useFormik } from 'formik' 11 | import { toast } from 'react-toastify' 12 | 13 | export default function CvTechnologyUpdate() { 14 | 15 | let { cvId } = useParams() 16 | const dispatch = useDispatch() 17 | 18 | let cvTechnologies = useSelector(state => state.cvTechnology) 19 | 20 | let [technologies, setTechnologies] = useState([]) 21 | 22 | let cvTechnologyService = new CvTechnologyService() 23 | 24 | useEffect(() => { 25 | let technologyService = new TechnologyService() 26 | technologyService.getTechnology().then(result => setTechnologies(result.data.data)) 27 | }, []) 28 | 29 | const getTechnologies = technologies.map((technology, index) => ({ 30 | key: index, 31 | text: technology.technologyName, 32 | value: technology.technologyId, 33 | })); 34 | 35 | const handleGetTechnology = () => { 36 | dispatch(getCvTechnology(0)); 37 | } 38 | const handleGetTechnologyState = (state) => { 39 | dispatch(getCvTechnologyState(state)); 40 | } 41 | 42 | const formik = useFormik({ 43 | initialValues: { 44 | cvId: cvId, 45 | technologyId: cvTechnologies.technologyId, 46 | cvTechnologiesId: cvTechnologies.cvTechnologyId 47 | }, 48 | validationSchema: Yup.object({ 49 | technologyId: Yup.number().required("Teknoloji bilgisi boş bırakılamaz!") 50 | }), 51 | onSubmit: (values) => { 52 | console.log(values); 53 | let cvTechnology = {//sol taraftakiler swagger'da gelen değişkenler, sağ taraftakiler ise initialValues kısmında belirlediklerimiz 54 | cv: { cvId: values.cvId }, 55 | cvTechnologiesId: values.cvTechnologiesId, 56 | technology: { technologyId: values.technologyId } 57 | }; 58 | console.log(cvTechnology); 59 | cvTechnologyService.add(cvTechnology).then((result) => console.log(result.data.message)); 60 | toast.success(`Teknoloji Bilgisi Başarıyla Güncellendi.`) 61 | }, 62 | }); 63 | 64 | return ( 65 |
66 | 67 |

Yetenekler

68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |

Teknoloji Adı:

78 |
79 | 80 | 88 | formik.setFieldValue("technologyId", data.value) 89 | } 90 | value={formik.values.technologyId} 91 | /> 92 | {formik.errors.technologyId && formik.touched.technologyId && ( 93 |

{formik.errors.technologyId}

94 | )} 95 |
96 | 97 | 98 | 99 | 100 | 102 | 103 | 104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 | ) 112 | } 113 | -------------------------------------------------------------------------------- /src/components/pages/cvTechnologies/CvTechnologyAdd.jsx: -------------------------------------------------------------------------------- 1 | import { useFormik } from 'formik' 2 | import React, { useEffect, useState } from 'react' 3 | import { useDispatch } from 'react-redux' 4 | import { useParams } from 'react-router' 5 | import { toast } from 'react-toastify' 6 | import * as Yup from "yup"; 7 | import { Button, Dropdown, Form, Grid, Image, Segment } from 'semantic-ui-react' 8 | import getCvTechnology from '../../../store/actions/CvTechnologyActions'; 9 | import getCvTechnologyState from '../../../store/actions/CvTechnologyStateActions'; 10 | import CvTechnologyService from '../../services/CvTechnologyService' 11 | import TechnologyService from '../../services/TechnologyService' 12 | 13 | export default function CvTechnologyAdd() { 14 | let { cvId } = useParams() 15 | const dispatch = useDispatch() 16 | 17 | let [technologies, setTechnologies] = useState([]) 18 | 19 | let cvTechnologyService = new CvTechnologyService() 20 | 21 | useEffect(() => { 22 | let technologyService = new TechnologyService() 23 | technologyService.getTechnology().then(result => setTechnologies(result.data.data)) 24 | }, []) 25 | 26 | const getTechnologies = technologies.map((technology, index) => ({ 27 | key: index, 28 | text: technology.technologyName, 29 | value: technology.technologyId, 30 | })); 31 | 32 | const handleGetTechnology = () => { 33 | dispatch(getCvTechnology(0)); 34 | } 35 | const handleGetTechnologyState = (state) => { 36 | dispatch(getCvTechnologyState(state)); 37 | } 38 | 39 | const formik = useFormik({ 40 | initialValues: { 41 | cvId: cvId, 42 | technologyId: "", 43 | cvTechnologiesId: "" 44 | }, 45 | validationSchema: Yup.object({ 46 | technologyId: Yup.number().required("Teknoloji bilgisi boş bırakılamaz!") 47 | }), 48 | onSubmit: (values) => { 49 | console.log(values); 50 | let cvTechnology = {//sol taraftakiler swagger'da gelen değişkenler, sağ taraftakiler ise initialValues kısmında belirlediklerimiz 51 | cv: { cvId: values.cvId }, 52 | cvTechnologiesId: values.cvTechnologiesId, 53 | technology: { technologyId: values.technologyId } 54 | }; 55 | console.log(cvTechnology); 56 | cvTechnologyService.add(cvTechnology).then((result) => console.log(result.data.message)); 57 | toast.success(`Teknoloji Bilgisi Başarıyla Eklendi.`) 58 | }, 59 | }); 60 | 61 | return ( 62 |
63 | 64 |

Yetenekler

65 | 66 |
67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 |

Teknoloji Adı:

76 |
77 | 78 | 86 | formik.setFieldValue("technologyId", data.value) 87 | } 88 | value={formik.values.technologyId} 89 | /> 90 | {formik.errors.technologyId && formik.touched.technologyId && ( 91 |

{formik.errors.technologyId}

92 | )} 93 |
94 | 95 | 96 | 97 | 98 | 100 | 101 | 102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 | ) 111 | } 112 | -------------------------------------------------------------------------------- /src/components/pages/cvSocialMedia/CvSocialMediaList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import CvSocialMediaService from '../../services/CvSocialMediaService' 3 | import { Segment, Image, Button, Grid, Icon } from 'semantic-ui-react' 4 | import { useParams } from 'react-router'; 5 | import '../../../css/CvList.css' 6 | import getCvSocialMedia, { getCvSocialMediaState } from '../../../store/actions/CvSocialMediaActions'; 7 | import { useDispatch } from 'react-redux'; 8 | import { toast } from 'react-toastify'; 9 | 10 | export default function CvSocialMediaList() { 11 | 12 | const dispatch = useDispatch() 13 | let { cvId } = useParams() 14 | 15 | const [cvSocialMedia, setCvSocialMedia] = useState([]); 16 | let cvSocialMediaService = new CvSocialMediaService() 17 | 18 | useEffect(() => { 19 | cvSocialMediaService.getCvSocialMediaByCvId(cvId).then(result => setCvSocialMedia(result.data.data)) 20 | }, []) 21 | 22 | const handleGetSocialMedia = (cvSocialMedia) => { 23 | dispatch(getCvSocialMedia(cvSocialMedia)); 24 | } 25 | const handleGetSocialMediaState = (state) => { 26 | let newState = { state } 27 | dispatch(getCvSocialMediaState(newState)); 28 | } 29 | function deleteCvSocialMedia(cvSocialMediaId) { 30 | cvSocialMediaService.delete(cvSocialMediaId).then(result => console.log(result.data.message)) 31 | toast.success("Sosyal Medya Bilgisi Silindi") 32 | } 33 | 34 | return ( 35 |
36 | 37 | 38 | 39 | 40 | 41 |

Sosyal Medyalar

42 |
43 | 44 | 46 | 47 |
48 |
49 |
50 | { 51 | cvSocialMedia.map(cvSocialMedia => ( 52 | 53 | 54 | 55 | {cvSocialMedia.socialMediaId === 1 && 56 | 57 | } 58 | {cvSocialMedia.socialMediaId === 2 && 59 | 60 | } 61 | {cvSocialMedia.socialMediaId === 3 && 62 | 63 | } 64 | {cvSocialMedia.socialMediaId === 4 && 65 | 66 | } 67 | {cvSocialMedia.socialMediaId === 5 && 68 | 69 | } 70 | 71 | 72 | 73 | 74 | 75 |

Sosyal Medya Adı:

76 |
77 | 78 |

{cvSocialMedia.socialMediaName}

79 |
80 |
81 | 82 | 83 |

Sosyal Medya Linki:

84 |
85 | 86 |

{cvSocialMedia.link}

87 |
88 |
89 |
90 |
91 | 92 | 94 | 96 | 97 |
98 | 99 |
100 | ))} 101 |
102 |
103 | ) 104 | } 105 | -------------------------------------------------------------------------------- /src/components/pages/systemPersonnels/UpdatedEmployerListApproval.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { Table, Segment, Button, Header } from 'semantic-ui-react' 3 | import EmployerService from '../../services/EmployerService' 4 | import { useParams } from 'react-router'; 5 | import '../../../css/JobAdvertisement.css' 6 | import { toast } from 'react-toastify'; 7 | import { NavLink } from 'react-router-dom'; 8 | import ZYBaseGrid from '../../toolbox/ZYBaseGrid'; 9 | import SystemPersonnelMenu from '../../LeftMenu/SystemPersonnelMenu'; 10 | 11 | export default function UpdatedEmployerListApproval() { 12 | 13 | let { userId } = useParams() 14 | 15 | let [employer, setEmployers] = useState({}) 16 | let employerService = new EmployerService() 17 | 18 | useEffect(() => { 19 | employerService.getByEmployerForUserId(userId).then(result => setEmployers(result.data.data)) 20 | }, []) 21 | console.log(employer) 22 | 23 | function updatedEmployerApproval(employerId) { 24 | employerService.updatedEmployerApproval(employerId).then(result => console.log(result.data.message)) 25 | toast.success("Onaylama Başarılı.") 26 | } 27 | 28 | return ( 29 |
30 | } 32 | contents={ 33 | 34 |

Firma Bilgileri 35 |

36 |
37 | 38 | 39 |
Eski Bilgiler
40 |
41 | 44 | 47 | 48 | 49 | 52 | 55 | 56 | 57 | 60 | 63 | 64 | 65 | 68 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 |
Yeni Bilgiler
79 |
80 | 83 | 86 | 87 | 88 | 91 | 94 | 95 | 96 | 97 | 100 | 103 | 104 | 105 | 108 | 111 | 112 | 113 | 117 | 121 | 122 | 123 | 124 |
42 |

Şirket İsmi:

43 |
45 |

{employer.companyName}

46 |
50 |

Website:

51 |
53 |

{employer.website}

54 |
58 |

Email:

59 |
61 |

{employer.email}

62 |
66 |

Telefon Numarası:

67 |
69 |

{employer.phoneNumber}

70 |
81 |

Şirket İsmi:

82 |
84 |

{employer.update?.companyName}

85 |
89 |

Website:

90 |
92 |

{employer.update?.website}

93 |
98 |

Email:

99 |
101 |

{employer.update?.email}

102 |
106 |

Telefon Numarası:

107 |
109 |

{employer.update?.phoneNumber}

110 |
114 | 116 | 118 | 120 |
} 125 | /> 126 |
127 | ) 128 | } 129 | -------------------------------------------------------------------------------- /src/components/pages/cvEducationInformation/CvEducationInformationList.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import EducationInformationService from '../../services/EducationInformationService' 3 | import { Table, Segment, Image, Button, Grid, Icon } from 'semantic-ui-react' 4 | import { useParams } from 'react-router' 5 | import '../../../css/CvList.css' 6 | import moment from 'moment' 7 | import { useDispatch } from 'react-redux' 8 | import { getEducationInformation } from '../../../store/actions/EducationInformationActions' 9 | import getEducationInformationState from '../../../store/actions/CvEducationInformationActions' 10 | import { toast } from 'react-toastify' 11 | 12 | export default function CvEducationInformationList({ updated }) { 13 | 14 | const dispatch = useDispatch() 15 | let { cvId } = useParams() 16 | let { jobSeekerId } = useParams() 17 | const [open, setOpen] = React.useState(false) 18 | 19 | const [educationInformations, setEducationInformations] = useState([]) 20 | let educationInformationService = new EducationInformationService() 21 | 22 | useEffect(() => { 23 | educationInformationService.getEducationInformationsByCvId(cvId).then(result => setEducationInformations(result.data.data)) 24 | }, []) 25 | 26 | const handleGetEducationId = (education) => {//düzenleme sayfasına giderken bilgileri göndermek için 27 | dispatch(getEducationInformation(education)); 28 | } 29 | 30 | const handleGetEducationState = (state) => { 31 | let newState = { state } 32 | dispatch(getEducationInformationState(newState)); 33 | } 34 | function deleteEducationInformation(educationId) { 35 | educationInformationService.delete(educationId).then(result => console.log(result.data.message)) 36 | toast.success("Eğitim Bilgisi Silindi") 37 | } 38 | 39 | return ( 40 |
41 | 42 | 43 | 44 | 45 | 46 |

Eğitim Bilgileri

47 |
48 | 49 | 51 | 52 |
53 |
54 |
55 | { 56 | educationInformations.map(educationInformation => ( 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |

Üniversite Adı:

67 | 68 |
69 | 70 |

{educationInformation.universityName}

71 |
72 |
73 | 74 | 75 |

Bölüm:

76 | 77 |
78 | 79 |

{educationInformation.universityDepartmentName}

80 |
81 |
82 | 83 | 84 |

Başlangıç Tarihi:

85 |
86 | 87 |

{moment(educationInformation.startingDate).format("DD.MM.yyyy")}

88 |
89 |
90 | 91 | 92 |

Mezuniyet Tarihi:

93 | 94 |
95 | 96 |

{educationInformation.graduationDate}

97 |
98 |
99 |
100 |
101 | 102 | 104 | 106 | 107 |
108 |
109 | ))} 110 |
111 |
112 | 113 | ) 114 | } 115 | --------------------------------------------------------------------------------