Compare commits
No commits in common. "fourthlabwork" and "master" have entirely different histories.
fourthlabw
...
master
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,7 +4,7 @@ build/
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
node_modules
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
|
Binary file not shown.
@ -1,7 +0,0 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"SelectedNode": "\\C:\\Users\\Alena\\Source\\Repos\\IP_PIbd-21_Yakhontov_OU",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
13
build.gradle
13
build.gradle
@ -4,7 +4,7 @@ plugins {
|
||||
id 'io.spring.dependency-management' version '1.1.0'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
group = 'LabWork'
|
||||
version = '0.0.1-SNAPSHOT'
|
||||
sourceCompatibility = '17'
|
||||
|
||||
@ -14,18 +14,9 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||||
implementation 'com.h2database:h2:2.1.210'
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
|
||||
}
|
||||
jar {
|
||||
manifest {
|
||||
attributes(
|
||||
'Main-Class': 'com.example.demo'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named('test') {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
BIN
data.mv.db
BIN
data.mv.db
Binary file not shown.
1564
data.trace.db
1564
data.trace.db
File diff suppressed because it is too large
Load Diff
23
frontend/.gitignore
vendored
23
frontend/.gitignore
vendored
@ -1,23 +0,0 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
@ -1,24 +0,0 @@
|
||||
# project
|
||||
|
||||
## Project setup
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compiles and hot-reloads for development
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compiles and minifies for production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Lints and fixes files
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Customize configuration
|
||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
@ -1,5 +0,0 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "esnext",
|
||||
"baseUrl": "./",
|
||||
"moduleResolution": "node",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
]
|
||||
},
|
||||
"lib": [
|
||||
"esnext",
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"scripthost"
|
||||
]
|
||||
}
|
||||
}
|
11857
frontend/package-lock.json
generated
11857
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,50 +0,0 @@
|
||||
{
|
||||
"name": "project",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.4.0",
|
||||
"bootstrap": "^5.2.3",
|
||||
"bootstrap-vue": "^2.23.1",
|
||||
"core-js": "^3.8.3",
|
||||
"vue": "^3.3.4",
|
||||
"vue-router": "^4.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-plugin-router": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"sass": "^1.32.7",
|
||||
"sass-loader": "^12.0.0"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/vue3-essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead",
|
||||
"not ie 11"
|
||||
]
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB |
@ -1,22 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
@ -1,34 +0,0 @@
|
||||
<template>
|
||||
<nav>
|
||||
<router-link to="/">Home</router-link> |
|
||||
<router-link to="/employee">employee</router-link> |
|
||||
<router-link to="/appointment">appointment</router-link> |
|
||||
<router-link to="/company">company</router-link> |
|
||||
<!--<router-link to="/requests">requests</router-link> |-->
|
||||
<router-link to="/report">report</router-link>
|
||||
</nav>
|
||||
<router-view/>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
#app {
|
||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-align: center;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
nav {
|
||||
padding: 30px;
|
||||
|
||||
a {
|
||||
font-weight: bold;
|
||||
color: #2c3e50;
|
||||
|
||||
&.router-link-exact-active {
|
||||
color: #42b983;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,151 +0,0 @@
|
||||
import axios from "axios";
|
||||
|
||||
const baseUrl = "http://localhost:8080/";
|
||||
const config = {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
},
|
||||
};
|
||||
|
||||
const appointmentCRUD = {
|
||||
async createAppointment(appointmentName) {
|
||||
console.log(baseUrl + "appointment/add?name=",
|
||||
appointmentName )
|
||||
return await axios.post(
|
||||
baseUrl + "appointment/add?name="+appointmentName
|
||||
);
|
||||
|
||||
},
|
||||
async getAppointmentList() {
|
||||
console.log(baseUrl + "appointment/list")
|
||||
return await axios.get(baseUrl + "appointment/list");
|
||||
},
|
||||
async getAppointmentListSort(id) {
|
||||
console.log(baseUrl + "appointment/postId=")
|
||||
return await axios.get(baseUrl + "appointment/postId="+id);
|
||||
},
|
||||
async editAppointment(id, data) {
|
||||
return await axios.put(baseUrl + `appointment/${id}`, data, config);
|
||||
},
|
||||
async deleteAppointment(id) {
|
||||
return await axios.delete(baseUrl + `appointment/${id}`, config);
|
||||
},
|
||||
};
|
||||
const companyCRUD = {
|
||||
async createCompany(
|
||||
nameCompany,
|
||||
legalAdressCompany,
|
||||
adressCompany,
|
||||
contactEmail
|
||||
) {
|
||||
console.log(baseUrl + "company/add",
|
||||
{
|
||||
id:77777,
|
||||
nameCompany: nameCompany,
|
||||
legalAdressCompany: legalAdressCompany,
|
||||
adressCompany: adressCompany,
|
||||
contactEmail: contactEmail,
|
||||
})
|
||||
return await axios.post(
|
||||
|
||||
baseUrl + "company/add?name="+nameCompany+"&legalAdressCompany="+legalAdressCompany
|
||||
+"&adressCompany="+adressCompany+"&contactEmail="+contactEmail,
|
||||
config
|
||||
);
|
||||
},
|
||||
async getCompanyList() {
|
||||
return await axios.get(baseUrl + "company/list");
|
||||
},
|
||||
async editCompany(id, data) {
|
||||
return await axios.put(baseUrl + `company/update?id=${id}?name=${data.companyName}`, data, config);
|
||||
},
|
||||
async deleteCompany(id) {
|
||||
return await axios.delete(baseUrl + `company/${id}`, config);
|
||||
},
|
||||
async deleteAllCompanys() {
|
||||
return await axios.delete(baseUrl + "company", config);
|
||||
},
|
||||
};
|
||||
|
||||
const requestCRUD = {
|
||||
async createRequeset(
|
||||
nameCompany,
|
||||
comment,
|
||||
createDate,
|
||||
approveDate,
|
||||
isActive,
|
||||
sort,
|
||||
type
|
||||
) {
|
||||
console.log( baseUrl + "requests/add?nameCompany="+nameCompany.id+"&comment="+comment +
|
||||
+"&sort="+
|
||||
+sort.id+"&type="+type.id
|
||||
)
|
||||
return await axios.post(
|
||||
baseUrl + "requests/add?nameCompany="+nameCompany.id+"&comment="+comment,
|
||||
// {
|
||||
// nameCompany: nameCompany,
|
||||
// comment: comment,
|
||||
// createDate: createDate,
|
||||
// approveDate: approveDate,
|
||||
// isActive: isActive,
|
||||
// sort: sort,
|
||||
// type: type,
|
||||
// },
|
||||
config
|
||||
);
|
||||
},
|
||||
async getRequestList() {
|
||||
return await axios.get(baseUrl + "requests/all");
|
||||
},
|
||||
async getRequestByCompanyId() {
|
||||
return await axios.get(baseUrl + "requests/Company={id}");
|
||||
},
|
||||
async editRequest(id, data) {
|
||||
return await axios.put(baseUrl + `requests/${id}`, data, config);
|
||||
},
|
||||
async deleteRequest(id) {
|
||||
return await axios.delete(baseUrl + `request/${id}`, config);
|
||||
},
|
||||
};
|
||||
const employeeCRUD = {
|
||||
async createEmployee(fio, appointment) {
|
||||
return await axios.post(
|
||||
baseUrl + "employee/add?name="+fio+"&appointmentId="+appointment,
|
||||
{
|
||||
fio: fio,
|
||||
appointment: appointment,
|
||||
},
|
||||
config
|
||||
);
|
||||
},
|
||||
async getEmployeeById(id) {
|
||||
return await axios.get(baseUrl + `employee/${id}`);
|
||||
},
|
||||
async getEmployeeList() {
|
||||
return await axios.get(baseUrl + "employee/all");
|
||||
},
|
||||
async getEmployeeWorks(id) {
|
||||
return await axios.get(baseUrl + "employee/id=" + id);
|
||||
},
|
||||
async getEmployeeByPostId(postId) {
|
||||
console.log("postId="+postId)
|
||||
return await axios.get(baseUrl + "employee/postid=" + postId);
|
||||
},
|
||||
async editEmployee(id, data) {
|
||||
console.log(data)
|
||||
return await axios.put(baseUrl + `employee/update?id=${id}&name=`+data.fio, config);
|
||||
},
|
||||
async deleteEmployee(id) {
|
||||
return await axios.delete(baseUrl + `employee/${id}`, config);
|
||||
},
|
||||
};
|
||||
const API = {
|
||||
...appointmentCRUD,
|
||||
...companyCRUD,
|
||||
...employeeCRUD,
|
||||
...requestCRUD,
|
||||
};
|
||||
|
||||
export default API;
|
Binary file not shown.
Before Width: | Height: | Size: 6.7 KiB |
@ -1,68 +0,0 @@
|
||||
<template>
|
||||
<div class="base">
|
||||
<div class="create-apponiment">
|
||||
<input type="text" v-model="appointmentName">
|
||||
<button @click="createApponiment()" class="btn btn-primary mr-2">Создать</button>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>id</th>
|
||||
<th>Название должности</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in data" :key="item.id">
|
||||
<td>{{ item.id }}</td>
|
||||
<td><input :id="'row_'+item.id" :value="item.name" :disabled="isEdditable!==item.id"/></td>
|
||||
<td>
|
||||
<button @click="(isEdditable = item.id)" v-if="isEdditable!=item.id" class="btn btn-info">edit</button>
|
||||
<button class="btn btn-info" @click="editAppoint(item.id)" v-else >save</button>
|
||||
<button class="btn btn-info" @click="deleteAppoint(item.id)">del</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import API from '@/api/api';
|
||||
// @ is an alias to /src
|
||||
|
||||
export default {
|
||||
name: 'AppointmentsSheet',
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
appointmentName: '',
|
||||
isEdditable:-1,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getApponiments()
|
||||
},
|
||||
methods: {
|
||||
editAppoint(id){
|
||||
console.log(id)
|
||||
const $input = document.querySelector(`#row_${id}`)
|
||||
const data = {
|
||||
'id':id,
|
||||
'name':$input.value
|
||||
}
|
||||
this.isEdditable = -1;
|
||||
API.editAppointment(id, data)
|
||||
},
|
||||
deleteAppoint(id){
|
||||
API.deleteAppointment(id)
|
||||
this.getApponiments()
|
||||
},
|
||||
getApponiments() {
|
||||
API.getAppointmentList().then(response => this.data = response.data)
|
||||
},
|
||||
createApponiment() {
|
||||
API.createAppointment(this.appointmentName).then(() => this.getApponiments())
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -1,90 +0,0 @@
|
||||
<template>
|
||||
<div class="base">
|
||||
<div class="create-company">
|
||||
<input type="text" v-model="companyName" placeholder="compName">
|
||||
<input type="text" v-model="legalAdressCompany" placeholder="legalAdressCompany">
|
||||
<input type="text" v-model="address" placeholder="address">
|
||||
<input type="email" v-model="email" placeholder="email">
|
||||
<button @click="createCompany()">Создать</button>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>id</th>
|
||||
<th>Название Компании</th>
|
||||
<th>Юридический адрес</th>
|
||||
<th>Адрес</th>
|
||||
<th>Email</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in data" :key="item.id">
|
||||
<td>{{ item.id }}</td>
|
||||
<td><input :id="'arow_'+item.id" :value="item.nameCompany" :disabled="isEdditable!==item.id"/></td>
|
||||
<td><input :id="'brow_'+item.id" :value="item.legalAdressCompany" :disabled="isEdditable!==item.id"/></td>
|
||||
<td><input :id="'crow_'+item.id" :value="item.adressCompany" :disabled="isEdditable!==item.id"/></td>
|
||||
<td><input :id="'drow_'+item.id" :value="item.contactEmail" :disabled="isEdditable!==item.id"/></td>
|
||||
<td>
|
||||
<button class="btn btn-info" @click="(isEdditable = item.id)" v-if="isEdditable!=item.id">edit</button>
|
||||
<button class="btn btn-info" @click="editCompany(item.id)" v-else>save</button>
|
||||
<button class="btn btn-info" @click="deleteCompany(item.id)">del</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import API from '@/api/api';
|
||||
|
||||
// @ is an alias to /src
|
||||
|
||||
export default {
|
||||
name: 'CompanySheet',
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
companyName: '',
|
||||
legalAdressCompany:'',
|
||||
address: '',
|
||||
email: '',
|
||||
isEdditable:-1,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getCompanies()
|
||||
},
|
||||
methods: {
|
||||
editCompany(id){
|
||||
console.log(id)
|
||||
const $input1 = document.querySelector(`#arow_${id}`)
|
||||
const $input2 = document.querySelector(`#brow_${id}`)
|
||||
const $input3 = document.querySelector(`#crow_${id}`)
|
||||
const $input4 = document.querySelector(`#drow_${id}`)
|
||||
const data = {
|
||||
'id':id,
|
||||
'companyName': $input1.value,
|
||||
'legalAdressCompany': $input2.value,
|
||||
'address': $input3.value,
|
||||
'email': $input4.value,
|
||||
|
||||
}
|
||||
this.isEdditable = -1;
|
||||
API.editCompany(id, data)
|
||||
},
|
||||
deleteCompany(id){
|
||||
API.deleteCompany(id)
|
||||
this.getCompanies()
|
||||
},
|
||||
getCompanies() {
|
||||
API.getCompanyList().then(response => {
|
||||
this.data = response.data
|
||||
console.log(response.data)
|
||||
})
|
||||
},
|
||||
createCompany() {
|
||||
API.createCompany(this.companyName, this.legalAdressCompany, this.address, this.email).then(() => this.getCompanies())
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -1,100 +0,0 @@
|
||||
<template>
|
||||
<div class="base">
|
||||
<div class="create-employee">
|
||||
<input type="text" v-model="name">
|
||||
<select>
|
||||
<option v-for="item in appointments" :key="item.id" :value="item.id" ref="optionAppoint" :id="item.id">{{item?.name}}</option>
|
||||
</select>
|
||||
<button class="btn btn-info" @click="createEmployee()">Создать</button>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>id</th>
|
||||
<th>ФИО</th>
|
||||
<th>Должность</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in data" :key="item.id">
|
||||
<td>{{ item.id }}</td>
|
||||
<td><input :id="'arow_'+item.id" :value="item.fio" :disabled="isEdditable!==item.id"/></td>
|
||||
<td>
|
||||
<select>
|
||||
<option v-for="appoint in appointments" :key="appoint.id" :value="appoint.id" ref="optionAppoint" :id="appoint.id" :selected="appoint.id==item.post.id">{{appoint?.name}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-info" @click="(isEdditable = item.id)" v-if="isEdditable!=item.id">edit</button>
|
||||
<button class="btn btn-info" @click="editEmployee(item.id)" v-else>save</button>
|
||||
<button class="btn btn-info" @click="deleteEmployee(item.id)">del</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import API from '@/api/api';
|
||||
import appointmentsSheet from "@/components/AppointmentsSheet.vue";
|
||||
|
||||
// @ is an alias to /src
|
||||
|
||||
export default {
|
||||
name: 'EmployeeSheet',
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
name: '',
|
||||
appointments:[],
|
||||
isEdditable:-1,
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getEmployees()
|
||||
this.getAppoint()
|
||||
},
|
||||
methods: {
|
||||
editEmployee(id){
|
||||
console.log(id)
|
||||
const $input1 = document.querySelector(`#arow_${id}`)
|
||||
const data = {
|
||||
'id':id,
|
||||
'fio': $input1.value
|
||||
}
|
||||
this.isEdditable = -1;
|
||||
API.editEmployee(id, data)
|
||||
},
|
||||
deleteEmployee(id){
|
||||
API.deleteEmployee(id)
|
||||
this.getEmployees()
|
||||
},
|
||||
getEmployees() {
|
||||
API.getEmployeeList().then(response => {
|
||||
this.data = response.data
|
||||
console.log(response)
|
||||
})
|
||||
},
|
||||
getAppoint(){
|
||||
console.log(this.data)
|
||||
API.getAppointmentList().then((res)=> {
|
||||
this.appointments = res.data
|
||||
console.log(res.data)
|
||||
})
|
||||
},
|
||||
|
||||
createEmployee() {
|
||||
const $selector = this.$refs.optionAppoint
|
||||
const $selected = $selector.find(el=>el.selected)
|
||||
API.createEmployee(this.name, $selected.id).then(() => this.getEmployees())
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
appointmentsSheet() {
|
||||
return appointmentsSheet
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
@ -1,62 +0,0 @@
|
||||
<template>
|
||||
<select>
|
||||
<option v-for="appoint in appointments" :key="appoint.id" :value="appoint.id" ref="optionAppoint" :id="appoint.id" >{{appoint?.name}}</option>
|
||||
</select>
|
||||
<button @click=getEmployees()>Select</button>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>id</th>
|
||||
<th>ФИО</th>
|
||||
<th>Должность</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in data" :key="item.id">
|
||||
<td>{{ item.id }}</td>
|
||||
<td><input :value="item.fio"/></td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import API from "@/api/api";
|
||||
|
||||
export default {
|
||||
name: "ReportSheet",
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
appointments: [],
|
||||
id: 1
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
//this.getEmployees()
|
||||
this.getAppoint()
|
||||
},
|
||||
methods: {
|
||||
getEmployees() {
|
||||
const $selector = this.$refs.optionAppoint
|
||||
const $selected = $selector.find(el=>el.selected).id
|
||||
API.getEmployeeByPostId($selected).then(response => {
|
||||
this.data = response.data
|
||||
console.log(response)
|
||||
})
|
||||
},
|
||||
getAppoint() {
|
||||
console.log(this.data)
|
||||
API.getAppointmentList().then((res) => {
|
||||
this.appointments = res.data
|
||||
console.log(res.data)
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@ -1,126 +0,0 @@
|
||||
<template>
|
||||
<div class="base">
|
||||
<div class="create-request">
|
||||
<select>
|
||||
<option v-for="item in companies" :key="item.id" :value="item.id" ref="optionCompany" :id="item.id">{{item?.nameCompany}}</option>
|
||||
</select>
|
||||
<input type="text" v-model="comment">
|
||||
<select>
|
||||
<option v-for="item in types" :key="item" :value="item" ref="optionType" :id="item">{{item == 0 ? 'DEVELOP':'TRACKING'}}</option>
|
||||
</select>
|
||||
<select>
|
||||
<option v-for="item in employes" :key="item.id" :value="item.id" ref="optionEmployee" :id="item.id">{{item?.fio}}</option>
|
||||
</select>
|
||||
<button @click="createRequest()">Создать</button>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>id</th>
|
||||
<th>Компания</th>
|
||||
<th>Ответственный</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in data" :key="item.id">
|
||||
<td>
|
||||
<select>
|
||||
<option v-for="company in companies" :key="company.id" :value="company.nameCompany" ref="optionCompany" :id="company.id" :selected="company.id==item.nameCompany">{{company?.name}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<!-- <td>{{ item.createDate }}</td>-->
|
||||
<!-- <td>{{ item.approveDate }}</td>-->
|
||||
<!-- <td>{{ item.isActive }}</td>-->
|
||||
<select>
|
||||
<option v-for="emp in employes" :key="emp.id" :value="emp.fio" ref="optionEmployee" :id="emp.id" :selected="emp.id==item.sort.id">{{emp?.name}}</option>
|
||||
</select>
|
||||
<td>{{ item.type }}</td>
|
||||
<td>
|
||||
<button @click="(isEdditable = item.id)" v-if="isEdditable!=item.id">edit</button>
|
||||
<button @click="editRequest(item.id)" v-else>save</button>
|
||||
<button @click="deleteRequest(item.id)">del</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import API from '@/api/api';
|
||||
|
||||
// @ is an alias to /src
|
||||
|
||||
export default {
|
||||
name: 'RequestSheet',
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
name: '',
|
||||
companies:[],
|
||||
employes:[],
|
||||
isEdditable:-1,
|
||||
types:{
|
||||
DEVELOP: 0,
|
||||
TRACKING: 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getEmployees()
|
||||
this.getCompany()
|
||||
this.getRequest()
|
||||
},
|
||||
methods: {
|
||||
editRequest(id){
|
||||
console.log(id)
|
||||
const $input1 = document.querySelector(`#arow_${id}`)
|
||||
const data = {
|
||||
'id':id,
|
||||
'fio': $input1.value
|
||||
}
|
||||
this.isEdditable = -1;
|
||||
API.editRequest(id, data)
|
||||
},
|
||||
deleteRequest(id){
|
||||
API.deleteRequest(id)
|
||||
this.getRequest()
|
||||
},
|
||||
getEmployees() {
|
||||
API.getEmployeeList().then(response => {
|
||||
this.employes = response.data
|
||||
console.log(response)
|
||||
})
|
||||
},
|
||||
getCompany(){
|
||||
console.log(this.data)
|
||||
API.getCompanyList().then((res)=> {
|
||||
this.companies = res.data
|
||||
console.log(res.data)
|
||||
})
|
||||
},
|
||||
getRequest(){
|
||||
console.log(this.data)
|
||||
API.getRequestList().then((res)=> {
|
||||
this.data = res.data
|
||||
console.log(res.data)
|
||||
})
|
||||
},
|
||||
createRequest() {
|
||||
const $selector = this.$refs.optionCompany
|
||||
const $selected = $selector.find(el=>el.selected)
|
||||
const $selector1 = this.$refs.optionEmployee
|
||||
const $selected1 = $selector1.find(el=>el.selected)
|
||||
const $selector2 = this.$refs.optionType
|
||||
const $selected2 = $selector2.find(el=>el.selected)
|
||||
API.createRequeset($selected, this.comment, new Date(), new Date(), true, $selected1, $selected2).then(() => this.getEmployees())
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
requestsSheet() {
|
||||
return this.requestsSheet()
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
@ -1,5 +0,0 @@
|
||||
import { createApp } from 'vue'
|
||||
import App from './App.vue'
|
||||
import router from './router'
|
||||
|
||||
createApp(App).use(router).mount('#app')
|
@ -1,55 +0,0 @@
|
||||
import { createRouter, createWebHistory } from 'vue-router'
|
||||
import HomeView from '../views/HomeView.vue'
|
||||
import EmployeeSheet from "@/components/EmployeeSheet.vue";
|
||||
import RequestSheet from "@/components/RequestSheet.vue";
|
||||
import appointmentsSheet from "@/components/AppointmentsSheet.vue";
|
||||
import CompanySheet from "@/components/CompanySheet.vue";
|
||||
import Report from "@/components/Report.vue";
|
||||
|
||||
const routes = [
|
||||
{
|
||||
path: '/',
|
||||
name: 'home',
|
||||
component: HomeView
|
||||
},
|
||||
{
|
||||
path: '/employee',
|
||||
name: 'employee',
|
||||
component: EmployeeSheet
|
||||
},
|
||||
{
|
||||
path: '/report',
|
||||
name: 'report',
|
||||
component: Report
|
||||
},
|
||||
{
|
||||
path: '/company',
|
||||
name: 'company',
|
||||
component: CompanySheet
|
||||
},
|
||||
{
|
||||
path: '/appointment',
|
||||
name: 'appointment',
|
||||
component: appointmentsSheet
|
||||
},
|
||||
{
|
||||
path: '/requests',
|
||||
name: 'requests',
|
||||
component: RequestSheet
|
||||
},
|
||||
// {
|
||||
// path: '/about',
|
||||
// name: 'about',
|
||||
// // route level code-splitting
|
||||
// // this generates a separate chunk (about.[hash].js) for this route
|
||||
// // which is lazy-loaded when the route is visited.
|
||||
// component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
|
||||
// }
|
||||
]
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(process.env.BASE_URL),
|
||||
routes
|
||||
})
|
||||
|
||||
export default router
|
@ -1,17 +0,0 @@
|
||||
<template>
|
||||
<div class="home">
|
||||
Hello
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
// @ is an alias to /src
|
||||
|
||||
export default {
|
||||
name: 'HomeView',
|
||||
components: {
|
||||
}
|
||||
}
|
||||
</script>
|
@ -1,4 +0,0 @@
|
||||
const { defineConfig } = require('@vue/cli-service')
|
||||
module.exports = defineConfig({
|
||||
transpileDependencies: true
|
||||
})
|
@ -1 +1 @@
|
||||
rootProject.name = 'demo'
|
||||
rootProject.name = 'DozorovaLabWork'
|
||||
|
@ -0,0 +1,48 @@
|
||||
package LabWork.DozorovaLabWork;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@SpringBootApplication
|
||||
@RestController
|
||||
public class DozorovaLabWorkApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DozorovaLabWorkApplication.class, args);
|
||||
}
|
||||
|
||||
@GetMapping("/")
|
||||
public String Hello() {
|
||||
return "Hello, user";
|
||||
}
|
||||
|
||||
@GetMapping("/sum")
|
||||
public String Sum(@RequestParam(required = false, defaultValue = "0") float first,
|
||||
@RequestParam(required = false, defaultValue = "0") float second) {
|
||||
return Float.toString(first + second);
|
||||
}
|
||||
|
||||
@GetMapping("/ras")
|
||||
public String Ras(@RequestParam(required = false, defaultValue = "0") float first,
|
||||
@RequestParam(required = false, defaultValue = "0") float second) {
|
||||
return Float.toString(first - second);
|
||||
}
|
||||
|
||||
@GetMapping("/pros")
|
||||
public String Pros(@RequestParam(required = false, defaultValue = "1") float first,
|
||||
@RequestParam(required = false, defaultValue = "1") float second) {
|
||||
return Float.toString(first * second);
|
||||
}
|
||||
@GetMapping("/del")
|
||||
public String Del(@RequestParam(required = false, defaultValue = "1") float first,
|
||||
@RequestParam(required = false, defaultValue = "1") float second) {
|
||||
if(second == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return Float.toString(first/second);
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package com.example.demo;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@SpringBootApplication
|
||||
@RestController
|
||||
public class DemoApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DemoApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package com.example.demo;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.ViewControllerRegistration;
|
||||
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
class WebConfiguration implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry){
|
||||
registry.addMapping("/**").allowedMethods("*");
|
||||
}
|
||||
@Override
|
||||
public void addViewControllers(ViewControllerRegistry registry) {
|
||||
ViewControllerRegistration registration = registry.addViewController("/notFound");
|
||||
registration.setViewName("forward:/index.html");
|
||||
registration.setStatusCode(HttpStatus.OK);
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import com.example.demo.speaker.service.AppointmentService;
|
||||
import com.example.demo.speaker.service.RequestForCooperationService;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
//import javax.validation.Valid;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/appointment")
|
||||
public class AppointmentController {
|
||||
private final AppointmentService appointmentService;
|
||||
|
||||
public AppointmentController(AppointmentService appointmentService) {
|
||||
this.appointmentService = appointmentService;
|
||||
}
|
||||
@PostMapping("/add")
|
||||
public AppointmentDTO addAppointment(String name){
|
||||
|
||||
Random r = new Random();
|
||||
var app = new Appointment(r.nextLong(), name);
|
||||
return new AppointmentDTO(appointmentService.addAppointment(new AppointmentDTO(app)));
|
||||
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public AppointmentDTO updateAppointment(@PathVariable Long id,@RequestBody AppointmentDTO appointmentDTO) {
|
||||
return new AppointmentDTO(appointmentService.updateAppointment(id,appointmentDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public AppointmentDTO removeAppointment(@PathVariable Long id) {
|
||||
return new AppointmentDTO(appointmentService.deleteAppointment(id));
|
||||
}
|
||||
|
||||
@DeleteMapping
|
||||
public void removeAllAppointments() {
|
||||
appointmentService.deleteAllAppointments();
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public AppointmentDTO findAppointment(@PathVariable Long id) {
|
||||
return new AppointmentDTO(appointmentService.findAppointment(id));
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
public List<AppointmentDTO> findAllAppointments() {
|
||||
return appointmentService.findAllAppointments()
|
||||
.stream()
|
||||
.map(AppointmentDTO::new)
|
||||
.toList();
|
||||
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
|
||||
public class AppointmentDTO {
|
||||
private long id;
|
||||
private String name;
|
||||
|
||||
public AppointmentDTO(Appointment appointment)
|
||||
{
|
||||
this.id = appointment.getId();
|
||||
this.name = appointment.getName();;
|
||||
}
|
||||
public AppointmentDTO(){}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import com.example.demo.speaker.model.Company;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import com.example.demo.speaker.service.AppointmentService;
|
||||
import com.example.demo.speaker.service.CompanyService;
|
||||
import com.example.demo.speaker.service.EmployeeService;
|
||||
import com.example.demo.speaker.service.RequestForCooperationService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/company")
|
||||
public class CompanyController {
|
||||
private final CompanyService companyService;
|
||||
|
||||
public CompanyController(CompanyService _companyService) {
|
||||
this.companyService = _companyService;
|
||||
}
|
||||
@PostMapping("/add")
|
||||
public CompanyDTO addCompany(@RequestParam("name") String name, @RequestParam("legalAdressCompany") String legalAdressCompany,
|
||||
@RequestParam("adressCompany") String adressCompany,
|
||||
@RequestParam("contactEmail") String contactEmail) {
|
||||
var company = new Company(name, legalAdressCompany, adressCompany, contactEmail);
|
||||
return new CompanyDTO(companyService.addCompany(new CompanyDTO(company)));
|
||||
}
|
||||
|
||||
@PutMapping("/update/{id}")
|
||||
public CompanyDTO updateCompany(@PathVariable Long id,@RequestBody CompanyDTO companyDTO) {
|
||||
return new CompanyDTO(companyService.updateCompany(id,companyDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public CompanyDTO removeCompany(@PathVariable Long id) {
|
||||
return new CompanyDTO(companyService.deleteCompany(id));
|
||||
}
|
||||
|
||||
@DeleteMapping
|
||||
public void removeAllCompanies() {
|
||||
companyService.deleteAllCompanies();
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public CompanyDTO findCompany(@PathVariable Long id) {
|
||||
return new CompanyDTO(companyService.findCompany(id));
|
||||
}
|
||||
@GetMapping("/list")
|
||||
public List<CompanyDTO> findAllCompanies() {
|
||||
return companyService.findAllCompanies()
|
||||
.stream()
|
||||
.map(CompanyDTO::new)
|
||||
.toList();
|
||||
}
|
||||
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.Company;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import jakarta.persistence.CascadeType;
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.OneToMany;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CompanyDTO {
|
||||
private long id;
|
||||
private String nameCompany;
|
||||
private String legalAdressCompany;
|
||||
private String adressCompany;
|
||||
private String contactEmail;
|
||||
// private List<RequestForCooperationDTO> requests = new ArrayList<>();
|
||||
|
||||
public CompanyDTO(Company company)
|
||||
{
|
||||
this.id = company.getId();
|
||||
this.nameCompany = company.getNameCompany();
|
||||
this.legalAdressCompany = company.getLegalAdressCompany();
|
||||
this.adressCompany = company.getAdressCompany();
|
||||
this.contactEmail = company.getContactEmail();
|
||||
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getAdressCompany() { return adressCompany; }
|
||||
|
||||
public String getNameCompany() { return nameCompany; }
|
||||
|
||||
public String getContactEmail() { return contactEmail; }
|
||||
|
||||
public String getLegalAdressCompany() { return legalAdressCompany; }
|
||||
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import com.example.demo.speaker.service.AppointmentService;
|
||||
import com.example.demo.speaker.service.RequestForCooperationService;
|
||||
import com.example.demo.speaker.service.EmployeeService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/employee")
|
||||
public class EmployeeController {
|
||||
private final EmployeeService employeeService;
|
||||
private final RequestForCooperationService requestForCooperationService;
|
||||
private final AppointmentService appointmentService;
|
||||
|
||||
|
||||
public EmployeeController(EmployeeService employeeService, RequestForCooperationService requestForCooperationService, AppointmentService appointmentService) {
|
||||
this.employeeService = employeeService;
|
||||
this.requestForCooperationService = requestForCooperationService;
|
||||
this.appointmentService = appointmentService;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public Employee getWorker(@PathVariable Long id) {
|
||||
return employeeService.findWorker(id);
|
||||
}
|
||||
|
||||
@GetMapping("/all")
|
||||
public List<Employee> getWorkers() {
|
||||
return employeeService.findAllWorkers();
|
||||
}
|
||||
|
||||
@PostMapping("/add")
|
||||
public EmployeeDTO createWorker(@RequestParam("name") String name, @RequestParam("appointmentId") Long appointmentId) {
|
||||
var Employee = new Employee(name, appointmentService.findAppointment(appointmentId));
|
||||
return new EmployeeDTO(employeeService.addWorker(new EmployeeDTO(Employee)));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
public EmployeeDTO updateWorker(@RequestParam("id") Long id, @RequestParam("name") String name) {
|
||||
var emp = employeeService.findWorker(id);
|
||||
emp.setFio(name);
|
||||
return new EmployeeDTO(employeeService.updateReportWorker(id, new EmployeeDTO(emp)));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public EmployeeDTO deleteWorker(@PathVariable Long id) {
|
||||
return new EmployeeDTO(employeeService.deleteWorker(id));
|
||||
}
|
||||
|
||||
@GetMapping("/id={id}")
|
||||
public List<RequestForCooperation> getListOfReports(@PathVariable Long id) {
|
||||
var employee = employeeService.findWorker(id);
|
||||
return employeeService.findAllRequestsOfEmployee(employee);
|
||||
}
|
||||
|
||||
@GetMapping("/postid={id}")
|
||||
public List<Employee> getListOfWorkers(@PathVariable Long id) {
|
||||
final Appointment appointment = appointmentService.findAppointment(id);
|
||||
var res = employeeService.findWorkerByPost(appointment);
|
||||
return res;
|
||||
|
||||
//return new ArrayList<Employee>();
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.OneToOne;
|
||||
|
||||
public class EmployeeDTO {
|
||||
private Long id;
|
||||
private String fio;
|
||||
private AppointmentDTO appointment;
|
||||
|
||||
public EmployeeDTO(Employee employee)
|
||||
{
|
||||
this.id = employee.getId();
|
||||
this.fio = employee.getFio();
|
||||
this.appointment = new AppointmentDTO(employee.getPost());
|
||||
}
|
||||
|
||||
public Long getId() { return id; }
|
||||
|
||||
public AppointmentDTO getAppointment() { return appointment; }
|
||||
|
||||
public String getFio() { return fio; }
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import com.example.demo.speaker.model.TypeOfRequestEnum;
|
||||
import com.example.demo.speaker.service.CompanyService;
|
||||
import com.example.demo.speaker.service.EmployeeService;
|
||||
import com.example.demo.speaker.service.RequestForCooperationService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/requests")
|
||||
public class RequestForCooperationController {
|
||||
private final RequestForCooperationService requestForCooperationService;
|
||||
private final CompanyService companyService;
|
||||
private final EmployeeService employeeService;
|
||||
|
||||
public RequestForCooperationController(RequestForCooperationService requestForCooperationService, CompanyService companyService, EmployeeService employeeService) {
|
||||
this.requestForCooperationService = requestForCooperationService;
|
||||
this.companyService = companyService;
|
||||
this.employeeService = employeeService;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public RequestForCooperation getRequest(@PathVariable Long id) {
|
||||
return requestForCooperationService.findRequest(id);
|
||||
}
|
||||
|
||||
@GetMapping("/all")
|
||||
public List<RequestForCooperation> getRequests() {
|
||||
return requestForCooperationService.findAllRequests();
|
||||
}
|
||||
|
||||
@PostMapping("/add")
|
||||
public RequestForCooperation createRequest(@RequestParam Long nameCompany,
|
||||
@RequestParam String comment
|
||||
) throws ParseException {
|
||||
|
||||
//@RequestBody RequestForCooperationDTO requestDTO) {
|
||||
var company = companyService.findCompany(nameCompany);
|
||||
var emp = employeeService.findWorker(1L);
|
||||
DateFormat form = new SimpleDateFormat("yyyy-MM-dd");
|
||||
var request = new RequestForCooperation(656656L, company, form.parse("2023-06-13"), TypeOfRequestEnum.DEVELOP, comment, emp);
|
||||
return requestForCooperationService.addRequest(new RequestForCooperationDTO(request));
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public RequestForCooperationDTO updateRequest(@PathVariable Long id, @RequestBody RequestForCooperationDTO requestDTO) {
|
||||
return new RequestForCooperationDTO(requestForCooperationService.updateRequest(requestDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public RequestForCooperation deleteRequest(@PathVariable Long id) {
|
||||
return requestForCooperationService.deleteRequest(id);
|
||||
}
|
||||
|
||||
@GetMapping("/Company={id}")
|
||||
public List<RequestForCooperation> ListOfRequest(@PathVariable Long id) {
|
||||
return requestForCooperationService.getRequestsOfCompany(companyService.findCompany(id));
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.model.Company;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import com.example.demo.speaker.model.TypeOfRequestEnum;
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.OneToOne;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class RequestForCooperationDTO {
|
||||
private Long id;
|
||||
private Company nameCompany;
|
||||
private String comment;
|
||||
private Date createDate;
|
||||
private Date approveDate;
|
||||
private Boolean isActive;
|
||||
private EmployeeDTO sotr;
|
||||
private TypeOfRequestEnum type;
|
||||
|
||||
public RequestForCooperationDTO(RequestForCooperation request)
|
||||
{
|
||||
this.id = request.getId();
|
||||
this.nameCompany = request.getName();
|
||||
this.comment = request.getComment();
|
||||
this.approveDate = request.getApproveDate();
|
||||
this.sotr = new EmployeeDTO(request.getWorker());
|
||||
this.createDate = request.getCreateDate();
|
||||
this.isActive = request.getActive();
|
||||
this.type = request.getType();
|
||||
}
|
||||
|
||||
public long getId() { return this.id; }
|
||||
|
||||
public String getComment() { return comment; }
|
||||
|
||||
public Boolean getActive() { return isActive; }
|
||||
|
||||
public Company getNameCompany() { return nameCompany; }
|
||||
|
||||
public Date getApproveDate() { return approveDate; }
|
||||
|
||||
public Date getCreateDate() { return createDate; }
|
||||
|
||||
public EmployeeDTO getSotr() { return sotr; }
|
||||
|
||||
public TypeOfRequestEnum getType() {return type; }
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
package com.example.demo.speaker.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
import static java.lang.Math.abs;
|
||||
|
||||
@Entity
|
||||
public class Appointment {
|
||||
private String name;
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
public String getName()
|
||||
{
|
||||
return this.name;
|
||||
}
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Appointment() { }
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
public Appointment(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Appointment(Long id, String name)
|
||||
{
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Appointment appointment = (Appointment) o;
|
||||
return Objects.equals(id, appointment.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Post{" +
|
||||
"id=" + id +
|
||||
",Name='" + name + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -1,111 +0,0 @@
|
||||
package com.example.demo.speaker.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
@Entity
|
||||
public class Company {
|
||||
@Column(nullable = false)
|
||||
private String nameCompany;
|
||||
@Column(nullable = false)
|
||||
private String legalAdressCompany;
|
||||
@Column(nullable = false)
|
||||
private String adressCompany;
|
||||
@Column(nullable = false)
|
||||
private String contactEmail;
|
||||
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
private List<RequestForCooperation> requests = new ArrayList<>();
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
public Company(){}
|
||||
|
||||
Random r = new Random();
|
||||
public Company(String nameCompany, String legalAdressCompany, String adressCompany,
|
||||
String contactEmail)
|
||||
{
|
||||
this.id = r.nextLong();
|
||||
this.nameCompany = nameCompany;
|
||||
this.adressCompany = adressCompany;
|
||||
this.legalAdressCompany = legalAdressCompany;
|
||||
this.contactEmail = contactEmail;
|
||||
}
|
||||
public Company(Long id, String nameCompany, String legalAdressCompany, String adressCompany,
|
||||
String contactEmail)
|
||||
{
|
||||
this.id = id;
|
||||
this.nameCompany = nameCompany;
|
||||
this.adressCompany = adressCompany;
|
||||
this.legalAdressCompany = legalAdressCompany;
|
||||
this.contactEmail = contactEmail;
|
||||
}
|
||||
public Long getId()
|
||||
{
|
||||
return this.id;
|
||||
}
|
||||
public String getNameCompany()
|
||||
{
|
||||
return this.nameCompany;
|
||||
}
|
||||
public String getLegalAdressCompany()
|
||||
{
|
||||
return this.legalAdressCompany;
|
||||
}
|
||||
public String getAdressCompany()
|
||||
{
|
||||
return this.adressCompany;
|
||||
}
|
||||
public String getContactEmail()
|
||||
{
|
||||
return this.contactEmail;
|
||||
}
|
||||
public void setNameCompany(String name)
|
||||
{
|
||||
this.nameCompany = name;
|
||||
}
|
||||
public void setLegalAdressCompany(String adressCompany)
|
||||
{
|
||||
this.legalAdressCompany = adressCompany;
|
||||
}
|
||||
public void setAdressCompany(String adressCompany)
|
||||
{
|
||||
this.adressCompany = adressCompany;
|
||||
}
|
||||
public void setContactEmail(String contactEmail)
|
||||
{
|
||||
this.contactEmail = contactEmail;
|
||||
}
|
||||
|
||||
public void setList(RequestForCooperation req) {
|
||||
this.requests.add(req);
|
||||
}
|
||||
public List<RequestForCooperation> getList()
|
||||
{
|
||||
return requests;
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Company company = (Company) o;
|
||||
return Objects.equals(id, company.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Company{" +
|
||||
"id=" + id +
|
||||
",Name='" + nameCompany + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
package com.example.demo.speaker.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
|
||||
@Entity
|
||||
public class Employee {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
@Column(nullable = false)
|
||||
private String fio;
|
||||
//@OneToOne(fetch = FetchType.EAGER)
|
||||
@OneToOne(cascade = {CascadeType.MERGE})
|
||||
@JoinColumn(name = "appointment_id")
|
||||
private Appointment appointment;
|
||||
Random r = new Random();
|
||||
|
||||
|
||||
public Employee(String fio, Appointment appointment) {
|
||||
this.id = r.nextLong();
|
||||
this.fio = fio;
|
||||
this.appointment = appointment;
|
||||
}
|
||||
public Employee(Long id, String fio, Appointment appointment) {
|
||||
this.id = id;
|
||||
this.fio = fio;
|
||||
this.appointment = appointment;
|
||||
}
|
||||
|
||||
public Employee() {
|
||||
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
public String getFio()
|
||||
{
|
||||
return this.fio;
|
||||
}
|
||||
public Appointment getPost()
|
||||
{
|
||||
return this.appointment;
|
||||
}
|
||||
public void setFio(String fio)
|
||||
{
|
||||
this.fio = fio;
|
||||
}
|
||||
public void setPost(Appointment appointment)
|
||||
{
|
||||
this.appointment = appointment;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Employee employee = (Employee) o;
|
||||
return Objects.equals(id, employee.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Worker{" +
|
||||
"id=" + id +
|
||||
", Name='" + fio + '\'' +
|
||||
", Post='" + appointment.getName() + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
package com.example.demo.speaker.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
@Entity
|
||||
public class RequestForCooperation {
|
||||
@jakarta.persistence.Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
private Company nameCompany;
|
||||
@Column(nullable = false)
|
||||
private String comment;
|
||||
@Column(nullable = false)
|
||||
private Date createDate;
|
||||
private Date approveDate;
|
||||
private Boolean isActive;
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
private Employee sotr;
|
||||
@Enumerated(EnumType.STRING)
|
||||
private TypeOfRequestEnum typeSotr;
|
||||
|
||||
public RequestForCooperation() {
|
||||
}
|
||||
Random r = new Random();
|
||||
public RequestForCooperation(Company name, Date createDate, TypeOfRequestEnum type, String text) {
|
||||
this.nameCompany = name;
|
||||
this.createDate = createDate;
|
||||
this.comment = text;
|
||||
this.typeSotr = type;
|
||||
this.id = r.nextLong();
|
||||
}
|
||||
public RequestForCooperation(Long id, Company name, Date createDate, TypeOfRequestEnum type, String text, Employee emp) {
|
||||
this.nameCompany = name;
|
||||
this.createDate = createDate;
|
||||
this.comment = text;
|
||||
this.typeSotr = type;
|
||||
this.id = id;
|
||||
this.sotr = emp;
|
||||
}
|
||||
|
||||
public Company getName()
|
||||
{
|
||||
return this.nameCompany;
|
||||
}
|
||||
public TypeOfRequestEnum getType()
|
||||
{
|
||||
return this.typeSotr;
|
||||
}
|
||||
|
||||
public Date getCreateDate()
|
||||
{
|
||||
return this.createDate;
|
||||
}
|
||||
|
||||
public Date getApproveDate()
|
||||
{
|
||||
return this.approveDate;
|
||||
}
|
||||
|
||||
public Employee getWorker()
|
||||
{
|
||||
return this.sotr;
|
||||
}
|
||||
|
||||
public String getComment() { return this.comment; }
|
||||
public void setWorker(Employee sotr)
|
||||
{
|
||||
this.sotr = sotr;
|
||||
}
|
||||
public Boolean getActive()
|
||||
{
|
||||
return this.isActive;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
RequestForCooperation report = (RequestForCooperation) o;
|
||||
return Objects.equals(id, report.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Report{" +
|
||||
"id=" + id +
|
||||
", NameCompany='" + nameCompany.toString() + '\'' +
|
||||
", Type='" + typeSotr + '\'' +
|
||||
", IsActive='" + isActive + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
public void setApproveDate(Date date)
|
||||
{
|
||||
this.approveDate = date;
|
||||
}
|
||||
|
||||
public void setUser(Employee sotr)
|
||||
{
|
||||
this.sotr = sotr;
|
||||
}
|
||||
|
||||
public void setActive(Boolean active)
|
||||
{
|
||||
this.isActive = active;
|
||||
}
|
||||
|
||||
public void setType(TypeOfRequestEnum type)
|
||||
{
|
||||
this.typeSotr = type;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package com.example.demo.speaker.model;
|
||||
|
||||
public enum TypeOfRequestEnum {
|
||||
TRACKING,
|
||||
DEVELOP
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package com.example.demo.speaker.repository;
|
||||
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface IAppointmentRepository extends JpaRepository<Appointment, Long> {
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package com.example.demo.speaker.repository;
|
||||
|
||||
import com.example.demo.speaker.model.Company;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ICompanyRepository extends JpaRepository<Company, Long> {
|
||||
@Query("SELECT DISTINCT p.requests FROM Company p where :company = p.id")
|
||||
List<RequestForCooperation> getRequestsOfCompany(@Param("company") Long id);
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package com.example.demo.speaker.repository;
|
||||
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IEmployeeRepository extends JpaRepository<Employee, Long> {
|
||||
@Query("SELECT DISTINCT p FROM Employee p where :appointment = p.appointment")
|
||||
List<Employee> getEmployeeByAppointment(@Param("appointment") Appointment appointment);
|
||||
|
||||
@Query("SELECT DISTINCT p FROM RequestForCooperation p where :employee = p.sotr")
|
||||
List<RequestForCooperation> getRequestsOfEmployee(@Param("employee") Employee employee);
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package com.example.demo.speaker.repository;
|
||||
|
||||
import com.example.demo.speaker.model.Company;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IRequestForCooperationRepository extends JpaRepository<RequestForCooperation, Long> {
|
||||
@Query("SELECT p.sotr FROM RequestForCooperation p where :id = p.id")
|
||||
Employee findWorkerByRequest(@Param("id") RequestForCooperation request);
|
||||
|
||||
@Query("SELECT p.nameCompany FROM RequestForCooperation p where :company = p.nameCompany")
|
||||
List<RequestForCooperation> findRequestByCompany(@Param("company") Company company);
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
public class AppointmentNotFoundException extends RuntimeException{
|
||||
public AppointmentNotFoundException(Long id){
|
||||
super(String.format("Appointment with id [%s] is not found", id));
|
||||
}
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
import com.example.demo.speaker.controller.AppointmentDTO;
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import com.example.demo.speaker.repository.IAppointmentRepository;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
|
||||
@Service
|
||||
public class AppointmentService {
|
||||
private final IAppointmentRepository appointmentRepository;
|
||||
|
||||
public AppointmentService(IAppointmentRepository appointmentRepository) {
|
||||
this.appointmentRepository = appointmentRepository;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Appointment addAppointment(AppointmentDTO appointmentDTO) {
|
||||
try
|
||||
{
|
||||
Appointment appointment = new Appointment(appointmentDTO.getName());
|
||||
appointmentRepository.save(appointment);
|
||||
return appointment;
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Appointment findAppointment(Long id) {
|
||||
final Optional<Appointment> appointment = appointmentRepository.findById(id);
|
||||
return appointment.get();
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<Appointment> findAllAppointments() {
|
||||
return appointmentRepository.findAll();
|
||||
}
|
||||
@Transactional
|
||||
public Appointment updateAppointment(Long id, AppointmentDTO appointmentDTO) {
|
||||
final Appointment currentAppointment = findAppointment(id);
|
||||
currentAppointment.setName(appointmentDTO.getName());
|
||||
appointmentRepository.save(currentAppointment);
|
||||
return currentAppointment;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Appointment deleteAppointment(Long id) {
|
||||
final Appointment currentAppointment = findAppointment(id);
|
||||
appointmentRepository.delete(currentAppointment);
|
||||
return currentAppointment;
|
||||
}
|
||||
@Transactional
|
||||
public void deleteAllAppointments() {
|
||||
appointmentRepository.deleteAll();
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
public class CompanyNotFoundException extends RuntimeException{
|
||||
public CompanyNotFoundException(Long id){
|
||||
super(String.format("Company with id [%s] is not found", id));
|
||||
}
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
import com.example.demo.speaker.controller.CompanyDTO;
|
||||
import com.example.demo.speaker.model.Company;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import com.example.demo.speaker.model.TypeOfRequestEnum;
|
||||
import com.example.demo.speaker.repository.ICompanyRepository;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class CompanyService {
|
||||
private final ICompanyRepository companyRepository;
|
||||
|
||||
public CompanyService(ICompanyRepository companyRepository) {
|
||||
this.companyRepository = companyRepository;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Company addCompany(CompanyDTO companyDTO) {
|
||||
final Company company = new Company(companyDTO.getNameCompany(),
|
||||
companyDTO.getLegalAdressCompany(),
|
||||
companyDTO.getAdressCompany(),
|
||||
companyDTO.getContactEmail());
|
||||
companyRepository.save(company);
|
||||
return company;
|
||||
}
|
||||
@Transactional
|
||||
public Company addRequest(CompanyDTO companyDTO, List<RequestForCooperation> requests){
|
||||
final Company currentCompany = findCompany(companyDTO.getId());
|
||||
currentCompany.setList((RequestForCooperation) requests);
|
||||
return currentCompany;
|
||||
}
|
||||
@Transactional
|
||||
public Company updateCompany(Long id, CompanyDTO companyDTO) {
|
||||
final Company currentCompany = findCompany(id);
|
||||
currentCompany.setNameCompany(companyDTO.getNameCompany());
|
||||
currentCompany.setAdressCompany(currentCompany.getAdressCompany());
|
||||
currentCompany.setLegalAdressCompany(currentCompany.getLegalAdressCompany());
|
||||
currentCompany.setContactEmail(currentCompany.getContactEmail());
|
||||
companyRepository.save(currentCompany);
|
||||
return currentCompany;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Company findCompany(Long id) {
|
||||
final Optional<Company> company = companyRepository.findById(id);
|
||||
return company.orElseThrow(()->new CompanyNotFoundException(id));
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<Company> findAllCompanies() {
|
||||
return companyRepository.findAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Company deleteCompany(Long id) {
|
||||
final Company currentCompany = findCompany(id);
|
||||
companyRepository.delete(currentCompany);
|
||||
return currentCompany;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteAllCompanies() {
|
||||
companyRepository.deleteAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public List<RequestForCooperation> getTypesRequests(Long id)
|
||||
{
|
||||
return companyRepository.getRequestsOfCompany(id);
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
public class EmployeeNotFoundException extends RuntimeException{
|
||||
public EmployeeNotFoundException(Long id){
|
||||
super(String.format("Employee with id [%s] is not found", id));
|
||||
}
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
import com.example.demo.speaker.controller.EmployeeDTO;
|
||||
import com.example.demo.speaker.model.Appointment;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import com.example.demo.speaker.repository.IEmployeeRepository;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class EmployeeService {
|
||||
private final IEmployeeRepository employeeRepository;
|
||||
private final AppointmentService appointmentService;
|
||||
|
||||
public EmployeeService(IEmployeeRepository employeeRepository, AppointmentService appointmentService) {
|
||||
this.employeeRepository = employeeRepository;
|
||||
this.appointmentService = appointmentService;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Employee addWorker(EmployeeDTO employee) {
|
||||
var appontment = appointmentService.findAppointment(employee.getAppointment().getId());
|
||||
Employee employeeNew = new Employee(employee.getFio(), appontment);
|
||||
employeeRepository.save(employeeNew);
|
||||
return employeeNew;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Employee findWorker(Long id) {
|
||||
final Optional<Employee> employee = employeeRepository.findById(id);
|
||||
return employee.orElseThrow(()->new EmployeeNotFoundException(id));
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<Employee> findAllWorkers() {
|
||||
return employeeRepository.findAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Employee updateReportWorker(Long id, EmployeeDTO employeeDTO) {
|
||||
final Employee currentEmployee = findWorker(id);
|
||||
currentEmployee.setFio(currentEmployee.getFio());
|
||||
currentEmployee.setPost(currentEmployee.getPost());
|
||||
employeeRepository.save(currentEmployee);
|
||||
return currentEmployee;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public List<Employee> findWorkerByPost(Appointment appointment) {
|
||||
if (appointment == null) {
|
||||
throw new IllegalArgumentException("Post is null or empty");
|
||||
}
|
||||
List<Employee> list = employeeRepository.getEmployeeByAppointment(appointment);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public List<RequestForCooperation> findAllRequestsOfEmployee(Employee employee)
|
||||
{
|
||||
List<RequestForCooperation> list = employeeRepository.getRequestsOfEmployee(employee);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Employee deleteWorker(Long id) {
|
||||
final Employee currentEmployee = findWorker(id);
|
||||
employeeRepository.delete(currentEmployee);
|
||||
return currentEmployee;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteAllWorkers() {
|
||||
employeeRepository.deleteAll();
|
||||
}
|
||||
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
import com.example.demo.speaker.controller.CompanyDTO;
|
||||
import com.example.demo.speaker.controller.RequestForCooperationDTO;
|
||||
import com.example.demo.speaker.model.Company;
|
||||
import com.example.demo.speaker.model.Employee;
|
||||
import com.example.demo.speaker.model.RequestForCooperation;
|
||||
import com.example.demo.speaker.repository.IRequestForCooperationRepository;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class RequestForCooperationService {
|
||||
private final IRequestForCooperationRepository requestForCooperationRepository;
|
||||
private final EmployeeService employeeService;
|
||||
private final CompanyService companyService;
|
||||
|
||||
public RequestForCooperationService(IRequestForCooperationRepository requestForCooperationRepository, EmployeeService employeeRepository, CompanyService companyService) {
|
||||
this.requestForCooperationRepository = requestForCooperationRepository;
|
||||
this.employeeService = employeeRepository;
|
||||
this.companyService = companyService;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public RequestForCooperation addRequest(RequestForCooperationDTO requestDTO) {
|
||||
final RequestForCooperation request = new RequestForCooperation(requestDTO.getNameCompany(),
|
||||
requestDTO.getCreateDate(),
|
||||
requestDTO.getType(),
|
||||
requestDTO.getComment());
|
||||
requestForCooperationRepository.save(request);
|
||||
return request;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public RequestForCooperation findRequest(Long id) {
|
||||
final Optional<RequestForCooperation> report = requestForCooperationRepository.findById(id);
|
||||
return report.orElseThrow(() -> new RequestNotFoundException(id));
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<RequestForCooperation> findAllRequests() {
|
||||
return requestForCooperationRepository.findAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public RequestForCooperation updateRequest(RequestForCooperationDTO requestDTO) {
|
||||
final RequestForCooperation currentReport = findRequest(requestDTO.getId());
|
||||
currentReport.setApproveDate(requestDTO.getApproveDate());
|
||||
currentReport.setActive(requestDTO.getActive());
|
||||
currentReport.setUser(employeeService.findWorker(requestDTO.getSotr().getId()));
|
||||
requestForCooperationRepository.save(currentReport);
|
||||
return currentReport;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public RequestForCooperation deleteRequest(Long id) {
|
||||
final RequestForCooperation currentReport = findRequest(id);
|
||||
requestForCooperationRepository.delete(currentReport);
|
||||
return currentReport;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteAllRequests() {
|
||||
requestForCooperationRepository.deleteAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Employee getEmployeeOfRequest(Long id)
|
||||
{
|
||||
return requestForCooperationRepository.findWorkerByRequest(findRequest(id));
|
||||
}
|
||||
@Transactional
|
||||
public List<RequestForCooperation> getRequestsOfCompany(Company companyDTO)
|
||||
{
|
||||
Company company = companyService.findCompany(companyDTO.getId());
|
||||
return requestForCooperationRepository.findRequestByCompany(company);
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
public class RequestNotFoundException extends RuntimeException{
|
||||
public RequestNotFoundException(Long id){
|
||||
super(String.format("Request with id [%s] is not found", id));
|
||||
}
|
||||
}
|
@ -1,11 +1 @@
|
||||
spring.main.banner-mode=off
|
||||
#server.port=8080
|
||||
spring.datasource.url=jdbc:h2:file:./data
|
||||
spring.datasource.driverClassName=org.h2.Driver
|
||||
spring.datasource.username=sa
|
||||
spring.datasource.password=password
|
||||
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
spring.h2.console.enabled=true
|
||||
spring.h2.console.settings.trace=false
|
||||
spring.h2.console.settings.web-allow-others=false
|
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
package LabWork.DozorovaLabWork;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class DozorovaLabWorkApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package com.example.demo;
|
||||
|
||||
|
||||
import com.example.demo.speaker.controller.AppointmentDTO;
|
||||
import com.example.demo.speaker.model.*;
|
||||
import com.example.demo.speaker.service.CompanyService;
|
||||
import com.example.demo.speaker.service.RequestForCooperationService;
|
||||
import com.example.demo.speaker.service.AppointmentService;
|
||||
import com.example.demo.speaker.service.EmployeeService;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import jakarta.transaction.Transactional;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@SpringBootTest
|
||||
public class JPATests {
|
||||
|
||||
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
spring.datasource.url=jdbc:h2:mem:testdb
|
||||
spring.datasource.driverClassName=org.h2.Driver
|
||||
spring.datasource.username=sa
|
||||
spring.datasource.password=password
|
||||
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
||||
spring.jpa.hibernate.ddl-auto=create-drop
|
Loading…
x
Reference in New Issue
Block a user