├── 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 | 
6 |
7 | + Uml Diyagramı:
8 |
9 | 
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 | |
31 | |
32 |
33 |
34 |
35 |
36 |
37 |
38 | |
39 | |
40 | İsim:
41 | |
42 |
43 | {personnel.firstName}
44 | |
45 |
46 |
47 | |
48 | Soyisim:
49 | |
50 |
51 | {personnel.lastName}
52 | |
53 |
54 |
55 |
56 | |
57 | Email:
58 | |
59 |
60 | {personnel.email}
61 | |
62 |
63 |
64 | |
65 | Şifre:
66 | |
67 |
68 | {personnel.password}
69 | |
70 |
71 |
72 | |
73 | |
74 |
75 |
77 | |
78 |
79 |
80 |
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 | |
42 | Şirket İsmi:
43 | |
44 |
45 | {employer.companyName}
46 | |
47 |
48 |
49 | |
50 | Website:
51 | |
52 |
53 | {employer.website}
54 | |
55 |
56 |
57 |
58 | |
59 | Email:
60 | |
61 |
62 | {employer.email}
63 | |
64 |
65 |
66 | |
67 | Telefon Numarası:
68 | |
69 |
70 | {employer.phoneNumber}
71 | |
72 |
73 |
74 | |
75 | |
76 |
77 |
79 | |
80 |
81 |
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 | |
43 | Şirket İsmi:
44 | |
45 |
46 | {employer.companyName}
47 | |
48 |
49 |
50 | |
51 | Website:
52 | |
53 |
54 | {employer.website}
55 | |
56 |
57 |
58 |
59 | |
60 | Email:
61 | |
62 |
63 | {employer.email}
64 | |
65 |
66 |
67 | |
68 | Telefon Numarası:
69 | |
70 |
71 | {employer.phoneNumber}
72 | |
73 |
74 |
75 |
76 | |
77 | |
78 |
79 |
81 | |
82 |
83 |
84 |
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 | |
39 | Şirket İsmi:
40 | |
41 |
42 | {employer.companyName}
43 | |
44 |
45 |
46 | |
47 | Website:
48 | |
49 |
50 | {employer.website}
51 | |
52 |
53 |
54 | |
55 | Email:
56 | |
57 |
58 | {employer.email}
59 | |
60 |
61 |
62 | |
63 | Telefon Numarası:
64 | |
65 |
66 | {employer.phoneNumber}
67 | |
68 |
69 |
70 | |
71 | |
72 |
73 |
75 | {employer.updateStatus == false && employer.update != null &&
76 |
77 | }
79 | |
80 |
81 |
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 |
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 | |
16 | İş Tanımı:
17 | |
18 |
19 | {jobAdvertisement.jobDescription}
20 | |
21 |
22 |
23 | |
24 | Pozisyon Adı:
25 | |
26 |
27 | {jobAdvertisement.position?.positionName}
28 | |
29 |
30 |
31 |
32 | |
33 | Şehir:
34 | |
35 |
36 | {jobAdvertisement.city?.cityName}
37 | |
38 |
39 |
40 | |
41 | Maksimum Maaş:
42 | |
43 |
44 | {jobAdvertisement.maxSalary}
45 | |
46 |
47 |
48 |
49 | |
50 | Minimum Maaş:
51 | |
52 |
53 | {jobAdvertisement.minSalary}
54 | |
55 |
56 |
57 | |
58 | Son Başvuru Tarihi:
59 | |
60 |
61 | {moment(jobAdvertisement.applicationDeadline).format("DD.MM.yyyy")}
62 | |
63 |
64 |
65 |
66 | |
67 | Alınacak Kişi Sayısı:
68 | |
69 |
70 | {jobAdvertisement.positionAmount}
71 | |
72 |
73 |
74 | |
75 | Çalışma Türü:
76 | |
77 |
78 | {jobAdvertisement.workType?.workTypeName}
79 | |
80 |
81 |
82 |
83 | |
84 | Çalışma Zamanı Türü:
85 | |
86 |
87 | {jobAdvertisement.workTimeType?.workTimeTypeName}
88 | |
89 |
90 |
91 | |
92 | Firma Adı:
93 | |
94 |
95 | {jobAdvertisement.employer?.companyName}
96 | |
97 |
98 |
99 |
100 | |
101 | Web Sitesi:
102 | |
103 |
104 | {jobAdvertisement.employer?.website}
105 | |
106 |
107 |
108 | |
109 | |
110 |
111 |
112 | |
113 |
114 |
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 |
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 |
40 |
41 | |
42 | Şirket İsmi:
43 | |
44 |
45 | {employer.companyName}
46 | |
47 |
48 |
49 | |
50 | Website:
51 | |
52 |
53 | {employer.website}
54 | |
55 |
56 |
57 | |
58 | Email:
59 | |
60 |
61 | {employer.email}
62 | |
63 |
64 |
65 | |
66 | Telefon Numarası:
67 | |
68 |
69 | {employer.phoneNumber}
70 | |
71 |
72 |
73 | |
74 | |
75 |
76 |
77 |
78 |
79 |
80 | |
81 | Şirket İsmi:
82 | |
83 |
84 | {employer.update?.companyName}
85 | |
86 |
87 |
88 | |
89 | Website:
90 | |
91 |
92 | {employer.update?.website}
93 | |
94 |
95 |
96 |
97 | |
98 | Email:
99 | |
100 |
101 | {employer.update?.email}
102 | |
103 |
104 |
105 | |
106 | Telefon Numarası:
107 | |
108 |
109 | {employer.update?.phoneNumber}
110 | |
111 |
112 |
113 | |
114 |
116 | |
117 |
118 |
120 | |
121 |
122 |
123 |
124 |
}
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 |
--------------------------------------------------------------------------------