diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..b9b3f55
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+Lab4
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..1ade91a
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml
new file mode 100644
index 0000000..ea70fe1
--- /dev/null
+++ b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__commons_io_commons_io_2_5.xml b/.idea/libraries/Maven__commons_io_commons_io_2_5.xml
new file mode 100644
index 0000000..67c2ad2
--- /dev/null
+++ b/.idea/libraries/Maven__commons_io_commons_io_2_5.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_11.xml b/.idea/libraries/Maven__junit_junit_4_11.xml
new file mode 100644
index 0000000..f33320d
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_11.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 0000000..f58bbc1
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..7193838
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..ffcf9a6
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..296a2fc
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1593613729364
+
+
+ 1593613729364
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DevelopCompany.jar b/DevelopCompany.jar
new file mode 100644
index 0000000..9ccc9c9
Binary files /dev/null and b/DevelopCompany.jar differ
diff --git a/Lab4.iml b/Lab4.iml
new file mode 100644
index 0000000..0e46fa0
--- /dev/null
+++ b/Lab4.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..56006fa
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+
+ org.example
+ Lab4
+ 1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 7
+ 7
+
+
+
+
+
+
+ com.googlecode.json-simple
+ json-simple
+ 1.1
+
+
+ commons-io
+ commons-io
+ 2.5
+
+
+ junit
+ junit
+ 4.11
+ test
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/Lab4.java b/src/main/java/Lab4.java
new file mode 100644
index 0000000..beebff3
--- /dev/null
+++ b/src/main/java/Lab4.java
@@ -0,0 +1,13 @@
+import Staff.DeveloperCompany;
+public class Lab4 {
+ public static void main(String[] args) {
+ DeveloperCompany geeks = new DeveloperCompany("Geeks", 180);
+ geeks.companyCreation("/stuff.json");
+ geeks.addProjects("/projects.json");
+ geeks.assignPerformers();
+ geeks.prepareForPayment();
+ geeks.accrualOfSalary();
+ geeks.printAll();
+ geeks.saveStuff("stuff.json");
+ }
+}
diff --git a/src/main/java/Staff/Ancestors.java b/src/main/java/Staff/Ancestors.java
new file mode 100644
index 0000000..3d67f5d
--- /dev/null
+++ b/src/main/java/Staff/Ancestors.java
@@ -0,0 +1,151 @@
+package Staff;
+
+abstract class Employee {
+
+ //fields
+ protected int id;
+ protected String fio;
+ protected int workTime;
+ protected double payment;
+ protected int baseRate;
+ protected DeveloperCompany company;
+ protected String position;
+ //---------------------------------------------------------
+
+ //constructor
+ public Employee(int id, String fio, DeveloperCompany company) {
+ this.id = id;
+ this.fio = fio;
+ this.company = company;
+ }
+ //---------------------------------------------------------
+
+ //methods
+ abstract double salaryCalculator();
+ @Override
+ public String toString() {
+ return id+" - "+workTime+" - "+position+" - "+fio+" - "+payment;
+ }
+ //---------------------------------------------------------
+
+ //setters
+ public void setId(int id) {
+ this.id = id;
+ }
+ public void setFio(String fio) {
+ this.fio = fio;
+ }
+ public void setWorkTime(int workTime) {
+ this.workTime = workTime;
+ }
+ public void setPayment() {
+ int buf = (int)(salaryCalculator()*10);
+ this.payment = (double)buf/10;
+ }
+ //---------------------------------------------------------
+
+ //getters
+ public int getId() {
+ return id;
+ }
+ public String getFio() {
+ return fio;
+ }
+ public int getWorkTime() {
+ return workTime;
+ }
+ public double getPayment() {
+ return payment;
+ }
+ public String getPosition(){return position;}
+ //---------------------------------------------------------
+}
+
+abstract class Personal extends Employee implements WorkTime{
+
+ //constructor
+ public Personal(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, company);
+ this.workTime = workTime;
+ baseRate = company.getBaseRate();
+ }
+ //---------------------------------------------------------
+
+ //methods
+ public double hourlyPay() {
+ return baseRate*workTime;
+ }
+ public double salaryCalculator() {
+ return hourlyPay();
+ }
+ //---------------------------------------------------------
+
+ //setters
+ public void setBaseRate(int baseRate) {
+ this.baseRate = baseRate;
+ }
+ //---------------------------------------------------------
+
+ //getters
+ public int getBaseRate() {
+ return baseRate;
+ }
+ //---------------------------------------------------------
+}
+
+abstract class Engineer extends Employee implements Project, WorkTime{
+
+ //fields
+ protected DevelopProjects project;
+ //---------------------------------------------------------
+
+ //constructor
+ public Engineer(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, company);
+ this.workTime = workTime;
+ baseRate = company.getBaseRate();
+ }
+ //---------------------------------------------------------
+
+ //methods
+ public double salaryCalculator() {
+ return hourlyPay()+projectPayment();
+ }
+
+ public double hourlyPay() {
+ double skillRating= 1.8;
+ return baseRate*skillRating*workTime;
+ }
+
+ public double projectPayment() {
+ if (project!=null && project.isItPossibleToPay())
+ return (project.getBudget()*0.35)/(project.getEngineers().size());
+ else
+ return 0;
+ }
+ //---------------------------------------------------------
+
+ //setters
+ public void setProject(DevelopProjects project) {
+ this.project = project;
+ }
+ //---------------------------------------------------------
+
+ //getters
+ public DevelopProjects getProject() {
+ return project;
+ }
+ //---------------------------------------------------------
+}
+
+interface WorkTime{
+ double hourlyPay();
+}
+
+interface Project{
+ double projectPayment();
+}
+
+interface Heading{
+ double managementFee(DevelopProjects project);
+}
\ No newline at end of file
diff --git a/src/main/java/Staff/Cleaner.java b/src/main/java/Staff/Cleaner.java
new file mode 100644
index 0000000..2e4bec2
--- /dev/null
+++ b/src/main/java/Staff/Cleaner.java
@@ -0,0 +1,12 @@
+package Staff;
+
+public class Cleaner extends Personal {
+
+ //constructor
+ public Cleaner(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, workTime, company);
+ position = "Cleaner";
+ }
+ //---------------------------------------------------------
+
+}
diff --git a/src/main/java/Staff/DevelopProjects.java b/src/main/java/Staff/DevelopProjects.java
new file mode 100644
index 0000000..1f1ea10
--- /dev/null
+++ b/src/main/java/Staff/DevelopProjects.java
@@ -0,0 +1,126 @@
+package Staff;
+
+import java.util.ArrayList;
+
+public class DevelopProjects {
+
+ //fields
+ private int id;
+ private String title;
+ private double budget;
+ private ArrayList managers = new ArrayList<>();
+ private ProjectManager projectManager;
+ private SeniorManager seniorManager;
+ private ArrayList engineers = new ArrayList<>();
+ private TeamLeader teamLeader;
+ private enum States {AWAIT, INWORK, FINISHED, CLOSED};
+ private States status;
+ //---------------------------------------------------------
+
+ //constructor
+ public DevelopProjects(int id, String title, double budget, SeniorManager seniorManager) {
+ this.id = id;
+ this.title = title;
+ this.budget = budget;
+ status = States.AWAIT;
+ this.seniorManager = seniorManager;
+ seniorManager.setProject(this);
+ }
+ //---------------------------------------------------------
+
+ //methods
+ public boolean completeTheProject(){
+ if (status == States.INWORK) {
+ status = States.FINISHED;
+ return true;
+ }
+ else
+ return false;
+ }
+ public boolean closeTheProject(){
+ if (status == States.FINISHED) {
+ status = States.CLOSED;
+ return true;
+ }
+ else
+ return false;
+ }
+ public boolean isItPossibleToPay() {
+ if (status == States.FINISHED)
+ return true;
+ else
+ return false;
+ }
+ @Override
+ public String toString() {
+ return title;
+ }
+ //---------------------------------------------------------
+
+ //setters
+ public boolean setProjectManager(ProjectManager projectManager) {
+ if (projectManager.getProjects().size() == 0){
+ projectManager.setProject(this);
+ this.projectManager = projectManager;
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ public boolean setTeamLeader(TeamLeader teamLeader) {
+ if (teamLeader.getProject() == null) {
+ this.teamLeader = teamLeader;
+ teamLeader.setProject(this);
+ status = States.INWORK;
+ return true;
+ }
+ else
+ return false;
+ }
+ public boolean setManager(Manager manager) {
+ if (status == States.INWORK && manager.getProject() ==null){
+ this.managers.add(manager);
+ manager.setProject(this);
+ return true;
+ }
+ else
+ return false;
+ }
+ public boolean setEngineer(Engineer engineer) {
+ if (status == States.INWORK && engineer.getProject() == null){
+ this.engineers.add(engineer);
+ engineer.setProject(this);
+ return true;
+ }
+ else
+ return false;
+ }
+ //---------------------------------------------------------
+
+ //getters
+ public ProjectManager getProjectManager() {
+ return projectManager;
+ }
+ public ArrayList getManagers() {
+ return managers;
+ }
+ public int getId() {
+ return id;
+ }
+ public String getTitle() {
+ return title;
+ }
+ public double getBudget() {
+ return budget;
+ }
+ public SeniorManager getSeniorManager() {
+ return seniorManager;
+ }
+ public TeamLeader getTeamLeader() {
+ return teamLeader;
+ }
+ public ArrayList getEngineers() {
+ return engineers;
+ }
+}
diff --git a/src/main/java/Staff/DeveloperCompany.java b/src/main/java/Staff/DeveloperCompany.java
new file mode 100644
index 0000000..abf26f3
--- /dev/null
+++ b/src/main/java/Staff/DeveloperCompany.java
@@ -0,0 +1,241 @@
+package Staff;
+
+import org.apache.commons.io.IOUtils;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.nio.charset.StandardCharsets;
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class DeveloperCompany {
+
+ //fields
+ private String title;
+ private int baseRate;
+ private SeniorManager seniorManager;
+ private ArrayList projectManagers = new ArrayList<>();
+ private ArrayList managers = new ArrayList<>();
+ private ArrayList cleaners = new ArrayList<>();
+ private ArrayList drivers = new ArrayList<>();
+ private ArrayList programmers = new ArrayList<>();
+ private ArrayList testers = new ArrayList<>();
+ private ArrayList teamLeaders = new ArrayList<>();
+ private ArrayList employees = new ArrayList<>();
+ private ArrayList projects = new ArrayList<>();
+ //---------------------------------------------------------
+
+ //construcor
+ public DeveloperCompany(String title, int baseRate) {
+ this.title = title;
+ this.baseRate = baseRate;
+ }
+ //---------------------------------------------------------
+
+ //methods
+ public void companyCreation(String jasonFile){
+ JSONParser parser = new JSONParser();
+ try {
+
+ InputStream inputStream = getClass().getResourceAsStream(jasonFile);
+ String inputFile = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+ JSONArray empArr = (JSONArray) parser.parse(inputFile);
+ Iterator studIter = empArr.iterator();
+ while (studIter.hasNext()) {
+ JSONObject employee = (JSONObject) studIter.next();
+ int id = Integer.parseInt(employee.get("id").toString());
+ String fio = employee.get("fio").toString();
+ int workTime = Integer.parseInt(employee.get("workTime").toString());
+ String position = employee.get("position").toString();
+ switch (position){
+ case "cleaner":
+ cleaners.add(new Cleaner(id, fio, workTime, this));
+ employees.add(cleaners.get(cleaners.size()-1));
+ break;
+ case "driver":
+ drivers.add(new Driver(id, fio, workTime, this));
+ employees.add(drivers.get(drivers.size()-1));
+ break;
+ case "programmer":
+ programmers.add(new Programmer(id, fio, workTime, this));
+ employees.add(programmers.get(programmers.size()-1));
+ break;
+ case "tester":
+ testers.add(new Tester(id, fio, workTime, this));
+ employees.add(testers.get(testers.size()-1));
+ break;
+ case "teamLeader":
+ teamLeaders.add(new TeamLeader(id, fio, workTime, this));
+ employees.add(teamLeaders.get(teamLeaders.size()-1));
+ break;
+ case "manager":
+ managers.add(new Manager(id, fio, workTime,this));
+ employees.add(managers.get(managers.size()-1));
+ break;
+ case "projectManager":
+ projectManagers.add(new ProjectManager(id, fio, workTime, this));
+ employees.add(projectManagers.get(projectManagers.size()-1));
+ break;
+ case "seniorManager":
+ seniorManager = new SeniorManager(id, fio, workTime,this);
+ employees.add(seniorManager);
+ break;
+ }
+ }
+ parser.reset();
+ empArr.clear();
+ } catch (RuntimeException | ParseException | IOException e) {
+ e.printStackTrace();
+ }
+ }
+ public void addProjects(String jasonFile){
+ JSONParser parser = new JSONParser();
+ try {
+
+ InputStream inputStream = getClass().getResourceAsStream(jasonFile);
+ String inputFile = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+ JSONArray projArr = (JSONArray) parser.parse(inputFile);
+ Iterator projIter = projArr.iterator();
+ while (projIter.hasNext()) {
+ JSONObject project = (JSONObject) projIter.next();
+ int id = Integer.parseInt(project.get("id").toString());
+ String title = project.get("title").toString();
+ int budget = Integer.parseInt(project.get("budget").toString());
+ projects.add(new DevelopProjects(id, title, budget, seniorManager));
+ }
+ parser.reset();
+ projArr.clear();
+ } catch (RuntimeException | ParseException | IOException e) {
+ e.printStackTrace();
+ }
+ }
+ public void assignPerformers(){
+ for (DevelopProjects project: projects){
+ int i = 0;
+ while (!project.setTeamLeader(teamLeaders.get(i++)) && i getProjectManagers() {
+ return projectManagers;
+ }
+ public ArrayList getManagers() {
+ return managers;
+ }
+ public ArrayList getCleaners() {
+ return cleaners;
+ }
+ public ArrayList getDrivers() {
+ return drivers;
+ }
+ public ArrayList getProgrammers() {
+ return programmers;
+ }
+ public ArrayList getTesters() {
+ return testers;
+ }
+ public ArrayList getTeamLeaders() {
+ return teamLeaders;
+ }
+ public ArrayList getDevelopProjects() {
+ return projects;
+ }
+ public int getNumberOfEmployee(){ return employees.size();}
+ //---------------------------------------------------------
+}
diff --git a/src/main/java/Staff/Driver.java b/src/main/java/Staff/Driver.java
new file mode 100644
index 0000000..8f04b03
--- /dev/null
+++ b/src/main/java/Staff/Driver.java
@@ -0,0 +1,29 @@
+package Staff;
+
+public class Driver extends Personal {
+
+ //fields
+ private double raisingFactor = 1.2;
+ //---------------------------------------------------------
+
+ //constructor
+ public Driver(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, workTime, company);
+ position = "Driver";
+ }
+ //---------------------------------------------------------
+
+ //methods
+ @Override
+ public double hourlyPay() {
+ if (workTime >= 160){
+ return ((160+(workTime-160)*2)*baseRate*raisingFactor);
+ }
+ else
+ return super.hourlyPay()*raisingFactor;
+ }
+ public void changeRaisingFactor(double raisingFactor){
+ this.raisingFactor = raisingFactor;
+ }
+ //---------------------------------------------------------
+}
\ No newline at end of file
diff --git a/src/main/java/Staff/Manager.java b/src/main/java/Staff/Manager.java
new file mode 100644
index 0000000..3b852c8
--- /dev/null
+++ b/src/main/java/Staff/Manager.java
@@ -0,0 +1,43 @@
+package Staff;
+
+public class Manager extends Employee implements Project{
+
+ //fields
+ private DevelopProjects project;
+ //---------------------------------------------------------
+
+ //constructor
+
+ public Manager(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, company);
+ this.workTime = workTime;
+ position = "Manager";
+ }
+ //---------------------------------------------------------
+
+ //methods
+ public double salaryCalculator() {
+ return projectPayment();
+ }
+
+ public double projectPayment() {
+ if (project!=null && project.isItPossibleToPay())
+ return (project.getBudget()*0.6)/(project.getManagers().size()+1);
+ else
+ return 0;
+ }
+ //---------------------------------------------------------
+
+ //setters
+ public boolean setProject(DevelopProjects project) {
+ this.project = project;
+ return true;
+ }
+ //---------------------------------------------------------
+
+ //getters
+ public DevelopProjects getProject() {
+ return project;
+ }
+ //---------------------------------------------------------
+}
diff --git a/src/main/java/Staff/Programmer.java b/src/main/java/Staff/Programmer.java
new file mode 100644
index 0000000..7090ba0
--- /dev/null
+++ b/src/main/java/Staff/Programmer.java
@@ -0,0 +1,11 @@
+package Staff;
+
+class Programmer extends Engineer {
+
+ //constructor
+ public Programmer(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, workTime, company);
+ position = "Programmer";
+ }
+ //---------------------------------------------------------
+}
diff --git a/src/main/java/Staff/ProjectManager.java b/src/main/java/Staff/ProjectManager.java
new file mode 100644
index 0000000..b3c3024
--- /dev/null
+++ b/src/main/java/Staff/ProjectManager.java
@@ -0,0 +1,62 @@
+package Staff;
+
+import java.util.ArrayList;
+
+public class ProjectManager extends Manager implements Heading{
+
+ //fields
+ protected ArrayList projects = new ArrayList<>();
+ //---------------------------------------------------------
+
+ //constructor
+
+ public ProjectManager(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, workTime, company);
+ position = "Project Manager";
+ }
+ //---------------------------------------------------------
+
+ //methods
+ @Override
+ public double salaryCalculator() {
+ double salary = 0;
+ if (!projects.isEmpty()) {
+ for (DevelopProjects project : projects) {
+ salary += projectPayment(project) * managementFee(project);
+ }
+ }
+ return salary;
+ }
+ public double projectPayment(DevelopProjects project) {
+ if (project.isItPossibleToPay())
+ return (project.getBudget()*0.6)/(project.getManagers().size()+1);
+ else
+ return 0;
+ }
+ public double managementFee(DevelopProjects project) {
+ double surcharge = 1 + ((double)project.getManagers().size() * 15)/100;
+ if (surcharge >= 1.5)
+ surcharge=1.5;
+ return surcharge;
+ }
+ //---------------------------------------------------------
+
+ //setters
+ public boolean setProject(DevelopProjects project) {
+ if (project.getProjectManager() == null) {
+ this.projects.add(project);
+ return true;
+ }
+ else{
+ System.out.println("This project already has the project manager");
+ return false;
+ }
+ }
+ //---------------------------------------------------------
+
+ //getters
+ public ArrayList getProjects() {
+ return projects;
+ }
+ //---------------------------------------------------------
+}
diff --git a/src/main/java/Staff/SeniorManager.java b/src/main/java/Staff/SeniorManager.java
new file mode 100644
index 0000000..e625e16
--- /dev/null
+++ b/src/main/java/Staff/SeniorManager.java
@@ -0,0 +1,47 @@
+package Staff;
+
+import java.util.ArrayList;
+
+public class SeniorManager extends ProjectManager {
+
+ //fields
+ private ArrayList projectManagers;
+ //---------------------------------------------------------
+
+ //constructor
+
+ public SeniorManager(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, workTime, company);
+ position = "Senior Manager";
+ }
+ //---------------------------------------------------------
+
+ //methods
+ @Override
+ public double projectPayment(DevelopProjects project) {
+ if (project.isItPossibleToPay())
+ return project.getBudget()*0.05;
+ else
+ return 0;
+ }
+ @Override
+ public double managementFee(DevelopProjects project) {
+ double surcharge = 1 + (((double)company.getProjectManagers().size() * 3)/100);
+ if (surcharge >= 1.2)
+ surcharge=1.2;
+ return surcharge;
+ }
+ //---------------------------------------------------------
+
+ //setters
+ public void setProjectManagers(ArrayList projectManagers) {
+ this.projectManagers = projectManagers;
+ }
+ //---------------------------------------------------------
+
+ //getters
+ public ArrayList getProjectManagers() {
+ return projectManagers;
+ }
+ //---------------------------------------------------------
+}
diff --git a/src/main/java/Staff/TeamLeader.java b/src/main/java/Staff/TeamLeader.java
new file mode 100644
index 0000000..9f0c595
--- /dev/null
+++ b/src/main/java/Staff/TeamLeader.java
@@ -0,0 +1,33 @@
+package Staff;
+
+class TeamLeader extends Engineer implements Heading{
+
+ //constructor
+ public TeamLeader(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, workTime, company);
+ position = "Team Leader";
+ }
+ //---------------------------------------------------------
+
+ //methods
+ @Override
+ public double salaryCalculator() {
+ return hourlyPay()+projectPayment()*managementFee(project);
+ }
+ @Override
+ public double hourlyPay() {
+ double skillRating= 2;
+ return baseRate*skillRating*workTime;
+ }
+ public double managementFee(DevelopProjects project) {
+ if (project != null) {
+ double surcharge = 1 + (project.getEngineers().size() * 5) / 100;
+ if (surcharge >= 1.5)
+ surcharge = 1.5;
+ return surcharge;
+ }
+ else
+ return 1;
+ }
+ //---------------------------------------------------------
+}
\ No newline at end of file
diff --git a/src/main/java/Staff/Tester.java b/src/main/java/Staff/Tester.java
new file mode 100644
index 0000000..3acfbbe
--- /dev/null
+++ b/src/main/java/Staff/Tester.java
@@ -0,0 +1,19 @@
+package Staff;
+
+class Tester extends Engineer{
+
+ //constructor
+ public Tester(int id, String fio, int workTime, DeveloperCompany company) {
+ super(id, fio, workTime, company);
+ position = "Tester";
+ }
+ //---------------------------------------------------------
+
+ //methods
+ @Override
+ public double hourlyPay() {
+ double skillRating= 1.7;
+ return baseRate*skillRating*workTime;
+ }
+ //---------------------------------------------------------
+}
diff --git a/src/main/resources/projects.json b/src/main/resources/projects.json
new file mode 100644
index 0000000..078b558
--- /dev/null
+++ b/src/main/resources/projects.json
@@ -0,0 +1,62 @@
+[
+ {
+ "id": 1,
+ "title": "Root Insurance",
+ "budget": 140000
+ },
+ {
+ "id": 2,
+ "title": "StockX",
+ "budget": 160000
+ },
+ {
+ "id": 3,
+ "title": "PlayVS",
+ "budget": 186000
+ },
+ {
+ "id": 4,
+ "title": "ShipBob",
+ "budget": 166000
+ },
+ {
+ "id": 5,
+ "title": "K4Connect",
+ "budget": 170000
+ },
+ {
+ "id": 6,
+ "title": "ExemptMeNow",
+ "budget": 190000
+ },
+ {
+ "id": 7,
+ "title": "Goodr",
+ "budget": 160000
+ },
+ {
+ "id": 8,
+ "title": "Understory Weather",
+ "budget": 200000
+ },
+ {
+ "id": 9,
+ "title": "MetaCX",
+ "budget": 185000
+ },
+ {
+ "id": 10,
+ "title": "Scale AI",
+ "budget": 170000
+ },
+ {
+ "id": 11,
+ "title": "UiPath",
+ "budget": 180000
+ },
+ {
+ "id": 12,
+ "title": "The Travel Line",
+ "budget": 200000
+ }
+]
\ No newline at end of file
diff --git a/src/main/resources/stuff.json b/src/main/resources/stuff.json
new file mode 100644
index 0000000..1482fde
--- /dev/null
+++ b/src/main/resources/stuff.json
@@ -0,0 +1,885 @@
+[
+
+ {
+ "id": 1032,
+ "position": "driver",
+ "fio": "Погребнова Оксана Тимуровна",
+ "workTime": 140
+ },
+ {
+ "id": 1033,
+ "position": "driver",
+ "fio": "Репин Викентий Якубович",
+ "workTime": 160
+ },
+ {
+ "id": 1034,
+ "position": "driver",
+ "fio": "Холод Игнатий Агапович",
+ "workTime": 186
+ },
+ {
+ "id": 1035,
+ "position": "driver",
+ "fio": "Аронова Валентина Вячеславовна",
+ "workTime": 166
+ },
+ {
+ "id": 1036,
+ "position": "cleaner",
+ "fio": "Сапалёв Андрон Денисович",
+ "workTime": 80
+ },
+ {
+ "id": 1037,
+ "position": "cleaner",
+ "fio": "Шаньгина Агафья Фомевна",
+ "workTime": 80
+ },
+ {
+ "id": 1038,
+ "position": "cleaner",
+ "fio": "Ильясов Валентин Всеволодович",
+ "workTime": 160
+ },
+ {
+ "id": 1039,
+ "position": "cleaner",
+ "fio": "Лапухина Христина Анатолиевна",
+ "workTime": 80
+ },
+ {
+ "id": 1040,
+ "position": "cleaner",
+ "fio": "Ягутян Самсон Фомевич",
+ "workTime": 80
+ },
+ {
+ "id": 1041,
+ "position": "cleaner",
+ "fio": "Лямин Данила Панкратиевич",
+ "workTime": 80
+ },
+ {
+ "id": 1042,
+ "position": "cleaner",
+ "fio": "Тяпичева Евгения Трофимовна",
+ "workTime": 80
+ },
+ {
+ "id": 1043,
+ "position": "cleaner",
+ "fio": "Яшуков Вацлав Никонович",
+ "workTime": 80
+ },
+ {
+ "id": 1044,
+ "position": "cleaner",
+ "fio": "Кружкова Христина Афанасиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1045,
+ "position": "cleaner",
+ "fio": "Каверин Евсей Ульянович",
+ "workTime": 80
+ },
+ {
+ "id": 1046,
+ "position": "programmer",
+ "fio": "Мячин Чеслав Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 1047,
+ "position": "programmer",
+ "fio": "Эмских Герасим Евграфович",
+ "workTime": 160
+ },
+ {
+ "id": 1048,
+ "position": "programmer",
+ "fio": "Нюхтилин Степан Ефремович",
+ "workTime": 160
+ },
+ {
+ "id": 1049,
+ "position": "programmer",
+ "fio": "Степнов Викентий Сигизмундович",
+ "workTime": 160
+ },
+ {
+ "id": 1050,
+ "position": "programmer",
+ "fio": "Делов Прохор Кондратович",
+ "workTime": 160
+ },
+ {
+ "id": 1051,
+ "position": "programmer",
+ "fio": "Котов Всеволод Игоревич",
+ "workTime": 160
+ },
+ {
+ "id": 1052,
+ "position": "programmer",
+ "fio": "Львов Архип Всеволодович",
+ "workTime": 160
+ },
+ {
+ "id": 1053,
+ "position": "programmer",
+ "fio": "Гибазова Ксения Вячеславовна",
+ "workTime": 160
+ },
+ {
+ "id": 1054,
+ "position": "programmer",
+ "fio": "Александрова Зинаида Александровна",
+ "workTime": 160
+ },
+ {
+ "id": 1055,
+ "position": "programmer",
+ "fio": "Экземплярский Самуил Изяславович",
+ "workTime": 160
+ },
+ {
+ "id": 1056,
+ "position": "programmer",
+ "fio": "Щередина Екатерина Павеловна",
+ "workTime": 160
+ },
+ {
+ "id": 1057,
+ "position": "programmer",
+ "fio": "Макушев Гавриил Григориевич",
+ "workTime": 160
+ },
+ {
+ "id": 1058,
+ "position": "programmer",
+ "fio": "Стрельников Руслан Давыдович",
+ "workTime": 160
+ },
+ {
+ "id": 1059,
+ "position": "programmer",
+ "fio": "Колтышев Вячеслав Игоревич",
+ "workTime": 160
+ },
+ {
+ "id": 1060,
+ "position": "programmer",
+ "fio": "Жвиков Емельян Самсонович",
+ "workTime": 160
+ },
+ {
+ "id": 1061,
+ "position": "programmer",
+ "fio": "Гайдученко Агап Миронович",
+ "workTime": 160
+ },
+ {
+ "id": 1062,
+ "position": "programmer",
+ "fio": "Янушкене Богдан Елисеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1063,
+ "position": "programmer",
+ "fio": "Соломахина Лариса Родионовна",
+ "workTime": 160
+ },
+ {
+ "id": 1064,
+ "position": "programmer",
+ "fio": "Невшупа Екатерина Георгиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1065,
+ "position": "programmer",
+ "fio": "Цызырева Влада Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1066,
+ "position": "programmer",
+ "fio": "Ерохин Назар Артемиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1067,
+ "position": "programmer",
+ "fio": "Савинков Фома Моисеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1068,
+ "position": "programmer",
+ "fio": "Дмитриев Вадим Андроникович",
+ "workTime": 160
+ },
+ {
+ "id": 1069,
+ "position": "programmer",
+ "fio": "Богачёв Гавриил Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 1070,
+ "position": "programmer",
+ "fio": "Чибисова Диана Захаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1071,
+ "position": "programmer",
+ "fio": "Ямов Виктор Валерьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1072,
+ "position": "programmer",
+ "fio": "Косинова Полина Кузьмевна",
+ "workTime": 160
+ },
+ {
+ "id": 1073,
+ "position": "programmer",
+ "fio": "Ханцев Федор Георгиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1074,
+ "position": "programmer",
+ "fio": "Ящин Мефодий Никифорович",
+ "workTime": 160
+ },
+ {
+ "id": 1075,
+ "position": "programmer",
+ "fio": "Чиркаш Давид Несторович",
+ "workTime": 160
+ },
+ {
+ "id": 1076,
+ "position": "programmer",
+ "fio": "Яманов Кузьма Захарович",
+ "workTime": 160
+ },
+ {
+ "id": 1077,
+ "position": "programmer",
+ "fio": "Викаш Александр Кондратович",
+ "workTime": 160
+ },
+ {
+ "id": 1078,
+ "position": "programmer",
+ "fio": "Эсаулова Мирослава Андрияновна",
+ "workTime": 160
+ },
+ {
+ "id": 1079,
+ "position": "programmer",
+ "fio": "Сидоров Иннокентий Юриевич",
+ "workTime": 160
+ },
+ {
+ "id": 1080,
+ "position": "programmer",
+ "fio": "Королёва Милена Борисовна",
+ "workTime": 160
+ },
+ {
+ "id": 1081,
+ "position": "programmer",
+ "fio": "Ларичев Венедикт Проклович",
+ "workTime": 160
+ },
+ {
+ "id": 1082,
+ "position": "programmer",
+ "fio": "Рыбакова Евдокия Станиславовна",
+ "workTime": 160
+ },
+ {
+ "id": 1083,
+ "position": "programmer",
+ "fio": "Белоусова Пелагея Владиленовна",
+ "workTime": 160
+ },
+ {
+ "id": 1084,
+ "position": "programmer",
+ "fio": "Кондучалова Ефросинья Алексеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1085,
+ "position": "programmer",
+ "fio": "Торсунова Эвелина Тимофеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1086,
+ "position": "programmer",
+ "fio": "Карпенцев Герасим Демьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1087,
+ "position": "programmer",
+ "fio": "Якубова Регина Феликсовна",
+ "workTime": 160
+ },
+ {
+ "id": 1088,
+ "position": "programmer",
+ "fio": "Ягфаров Андрей Самуилович",
+ "workTime": 160
+ },
+ {
+ "id": 1089,
+ "position": "programmer",
+ "fio": "Ожегова Ксения Данилевна",
+ "workTime": 160
+ },
+ {
+ "id": 1090,
+ "position": "programmer",
+ "fio": "Карданова Агния Анатолиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1091,
+ "position": "programmer",
+ "fio": "Сиянскиха Екатерина Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1092,
+ "position": "programmer",
+ "fio": "Усов Олег Евграфович",
+ "workTime": 160
+ },
+ {
+ "id": 1093,
+ "position": "programmer",
+ "fio": "Каменева Лариса Давидовна",
+ "workTime": 160
+ },
+ {
+ "id": 1094,
+ "position": "tester",
+ "fio": "Жжёнова Эльвира Геннадиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1095,
+ "position": "tester",
+ "fio": "Валуева Ирина Анатолиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1096,
+ "position": "tester",
+ "fio": "Дудченко Ульяна Георгиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1097,
+ "position": "tester",
+ "fio": "Якушин Валерьян Эрнестович",
+ "workTime": 160
+ },
+ {
+ "id": 1098,
+ "position": "tester",
+ "fio": "Эмануиль Гавриил Григориевич",
+ "workTime": 160
+ },
+ {
+ "id": 1099,
+ "position": "tester",
+ "fio": "Игнатова Оксана Филипповна",
+ "workTime": 160
+ },
+ {
+ "id": 1100,
+ "position": "tester",
+ "fio": "Ясинова Раиса Ивановна",
+ "workTime": 160
+ },
+ {
+ "id": 1101,
+ "position": "tester",
+ "fio": "Ажикелямова Владислава Филипповна",
+ "workTime": 160
+ },
+ {
+ "id": 1102,
+ "position": "tester",
+ "fio": "Ермишина Ярослава Степановна",
+ "workTime": 160
+ },
+ {
+ "id": 1103,
+ "position": "tester",
+ "fio": "Пичугина Инесса Святославовна",
+ "workTime": 160
+ },
+ {
+ "id": 1104,
+ "position": "tester",
+ "fio": "Тамахин Дмитрий Григориевич",
+ "workTime": 160
+ },
+ {
+ "id": 1105,
+ "position": "tester",
+ "fio": "Толбоева Зоя Яновна",
+ "workTime": 160
+ },
+ {
+ "id": 1106,
+ "position": "tester",
+ "fio": "Зёмина Владлена Федоровна",
+ "workTime": 160
+ },
+ {
+ "id": 1107,
+ "position": "tester",
+ "fio": "Глоба Стела Борисовна",
+ "workTime": 160
+ },
+ {
+ "id": 1108,
+ "position": "tester",
+ "fio": "Буданов Юлий Викентиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1109,
+ "position": "tester",
+ "fio": "Бородин Виталий Вячеславович",
+ "workTime": 160
+ },
+ {
+ "id": 1110,
+ "position": "tester",
+ "fio": "Разбойникова Виктория Никитевна",
+ "workTime": 160
+ },
+ {
+ "id": 1111,
+ "position": "tester",
+ "fio": "Миронова Жанна Несторовна",
+ "workTime": 160
+ },
+ {
+ "id": 1112,
+ "position": "tester",
+ "fio": "Землякова Агата Ильевна",
+ "workTime": 160
+ },
+ {
+ "id": 1113,
+ "position": "tester",
+ "fio": "Скуратов Бронислав Онисимович",
+ "workTime": 160
+ },
+ {
+ "id": 1114,
+ "position": "tester",
+ "fio": "Толбанов Евдоким Прокофиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1115,
+ "position": "tester",
+ "fio": "Ерзова Берта Трофимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1116,
+ "position": "tester",
+ "fio": "Михайличенко Зиновий Натанович",
+ "workTime": 160
+ },
+ {
+ "id": 1117,
+ "position": "tester",
+ "fio": "Столярова Ираида Владленовна",
+ "workTime": 160
+ },
+ {
+ "id": 1118,
+ "position": "tester",
+ "fio": "Халипова Владлена Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1119,
+ "position": "tester",
+ "fio": "Муравей Евграф Мартьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1120,
+ "position": "tester",
+ "fio": "Языкина Лада Ильевна",
+ "workTime": 160
+ },
+ {
+ "id": 1121,
+ "position": "tester",
+ "fio": "Арзамасцева Анисья Потаповна",
+ "workTime": 160
+ },
+ {
+ "id": 1122,
+ "position": "tester",
+ "fio": "Неделяев Ипполит Богданович",
+ "workTime": 160
+ },
+ {
+ "id": 1123,
+ "position": "tester",
+ "fio": "Мозговой Татьяна Степановна",
+ "workTime": 160
+ },
+ {
+ "id": 1124,
+ "position": "tester",
+ "fio": "Дешевых Изяслав Ипатович",
+ "workTime": 160
+ },
+ {
+ "id": 1125,
+ "position": "tester",
+ "fio": "Плюхина Алиса Ефимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1126,
+ "position": "tester",
+ "fio": "Ямбаев Александр Мартьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1127,
+ "position": "tester",
+ "fio": "Веденина Ульяна Алексеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1128,
+ "position": "tester",
+ "fio": "Павлова Маргарита Семеновна",
+ "workTime": 160
+ },
+ {
+ "id": 1129,
+ "position": "tester",
+ "fio": "Сабитова Светлана Игнатиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1130,
+ "position": "teamLeader",
+ "fio": "Ярмолинский Тимур Богданович",
+ "workTime": 160
+ },
+ {
+ "id": 1131,
+ "position": "teamLeader",
+ "fio": "Поздова Дарья Василиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1132,
+ "position": "teamLeader",
+ "fio": "Завьялова Лидия Тимофеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1133,
+ "position": "teamLeader",
+ "fio": "Нырко Данила Никифорович",
+ "workTime": 160
+ },
+ {
+ "id": 1134,
+ "position": "teamLeader",
+ "fio": "Плахтюрин Геннадий Платонович",
+ "workTime": 160
+ },
+ {
+ "id": 1135,
+ "position": "teamLeader",
+ "fio": "Тамило Кузьма Ираклиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1136,
+ "position": "teamLeader",
+ "fio": "Лукина Варвара Давидовна",
+ "workTime": 160
+ },
+ {
+ "id": 1137,
+ "position": "teamLeader",
+ "fio": "Сьянова Виктория Филипповна",
+ "workTime": 160
+ },
+ {
+ "id": 1138,
+ "position": "teamLeader",
+ "fio": "Мохов Андрон Маркович",
+ "workTime": 160
+ },
+ {
+ "id": 1139,
+ "position": "teamLeader",
+ "fio": "Осин Аким Федосиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1140,
+ "position": "teamLeader",
+ "fio": "Сорокина Альбина Никитевна",
+ "workTime": 160
+ },
+ {
+ "id": 1141,
+ "position": "teamLeader",
+ "fio": "Тетерина Людмила Фомевна",
+ "workTime": 160
+ },
+ {
+ "id": 1142,
+ "position": "manager",
+ "fio": "Вольпов Владилен Еремеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1143,
+ "position": "manager",
+ "fio": "Абдулов Семен Вячеславович",
+ "workTime": 160
+ },
+ {
+ "id": 1144,
+ "position": "manager",
+ "fio": "Чебыкина Мирослава Федотовна",
+ "workTime": 160
+ },
+ {
+ "id": 1145,
+ "position": "manager",
+ "fio": "Кобелева Александра Фомевна",
+ "workTime": 160
+ },
+ {
+ "id": 1146,
+ "position": "manager",
+ "fio": "Киреев Петр Измаилович",
+ "workTime": 160
+ },
+ {
+ "id": 1147,
+ "position": "manager",
+ "fio": "Осипова Эльвира Якововна",
+ "workTime": 160
+ },
+ {
+ "id": 1148,
+ "position": "manager",
+ "fio": "Мальцев Даниил Якубович",
+ "workTime": 160
+ },
+ {
+ "id": 1149,
+ "position": "manager",
+ "fio": "Абоимова Нина Ефимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1150,
+ "position": "manager",
+ "fio": "Мадулин Кузьма Проклович",
+ "workTime": 160
+ },
+ {
+ "id": 1151,
+ "position": "manager",
+ "fio": "Ковалев Рубен Филиппович",
+ "workTime": 160
+ },
+ {
+ "id": 1152,
+ "position": "manager",
+ "fio": "Львов Артур Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 1153,
+ "position": "manager",
+ "fio": "Ефремова Галина Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1154,
+ "position": "manager",
+ "fio": "Разуваева Виктория Николаевна",
+ "workTime": 160
+ },
+ {
+ "id": 1155,
+ "position": "manager",
+ "fio": "Таттар Игнатий Филимонович",
+ "workTime": 160
+ },
+ {
+ "id": 1156,
+ "position": "manager",
+ "fio": "Жичкина Юлия Германовна",
+ "workTime": 160
+ },
+ {
+ "id": 1157,
+ "position": "manager",
+ "fio": "Салтанова Агата Никитевна",
+ "workTime": 160
+ },
+ {
+ "id": 1158,
+ "position": "manager",
+ "fio": "Смелоч Казимир Дмитриевич",
+ "workTime": 160
+ },
+ {
+ "id": 1159,
+ "position": "manager",
+ "fio": "Кутяков Чеслав Ростиславович",
+ "workTime": 160
+ },
+ {
+ "id": 1160,
+ "position": "manager",
+ "fio": "Невьянцев Ипполит Маркович",
+ "workTime": 160
+ },
+ {
+ "id": 1161,
+ "position": "manager",
+ "fio": "Николаева Галина Давидовна",
+ "workTime": 160
+ },
+ {
+ "id": 1162,
+ "position": "manager",
+ "fio": "Венедиктов Мстислав Сидорович",
+ "workTime": 160
+ },
+ {
+ "id": 1163,
+ "position": "manager",
+ "fio": "Дубов Бронислав Семенович",
+ "workTime": 160
+ },
+ {
+ "id": 1164,
+ "position": "manager",
+ "fio": "Букова Василиса Петровна",
+ "workTime": 160
+ },
+ {
+ "id": 1165,
+ "position": "manager",
+ "fio": "Ягемана Алиса Петровна",
+ "workTime": 160
+ },
+ {
+ "id": 1166,
+ "position": "projectManager",
+ "fio": "Куксюка Эльвира Виталиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1167,
+ "position": "projectManager",
+ "fio": "Лашкина Ульяна Серафимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1168,
+ "position": "projectManager",
+ "fio": "Рясной Бронислав Герасимович",
+ "workTime": 160
+ },
+ {
+ "id": 1169,
+ "position": "projectManager",
+ "fio": "Акимова Алиса Ростиславовна",
+ "workTime": 160
+ },
+ {
+ "id": 1170,
+ "position": "projectManager",
+ "fio": "Пашин Станислав Никифорович",
+ "workTime": 160
+ },
+ {
+ "id": 1171,
+ "position": "projectManager",
+ "fio": "Кузьмова Фаина Кузьмевна",
+ "workTime": 160
+ },
+ {
+ "id": 1172,
+ "position": "projectManager",
+ "fio": "Сластников Степан Гаврилевич",
+ "workTime": 160
+ },
+ {
+ "id": 1173,
+ "position": "projectManager",
+ "fio": "Масмех Казимир Анатолиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1174,
+ "position": "projectManager",
+ "fio": "Агеев Афанасий Георгиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1175,
+ "position": "projectManager",
+ "fio": "Прилуцкий Вячеслав Гордеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1176,
+ "position": "projectManager",
+ "fio": "Бабкин Аким Евграфович",
+ "workTime": 160
+ },
+ {
+ "id": 1177,
+ "position": "projectManager",
+ "fio": "Курневича Галина Захаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1178,
+ "position": "seniorManager",
+ "fio": "Энгельгардт Пимен Артемиевич",
+ "workTime": 160
+ }
+]
\ No newline at end of file
diff --git a/src/main/resources/testProject.json b/src/main/resources/testProject.json
new file mode 100644
index 0000000..8000340
--- /dev/null
+++ b/src/main/resources/testProject.json
@@ -0,0 +1,7 @@
+[
+ {
+ "id": 1,
+ "title": "Root Insurance",
+ "budget": 300000
+ }
+]
\ No newline at end of file
diff --git a/src/main/resources/testStuff.json b/src/main/resources/testStuff.json
new file mode 100644
index 0000000..89d5401
--- /dev/null
+++ b/src/main/resources/testStuff.json
@@ -0,0 +1,51 @@
+[
+
+ {
+ "id": 1,
+ "position": "driver",
+ "fio": "Погребнова Оксана Тимуровна",
+ "workTime": 160
+ },
+ {
+ "id": 2,
+ "position": "cleaner",
+ "fio": "Сапалёв Андрон Денисович",
+ "workTime": 160
+ },
+ {
+ "id": 3,
+ "position": "programmer",
+ "fio": "Мячин Чеслав Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 4,
+ "position": "tester",
+ "fio": "Валуева Ирина Анатолиевна",
+ "workTime": 160
+ },
+ {
+ "id": 5,
+ "position": "teamLeader",
+ "fio": "Тамило Кузьма Ираклиевич",
+ "workTime": 160
+ },
+ {
+ "id": 6,
+ "position": "manager",
+ "fio": "Киреев Петр Измаилович",
+ "workTime": 160
+ },
+ {
+ "id": 7,
+ "position": "projectManager",
+ "fio": "Рясной Бронислав Герасимович",
+ "workTime": 160
+ },
+ {
+ "id": 8,
+ "position": "seniorManager",
+ "fio": "Энгельгардт Пимен Артемиевич",
+ "workTime": 160
+ }
+]
\ No newline at end of file
diff --git a/src/test/java/Staff/DeveloperCompanyTest.java b/src/test/java/Staff/DeveloperCompanyTest.java
new file mode 100644
index 0000000..a923532
--- /dev/null
+++ b/src/test/java/Staff/DeveloperCompanyTest.java
@@ -0,0 +1,39 @@
+package Staff;
+
+import static org.junit.Assert.*;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+
+public class DeveloperCompanyTest {
+ DeveloperCompany geeks = new DeveloperCompany("Geeks", 180);
+
+
+ @Test
+ public void aTest() {
+ geeks.companyCreation("/testStuff.json");
+ geeks.addProjects("/testProject.json");
+ assertEquals(180,geeks.getBaseRate());
+ assertEquals(8, geeks.getNumberOfEmployee());
+ geeks.accrualOfSalary();
+ assertEquals(0, geeks.getManagers().get(0).getPayment(), 0.1);
+ }
+
+ @Test
+ public void bTest(){
+ geeks.companyCreation("/testStuff.json");
+ geeks.addProjects("/testProject.json");
+ geeks.assignPerformers();
+ geeks.prepareForPayment();
+ assertEquals(geeks.getDevelopProjects().get(0).getBudget()*0.05, geeks.getSeniorManager().projectPayment(geeks.getDevelopProjects().get(0)), 0.1);
+ assertEquals(geeks.getProgrammers().get(0).projectPayment(), geeks.getTesters().get(0).projectPayment(), 0.1);
+ geeks.accrualOfSalary();
+ assertEquals(geeks.getCleaners().get(0).getPayment()*1.2, geeks.getDrivers().get(0).getPayment(), 0.1);
+ assertEquals(geeks.getDevelopProjects().get(0), geeks.getManagers().get(0).getProject());
+ assertEquals(1.15, geeks.getProjectManagers().get(0).managementFee(geeks.getDevelopProjects().get(0)),0.1);
+
+ }
+
+}
\ No newline at end of file
diff --git a/stuff.json b/stuff.json
new file mode 100644
index 0000000..de84a6f
--- /dev/null
+++ b/stuff.json
@@ -0,0 +1 @@
+[{"payment":30240.0,"id":1032,"position":"Driver","fio":"Погребнова Оксана Тимуровна","workTime":140},{"payment":34560.0,"id":1033,"position":"Driver","fio":"Репин Викентий Якубович","workTime":160},{"payment":45792.0,"id":1034,"position":"Driver","fio":"Холод Игнатий Агапович","workTime":186},{"payment":37152.0,"id":1035,"position":"Driver","fio":"Аронова Валентина Вячеславовна","workTime":166},{"payment":14400.0,"id":1036,"position":"Cleaner","fio":"Сапалёв Андрон Денисович","workTime":80},{"payment":14400.0,"id":1037,"position":"Cleaner","fio":"Шаньгина Агафья Фомевна","workTime":80},{"payment":28800.0,"id":1038,"position":"Cleaner","fio":"Ильясов Валентин Всеволодович","workTime":160},{"payment":14400.0,"id":1039,"position":"Cleaner","fio":"Лапухина Христина Анатолиевна","workTime":80},{"payment":14400.0,"id":1040,"position":"Cleaner","fio":"Ягутян Самсон Фомевич","workTime":80},{"payment":14400.0,"id":1041,"position":"Cleaner","fio":"Лямин Данила Панкратиевич","workTime":80},{"payment":14400.0,"id":1042,"position":"Cleaner","fio":"Тяпичева Евгения Трофимовна","workTime":80},{"payment":14400.0,"id":1043,"position":"Cleaner","fio":"Яшуков Вацлав Никонович","workTime":80},{"payment":28800.0,"id":1044,"position":"Cleaner","fio":"Кружкова Христина Афанасиевна","workTime":160},{"payment":14400.0,"id":1045,"position":"Cleaner","fio":"Каверин Евсей Ульянович","workTime":80},{"payment":58840.0,"id":1046,"position":"Programmer","fio":"Мячин Чеслав Карлович","workTime":160},{"payment":58840.0,"id":1047,"position":"Programmer","fio":"Эмских Герасим Евграфович","workTime":160},{"payment":58840.0,"id":1048,"position":"Programmer","fio":"Нюхтилин Степан Ефремович","workTime":160},{"payment":58840.0,"id":1049,"position":"Programmer","fio":"Степнов Викентий Сигизмундович","workTime":160},{"payment":59840.0,"id":1050,"position":"Programmer","fio":"Делов Прохор Кондратович","workTime":160},{"payment":59840.0,"id":1051,"position":"Programmer","fio":"Котов Всеволод Игоревич","workTime":160},{"payment":59840.0,"id":1052,"position":"Programmer","fio":"Львов Архип Всеволодович","workTime":160},{"payment":59840.0,"id":1053,"position":"Programmer","fio":"Гибазова Ксения Вячеславовна","workTime":160},{"payment":61140.0,"id":1054,"position":"Programmer","fio":"Александрова Зинаида Александровна","workTime":160},{"payment":61140.0,"id":1055,"position":"Programmer","fio":"Экземплярский Самуил Изяславович","workTime":160},{"payment":61140.0,"id":1056,"position":"Programmer","fio":"Щередина Екатерина Павеловна","workTime":160},{"payment":61140.0,"id":1057,"position":"Programmer","fio":"Макушев Гавриил Григориевич","workTime":160},{"payment":60140.0,"id":1058,"position":"Programmer","fio":"Стрельников Руслан Давыдович","workTime":160},{"payment":60140.0,"id":1059,"position":"Programmer","fio":"Колтышев Вячеслав Игоревич","workTime":160},{"payment":60140.0,"id":1060,"position":"Programmer","fio":"Жвиков Емельян Самсонович","workTime":160},{"payment":60140.0,"id":1061,"position":"Programmer","fio":"Гайдученко Агап Миронович","workTime":160},{"payment":60340.0,"id":1062,"position":"Programmer","fio":"Янушкене Богдан Елисеевич","workTime":160},{"payment":60340.0,"id":1063,"position":"Programmer","fio":"Соломахина Лариса Родионовна","workTime":160},{"payment":60340.0,"id":1064,"position":"Programmer","fio":"Невшупа Екатерина Георгиевна","workTime":160},{"payment":60340.0,"id":1065,"position":"Programmer","fio":"Цызырева Влада Елизаровна","workTime":160},{"payment":61340.0,"id":1066,"position":"Programmer","fio":"Ерохин Назар Артемиевич","workTime":160},{"payment":61340.0,"id":1067,"position":"Programmer","fio":"Савинков Фома Моисеевич","workTime":160},{"payment":61340.0,"id":1068,"position":"Programmer","fio":"Дмитриев Вадим Андроникович","workTime":160},{"payment":61340.0,"id":1069,"position":"Programmer","fio":"Богачёв Гавриил Карлович","workTime":160},{"payment":59840.0,"id":1070,"position":"Programmer","fio":"Чибисова Диана Захаровна","workTime":160},{"payment":59840.0,"id":1071,"position":"Programmer","fio":"Ямов Виктор Валерьянович","workTime":160},{"payment":59840.0,"id":1072,"position":"Programmer","fio":"Косинова Полина Кузьмевна","workTime":160},{"payment":59840.0,"id":1073,"position":"Programmer","fio":"Ханцев Федор Георгиевич","workTime":160},{"payment":61840.0,"id":1074,"position":"Programmer","fio":"Ящин Мефодий Никифорович","workTime":160},{"payment":61840.0,"id":1075,"position":"Programmer","fio":"Чиркаш Давид Несторович","workTime":160},{"payment":61840.0,"id":1076,"position":"Programmer","fio":"Яманов Кузьма Захарович","workTime":160},{"payment":61840.0,"id":1077,"position":"Programmer","fio":"Викаш Александр Кондратович","workTime":160},{"payment":61090.0,"id":1078,"position":"Programmer","fio":"Эсаулова Мирослава Андрияновна","workTime":160},{"payment":61090.0,"id":1079,"position":"Programmer","fio":"Сидоров Иннокентий Юриевич","workTime":160},{"payment":61090.0,"id":1080,"position":"Programmer","fio":"Королёва Милена Борисовна","workTime":160},{"payment":61090.0,"id":1081,"position":"Programmer","fio":"Ларичев Венедикт Проклович","workTime":160},{"payment":60340.0,"id":1082,"position":"Programmer","fio":"Рыбакова Евдокия Станиславовна","workTime":160},{"payment":60340.0,"id":1083,"position":"Programmer","fio":"Белоусова Пелагея Владиленовна","workTime":160},{"payment":60340.0,"id":1084,"position":"Programmer","fio":"Кондучалова Ефросинья Алексеевна","workTime":160},{"payment":60340.0,"id":1085,"position":"Programmer","fio":"Торсунова Эвелина Тимофеевна","workTime":160},{"payment":60840.0,"id":1086,"position":"Programmer","fio":"Карпенцев Герасим Демьянович","workTime":160},{"payment":60840.0,"id":1087,"position":"Programmer","fio":"Якубова Регина Феликсовна","workTime":160},{"payment":60840.0,"id":1088,"position":"Programmer","fio":"Ягфаров Андрей Самуилович","workTime":160},{"payment":60840.0,"id":1089,"position":"Programmer","fio":"Ожегова Ксения Данилевна","workTime":160},{"payment":61840.0,"id":1090,"position":"Programmer","fio":"Карданова Агния Анатолиевна","workTime":160},{"payment":61840.0,"id":1091,"position":"Programmer","fio":"Сиянскиха Екатерина Елизаровна","workTime":160},{"payment":61840.0,"id":1092,"position":"Programmer","fio":"Усов Олег Евграфович","workTime":160},{"payment":61840.0,"id":1093,"position":"Programmer","fio":"Каменева Лариса Давидовна","workTime":160},{"payment":55960.0,"id":1094,"position":"Tester","fio":"Жжёнова Эльвира Геннадиевна","workTime":160},{"payment":55960.0,"id":1095,"position":"Tester","fio":"Валуева Ирина Анатолиевна","workTime":160},{"payment":55960.0,"id":1096,"position":"Tester","fio":"Дудченко Ульяна Георгиевна","workTime":160},{"payment":56960.0,"id":1097,"position":"Tester","fio":"Якушин Валерьян Эрнестович","workTime":160},{"payment":56960.0,"id":1098,"position":"Tester","fio":"Эмануиль Гавриил Григориевич","workTime":160},{"payment":56960.0,"id":1099,"position":"Tester","fio":"Игнатова Оксана Филипповна","workTime":160},{"payment":58260.0,"id":1100,"position":"Tester","fio":"Ясинова Раиса Ивановна","workTime":160},{"payment":58260.0,"id":1101,"position":"Tester","fio":"Ажикелямова Владислава Филипповна","workTime":160},{"payment":58260.0,"id":1102,"position":"Tester","fio":"Ермишина Ярослава Степановна","workTime":160},{"payment":57260.0,"id":1103,"position":"Tester","fio":"Пичугина Инесса Святославовна","workTime":160},{"payment":57260.0,"id":1104,"position":"Tester","fio":"Тамахин Дмитрий Григориевич","workTime":160},{"payment":57260.0,"id":1105,"position":"Tester","fio":"Толбоева Зоя Яновна","workTime":160},{"payment":57460.0,"id":1106,"position":"Tester","fio":"Зёмина Владлена Федоровна","workTime":160},{"payment":57460.0,"id":1107,"position":"Tester","fio":"Глоба Стела Борисовна","workTime":160},{"payment":57460.0,"id":1108,"position":"Tester","fio":"Буданов Юлий Викентиевич","workTime":160},{"payment":58460.0,"id":1109,"position":"Tester","fio":"Бородин Виталий Вячеславович","workTime":160},{"payment":58460.0,"id":1110,"position":"Tester","fio":"Разбойникова Виктория Никитевна","workTime":160},{"payment":58460.0,"id":1111,"position":"Tester","fio":"Миронова Жанна Несторовна","workTime":160},{"payment":56960.0,"id":1112,"position":"Tester","fio":"Землякова Агата Ильевна","workTime":160},{"payment":56960.0,"id":1113,"position":"Tester","fio":"Скуратов Бронислав Онисимович","workTime":160},{"payment":56960.0,"id":1114,"position":"Tester","fio":"Толбанов Евдоким Прокофиевич","workTime":160},{"payment":58960.0,"id":1115,"position":"Tester","fio":"Ерзова Берта Трофимовна","workTime":160},{"payment":58960.0,"id":1116,"position":"Tester","fio":"Михайличенко Зиновий Натанович","workTime":160},{"payment":58960.0,"id":1117,"position":"Tester","fio":"Столярова Ираида Владленовна","workTime":160},{"payment":58210.0,"id":1118,"position":"Tester","fio":"Халипова Владлена Елизаровна","workTime":160},{"payment":58210.0,"id":1119,"position":"Tester","fio":"Муравей Евграф Мартьянович","workTime":160},{"payment":58210.0,"id":1120,"position":"Tester","fio":"Языкина Лада Ильевна","workTime":160},{"payment":57460.0,"id":1121,"position":"Tester","fio":"Арзамасцева Анисья Потаповна","workTime":160},{"payment":57460.0,"id":1122,"position":"Tester","fio":"Неделяев Ипполит Богданович","workTime":160},{"payment":57460.0,"id":1123,"position":"Tester","fio":"Мозговой Татьяна Степановна","workTime":160},{"payment":57960.0,"id":1124,"position":"Tester","fio":"Дешевых Изяслав Ипатович","workTime":160},{"payment":57960.0,"id":1125,"position":"Tester","fio":"Плюхина Алиса Ефимовна","workTime":160},{"payment":57960.0,"id":1126,"position":"Tester","fio":"Ямбаев Александр Мартьянович","workTime":160},{"payment":58960.0,"id":1127,"position":"Tester","fio":"Веденина Ульяна Алексеевна","workTime":160},{"payment":58960.0,"id":1128,"position":"Tester","fio":"Павлова Маргарита Семеновна","workTime":160},{"payment":58960.0,"id":1129,"position":"Tester","fio":"Сабитова Светлана Игнатиевна","workTime":160},{"payment":64600.0,"id":1130,"position":"Team Leader","fio":"Ярмолинский Тимур Богданович","workTime":160},{"payment":65600.0,"id":1131,"position":"Team Leader","fio":"Поздова Дарья Василиевна","workTime":160},{"payment":66900.0,"id":1132,"position":"Team Leader","fio":"Завьялова Лидия Тимофеевна","workTime":160},{"payment":65900.0,"id":1133,"position":"Team Leader","fio":"Нырко Данила Никифорович","workTime":160},{"payment":66100.0,"id":1134,"position":"Team Leader","fio":"Плахтюрин Геннадий Платонович","workTime":160},{"payment":67100.0,"id":1135,"position":"Team Leader","fio":"Тамило Кузьма Ираклиевич","workTime":160},{"payment":65600.0,"id":1136,"position":"Team Leader","fio":"Лукина Варвара Давидовна","workTime":160},{"payment":67600.0,"id":1137,"position":"Team Leader","fio":"Сьянова Виктория Филипповна","workTime":160},{"payment":66850.0,"id":1138,"position":"Team Leader","fio":"Мохов Андрон Маркович","workTime":160},{"payment":66100.0,"id":1139,"position":"Team Leader","fio":"Осин Аким Федосиевич","workTime":160},{"payment":66600.0,"id":1140,"position":"Team Leader","fio":"Сорокина Альбина Никитевна","workTime":160},{"payment":67600.0,"id":1141,"position":"Team Leader","fio":"Тетерина Людмила Фомевна","workTime":160},{"payment":28000.0,"id":1142,"position":"Manager","fio":"Вольпов Владилен Еремеевич","workTime":160},{"payment":28000.0,"id":1143,"position":"Manager","fio":"Абдулов Семен Вячеславович","workTime":160},{"payment":32000.0,"id":1144,"position":"Manager","fio":"Чебыкина Мирослава Федотовна","workTime":160},{"payment":32000.0,"id":1145,"position":"Manager","fio":"Кобелева Александра Фомевна","workTime":160},{"payment":37200.0,"id":1146,"position":"Manager","fio":"Киреев Петр Измаилович","workTime":160},{"payment":37200.0,"id":1147,"position":"Manager","fio":"Осипова Эльвира Якововна","workTime":160},{"payment":33200.0,"id":1148,"position":"Manager","fio":"Мальцев Даниил Якубович","workTime":160},{"payment":33200.0,"id":1149,"position":"Manager","fio":"Абоимова Нина Ефимовна","workTime":160},{"payment":34000.0,"id":1150,"position":"Manager","fio":"Мадулин Кузьма Проклович","workTime":160},{"payment":34000.0,"id":1151,"position":"Manager","fio":"Ковалев Рубен Филиппович","workTime":160},{"payment":38000.0,"id":1152,"position":"Manager","fio":"Львов Артур Карлович","workTime":160},{"payment":38000.0,"id":1153,"position":"Manager","fio":"Ефремова Галина Елизаровна","workTime":160},{"payment":32000.0,"id":1154,"position":"Manager","fio":"Разуваева Виктория Николаевна","workTime":160},{"payment":32000.0,"id":1155,"position":"Manager","fio":"Таттар Игнатий Филимонович","workTime":160},{"payment":40000.0,"id":1156,"position":"Manager","fio":"Жичкина Юлия Германовна","workTime":160},{"payment":40000.0,"id":1157,"position":"Manager","fio":"Салтанова Агата Никитевна","workTime":160},{"payment":37000.0,"id":1158,"position":"Manager","fio":"Смелоч Казимир Дмитриевич","workTime":160},{"payment":37000.0,"id":1159,"position":"Manager","fio":"Кутяков Чеслав Ростиславович","workTime":160},{"payment":34000.0,"id":1160,"position":"Manager","fio":"Невьянцев Ипполит Маркович","workTime":160},{"payment":34000.0,"id":1161,"position":"Manager","fio":"Николаева Галина Давидовна","workTime":160},{"payment":36000.0,"id":1162,"position":"Manager","fio":"Венедиктов Мстислав Сидорович","workTime":160},{"payment":36000.0,"id":1163,"position":"Manager","fio":"Дубов Бронислав Семенович","workTime":160},{"payment":40000.0,"id":1164,"position":"Manager","fio":"Букова Василиса Петровна","workTime":160},{"payment":40000.0,"id":1165,"position":"Manager","fio":"Ягемана Алиса Петровна","workTime":160},{"payment":36400.0,"id":1166,"position":"Project Manager","fio":"Куксюка Эльвира Виталиевна","workTime":160},{"payment":41600.0,"id":1167,"position":"Project Manager","fio":"Лашкина Ульяна Серафимовна","workTime":160},{"payment":48360.0,"id":1168,"position":"Project Manager","fio":"Рясной Бронислав Герасимович","workTime":160},{"payment":43160.0,"id":1169,"position":"Project Manager","fio":"Акимова Алиса Ростиславовна","workTime":160},{"payment":44200.0,"id":1170,"position":"Project Manager","fio":"Пашин Станислав Никифорович","workTime":160},{"payment":49400.0,"id":1171,"position":"Project Manager","fio":"Кузьмова Фаина Кузьмевна","workTime":160},{"payment":41600.0,"id":1172,"position":"Project Manager","fio":"Сластников Степан Гаврилевич","workTime":160},{"payment":52000.0,"id":1173,"position":"Project Manager","fio":"Масмех Казимир Анатолиевич","workTime":160},{"payment":48100.0,"id":1174,"position":"Project Manager","fio":"Агеев Афанасий Георгиевич","workTime":160},{"payment":44200.0,"id":1175,"position":"Project Manager","fio":"Прилуцкий Вячеслав Гордеевич","workTime":160},{"payment":46800.0,"id":1176,"position":"Project Manager","fio":"Бабкин Аким Евграфович","workTime":160},{"payment":52000.0,"id":1177,"position":"Project Manager","fio":"Курневича Галина Захаровна","workTime":160},{"payment":126420.0,"id":1178,"position":"Senior Manager","fio":"Энгельгардт Пимен Артемиевич","workTime":160}]
\ No newline at end of file
diff --git a/target/classes/Lab4.class b/target/classes/Lab4.class
new file mode 100644
index 0000000..9619888
Binary files /dev/null and b/target/classes/Lab4.class differ
diff --git a/target/classes/Staff/Cleaner.class b/target/classes/Staff/Cleaner.class
new file mode 100644
index 0000000..80bbe3f
Binary files /dev/null and b/target/classes/Staff/Cleaner.class differ
diff --git a/target/classes/Staff/DevelopProjects$States.class b/target/classes/Staff/DevelopProjects$States.class
new file mode 100644
index 0000000..915ab0c
Binary files /dev/null and b/target/classes/Staff/DevelopProjects$States.class differ
diff --git a/target/classes/Staff/DevelopProjects.class b/target/classes/Staff/DevelopProjects.class
new file mode 100644
index 0000000..021827e
Binary files /dev/null and b/target/classes/Staff/DevelopProjects.class differ
diff --git a/target/classes/Staff/DeveloperCompany.class b/target/classes/Staff/DeveloperCompany.class
new file mode 100644
index 0000000..25491d2
Binary files /dev/null and b/target/classes/Staff/DeveloperCompany.class differ
diff --git a/target/classes/Staff/Driver.class b/target/classes/Staff/Driver.class
new file mode 100644
index 0000000..5c520c6
Binary files /dev/null and b/target/classes/Staff/Driver.class differ
diff --git a/target/classes/Staff/Employee.class b/target/classes/Staff/Employee.class
new file mode 100644
index 0000000..b9196aa
Binary files /dev/null and b/target/classes/Staff/Employee.class differ
diff --git a/target/classes/Staff/Engineer.class b/target/classes/Staff/Engineer.class
new file mode 100644
index 0000000..13295d3
Binary files /dev/null and b/target/classes/Staff/Engineer.class differ
diff --git a/target/classes/Staff/Heading.class b/target/classes/Staff/Heading.class
new file mode 100644
index 0000000..980767d
Binary files /dev/null and b/target/classes/Staff/Heading.class differ
diff --git a/target/classes/Staff/Manager.class b/target/classes/Staff/Manager.class
new file mode 100644
index 0000000..846c1df
Binary files /dev/null and b/target/classes/Staff/Manager.class differ
diff --git a/target/classes/Staff/Personal.class b/target/classes/Staff/Personal.class
new file mode 100644
index 0000000..ec67001
Binary files /dev/null and b/target/classes/Staff/Personal.class differ
diff --git a/target/classes/Staff/Programmer.class b/target/classes/Staff/Programmer.class
new file mode 100644
index 0000000..b3efc93
Binary files /dev/null and b/target/classes/Staff/Programmer.class differ
diff --git a/target/classes/Staff/Project.class b/target/classes/Staff/Project.class
new file mode 100644
index 0000000..b7c80b9
Binary files /dev/null and b/target/classes/Staff/Project.class differ
diff --git a/target/classes/Staff/ProjectManager.class b/target/classes/Staff/ProjectManager.class
new file mode 100644
index 0000000..352e60a
Binary files /dev/null and b/target/classes/Staff/ProjectManager.class differ
diff --git a/target/classes/Staff/SeniorManager.class b/target/classes/Staff/SeniorManager.class
new file mode 100644
index 0000000..fe44b9b
Binary files /dev/null and b/target/classes/Staff/SeniorManager.class differ
diff --git a/target/classes/Staff/TeamLeader.class b/target/classes/Staff/TeamLeader.class
new file mode 100644
index 0000000..8f9e969
Binary files /dev/null and b/target/classes/Staff/TeamLeader.class differ
diff --git a/target/classes/Staff/Tester.class b/target/classes/Staff/Tester.class
new file mode 100644
index 0000000..024f4d1
Binary files /dev/null and b/target/classes/Staff/Tester.class differ
diff --git a/target/classes/Staff/WorkTime.class b/target/classes/Staff/WorkTime.class
new file mode 100644
index 0000000..0e8aa99
Binary files /dev/null and b/target/classes/Staff/WorkTime.class differ
diff --git a/target/classes/projects.json b/target/classes/projects.json
new file mode 100644
index 0000000..078b558
--- /dev/null
+++ b/target/classes/projects.json
@@ -0,0 +1,62 @@
+[
+ {
+ "id": 1,
+ "title": "Root Insurance",
+ "budget": 140000
+ },
+ {
+ "id": 2,
+ "title": "StockX",
+ "budget": 160000
+ },
+ {
+ "id": 3,
+ "title": "PlayVS",
+ "budget": 186000
+ },
+ {
+ "id": 4,
+ "title": "ShipBob",
+ "budget": 166000
+ },
+ {
+ "id": 5,
+ "title": "K4Connect",
+ "budget": 170000
+ },
+ {
+ "id": 6,
+ "title": "ExemptMeNow",
+ "budget": 190000
+ },
+ {
+ "id": 7,
+ "title": "Goodr",
+ "budget": 160000
+ },
+ {
+ "id": 8,
+ "title": "Understory Weather",
+ "budget": 200000
+ },
+ {
+ "id": 9,
+ "title": "MetaCX",
+ "budget": 185000
+ },
+ {
+ "id": 10,
+ "title": "Scale AI",
+ "budget": 170000
+ },
+ {
+ "id": 11,
+ "title": "UiPath",
+ "budget": 180000
+ },
+ {
+ "id": 12,
+ "title": "The Travel Line",
+ "budget": 200000
+ }
+]
\ No newline at end of file
diff --git a/target/classes/stuff.json b/target/classes/stuff.json
new file mode 100644
index 0000000..1482fde
--- /dev/null
+++ b/target/classes/stuff.json
@@ -0,0 +1,885 @@
+[
+
+ {
+ "id": 1032,
+ "position": "driver",
+ "fio": "Погребнова Оксана Тимуровна",
+ "workTime": 140
+ },
+ {
+ "id": 1033,
+ "position": "driver",
+ "fio": "Репин Викентий Якубович",
+ "workTime": 160
+ },
+ {
+ "id": 1034,
+ "position": "driver",
+ "fio": "Холод Игнатий Агапович",
+ "workTime": 186
+ },
+ {
+ "id": 1035,
+ "position": "driver",
+ "fio": "Аронова Валентина Вячеславовна",
+ "workTime": 166
+ },
+ {
+ "id": 1036,
+ "position": "cleaner",
+ "fio": "Сапалёв Андрон Денисович",
+ "workTime": 80
+ },
+ {
+ "id": 1037,
+ "position": "cleaner",
+ "fio": "Шаньгина Агафья Фомевна",
+ "workTime": 80
+ },
+ {
+ "id": 1038,
+ "position": "cleaner",
+ "fio": "Ильясов Валентин Всеволодович",
+ "workTime": 160
+ },
+ {
+ "id": 1039,
+ "position": "cleaner",
+ "fio": "Лапухина Христина Анатолиевна",
+ "workTime": 80
+ },
+ {
+ "id": 1040,
+ "position": "cleaner",
+ "fio": "Ягутян Самсон Фомевич",
+ "workTime": 80
+ },
+ {
+ "id": 1041,
+ "position": "cleaner",
+ "fio": "Лямин Данила Панкратиевич",
+ "workTime": 80
+ },
+ {
+ "id": 1042,
+ "position": "cleaner",
+ "fio": "Тяпичева Евгения Трофимовна",
+ "workTime": 80
+ },
+ {
+ "id": 1043,
+ "position": "cleaner",
+ "fio": "Яшуков Вацлав Никонович",
+ "workTime": 80
+ },
+ {
+ "id": 1044,
+ "position": "cleaner",
+ "fio": "Кружкова Христина Афанасиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1045,
+ "position": "cleaner",
+ "fio": "Каверин Евсей Ульянович",
+ "workTime": 80
+ },
+ {
+ "id": 1046,
+ "position": "programmer",
+ "fio": "Мячин Чеслав Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 1047,
+ "position": "programmer",
+ "fio": "Эмских Герасим Евграфович",
+ "workTime": 160
+ },
+ {
+ "id": 1048,
+ "position": "programmer",
+ "fio": "Нюхтилин Степан Ефремович",
+ "workTime": 160
+ },
+ {
+ "id": 1049,
+ "position": "programmer",
+ "fio": "Степнов Викентий Сигизмундович",
+ "workTime": 160
+ },
+ {
+ "id": 1050,
+ "position": "programmer",
+ "fio": "Делов Прохор Кондратович",
+ "workTime": 160
+ },
+ {
+ "id": 1051,
+ "position": "programmer",
+ "fio": "Котов Всеволод Игоревич",
+ "workTime": 160
+ },
+ {
+ "id": 1052,
+ "position": "programmer",
+ "fio": "Львов Архип Всеволодович",
+ "workTime": 160
+ },
+ {
+ "id": 1053,
+ "position": "programmer",
+ "fio": "Гибазова Ксения Вячеславовна",
+ "workTime": 160
+ },
+ {
+ "id": 1054,
+ "position": "programmer",
+ "fio": "Александрова Зинаида Александровна",
+ "workTime": 160
+ },
+ {
+ "id": 1055,
+ "position": "programmer",
+ "fio": "Экземплярский Самуил Изяславович",
+ "workTime": 160
+ },
+ {
+ "id": 1056,
+ "position": "programmer",
+ "fio": "Щередина Екатерина Павеловна",
+ "workTime": 160
+ },
+ {
+ "id": 1057,
+ "position": "programmer",
+ "fio": "Макушев Гавриил Григориевич",
+ "workTime": 160
+ },
+ {
+ "id": 1058,
+ "position": "programmer",
+ "fio": "Стрельников Руслан Давыдович",
+ "workTime": 160
+ },
+ {
+ "id": 1059,
+ "position": "programmer",
+ "fio": "Колтышев Вячеслав Игоревич",
+ "workTime": 160
+ },
+ {
+ "id": 1060,
+ "position": "programmer",
+ "fio": "Жвиков Емельян Самсонович",
+ "workTime": 160
+ },
+ {
+ "id": 1061,
+ "position": "programmer",
+ "fio": "Гайдученко Агап Миронович",
+ "workTime": 160
+ },
+ {
+ "id": 1062,
+ "position": "programmer",
+ "fio": "Янушкене Богдан Елисеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1063,
+ "position": "programmer",
+ "fio": "Соломахина Лариса Родионовна",
+ "workTime": 160
+ },
+ {
+ "id": 1064,
+ "position": "programmer",
+ "fio": "Невшупа Екатерина Георгиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1065,
+ "position": "programmer",
+ "fio": "Цызырева Влада Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1066,
+ "position": "programmer",
+ "fio": "Ерохин Назар Артемиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1067,
+ "position": "programmer",
+ "fio": "Савинков Фома Моисеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1068,
+ "position": "programmer",
+ "fio": "Дмитриев Вадим Андроникович",
+ "workTime": 160
+ },
+ {
+ "id": 1069,
+ "position": "programmer",
+ "fio": "Богачёв Гавриил Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 1070,
+ "position": "programmer",
+ "fio": "Чибисова Диана Захаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1071,
+ "position": "programmer",
+ "fio": "Ямов Виктор Валерьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1072,
+ "position": "programmer",
+ "fio": "Косинова Полина Кузьмевна",
+ "workTime": 160
+ },
+ {
+ "id": 1073,
+ "position": "programmer",
+ "fio": "Ханцев Федор Георгиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1074,
+ "position": "programmer",
+ "fio": "Ящин Мефодий Никифорович",
+ "workTime": 160
+ },
+ {
+ "id": 1075,
+ "position": "programmer",
+ "fio": "Чиркаш Давид Несторович",
+ "workTime": 160
+ },
+ {
+ "id": 1076,
+ "position": "programmer",
+ "fio": "Яманов Кузьма Захарович",
+ "workTime": 160
+ },
+ {
+ "id": 1077,
+ "position": "programmer",
+ "fio": "Викаш Александр Кондратович",
+ "workTime": 160
+ },
+ {
+ "id": 1078,
+ "position": "programmer",
+ "fio": "Эсаулова Мирослава Андрияновна",
+ "workTime": 160
+ },
+ {
+ "id": 1079,
+ "position": "programmer",
+ "fio": "Сидоров Иннокентий Юриевич",
+ "workTime": 160
+ },
+ {
+ "id": 1080,
+ "position": "programmer",
+ "fio": "Королёва Милена Борисовна",
+ "workTime": 160
+ },
+ {
+ "id": 1081,
+ "position": "programmer",
+ "fio": "Ларичев Венедикт Проклович",
+ "workTime": 160
+ },
+ {
+ "id": 1082,
+ "position": "programmer",
+ "fio": "Рыбакова Евдокия Станиславовна",
+ "workTime": 160
+ },
+ {
+ "id": 1083,
+ "position": "programmer",
+ "fio": "Белоусова Пелагея Владиленовна",
+ "workTime": 160
+ },
+ {
+ "id": 1084,
+ "position": "programmer",
+ "fio": "Кондучалова Ефросинья Алексеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1085,
+ "position": "programmer",
+ "fio": "Торсунова Эвелина Тимофеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1086,
+ "position": "programmer",
+ "fio": "Карпенцев Герасим Демьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1087,
+ "position": "programmer",
+ "fio": "Якубова Регина Феликсовна",
+ "workTime": 160
+ },
+ {
+ "id": 1088,
+ "position": "programmer",
+ "fio": "Ягфаров Андрей Самуилович",
+ "workTime": 160
+ },
+ {
+ "id": 1089,
+ "position": "programmer",
+ "fio": "Ожегова Ксения Данилевна",
+ "workTime": 160
+ },
+ {
+ "id": 1090,
+ "position": "programmer",
+ "fio": "Карданова Агния Анатолиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1091,
+ "position": "programmer",
+ "fio": "Сиянскиха Екатерина Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1092,
+ "position": "programmer",
+ "fio": "Усов Олег Евграфович",
+ "workTime": 160
+ },
+ {
+ "id": 1093,
+ "position": "programmer",
+ "fio": "Каменева Лариса Давидовна",
+ "workTime": 160
+ },
+ {
+ "id": 1094,
+ "position": "tester",
+ "fio": "Жжёнова Эльвира Геннадиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1095,
+ "position": "tester",
+ "fio": "Валуева Ирина Анатолиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1096,
+ "position": "tester",
+ "fio": "Дудченко Ульяна Георгиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1097,
+ "position": "tester",
+ "fio": "Якушин Валерьян Эрнестович",
+ "workTime": 160
+ },
+ {
+ "id": 1098,
+ "position": "tester",
+ "fio": "Эмануиль Гавриил Григориевич",
+ "workTime": 160
+ },
+ {
+ "id": 1099,
+ "position": "tester",
+ "fio": "Игнатова Оксана Филипповна",
+ "workTime": 160
+ },
+ {
+ "id": 1100,
+ "position": "tester",
+ "fio": "Ясинова Раиса Ивановна",
+ "workTime": 160
+ },
+ {
+ "id": 1101,
+ "position": "tester",
+ "fio": "Ажикелямова Владислава Филипповна",
+ "workTime": 160
+ },
+ {
+ "id": 1102,
+ "position": "tester",
+ "fio": "Ермишина Ярослава Степановна",
+ "workTime": 160
+ },
+ {
+ "id": 1103,
+ "position": "tester",
+ "fio": "Пичугина Инесса Святославовна",
+ "workTime": 160
+ },
+ {
+ "id": 1104,
+ "position": "tester",
+ "fio": "Тамахин Дмитрий Григориевич",
+ "workTime": 160
+ },
+ {
+ "id": 1105,
+ "position": "tester",
+ "fio": "Толбоева Зоя Яновна",
+ "workTime": 160
+ },
+ {
+ "id": 1106,
+ "position": "tester",
+ "fio": "Зёмина Владлена Федоровна",
+ "workTime": 160
+ },
+ {
+ "id": 1107,
+ "position": "tester",
+ "fio": "Глоба Стела Борисовна",
+ "workTime": 160
+ },
+ {
+ "id": 1108,
+ "position": "tester",
+ "fio": "Буданов Юлий Викентиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1109,
+ "position": "tester",
+ "fio": "Бородин Виталий Вячеславович",
+ "workTime": 160
+ },
+ {
+ "id": 1110,
+ "position": "tester",
+ "fio": "Разбойникова Виктория Никитевна",
+ "workTime": 160
+ },
+ {
+ "id": 1111,
+ "position": "tester",
+ "fio": "Миронова Жанна Несторовна",
+ "workTime": 160
+ },
+ {
+ "id": 1112,
+ "position": "tester",
+ "fio": "Землякова Агата Ильевна",
+ "workTime": 160
+ },
+ {
+ "id": 1113,
+ "position": "tester",
+ "fio": "Скуратов Бронислав Онисимович",
+ "workTime": 160
+ },
+ {
+ "id": 1114,
+ "position": "tester",
+ "fio": "Толбанов Евдоким Прокофиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1115,
+ "position": "tester",
+ "fio": "Ерзова Берта Трофимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1116,
+ "position": "tester",
+ "fio": "Михайличенко Зиновий Натанович",
+ "workTime": 160
+ },
+ {
+ "id": 1117,
+ "position": "tester",
+ "fio": "Столярова Ираида Владленовна",
+ "workTime": 160
+ },
+ {
+ "id": 1118,
+ "position": "tester",
+ "fio": "Халипова Владлена Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1119,
+ "position": "tester",
+ "fio": "Муравей Евграф Мартьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1120,
+ "position": "tester",
+ "fio": "Языкина Лада Ильевна",
+ "workTime": 160
+ },
+ {
+ "id": 1121,
+ "position": "tester",
+ "fio": "Арзамасцева Анисья Потаповна",
+ "workTime": 160
+ },
+ {
+ "id": 1122,
+ "position": "tester",
+ "fio": "Неделяев Ипполит Богданович",
+ "workTime": 160
+ },
+ {
+ "id": 1123,
+ "position": "tester",
+ "fio": "Мозговой Татьяна Степановна",
+ "workTime": 160
+ },
+ {
+ "id": 1124,
+ "position": "tester",
+ "fio": "Дешевых Изяслав Ипатович",
+ "workTime": 160
+ },
+ {
+ "id": 1125,
+ "position": "tester",
+ "fio": "Плюхина Алиса Ефимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1126,
+ "position": "tester",
+ "fio": "Ямбаев Александр Мартьянович",
+ "workTime": 160
+ },
+ {
+ "id": 1127,
+ "position": "tester",
+ "fio": "Веденина Ульяна Алексеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1128,
+ "position": "tester",
+ "fio": "Павлова Маргарита Семеновна",
+ "workTime": 160
+ },
+ {
+ "id": 1129,
+ "position": "tester",
+ "fio": "Сабитова Светлана Игнатиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1130,
+ "position": "teamLeader",
+ "fio": "Ярмолинский Тимур Богданович",
+ "workTime": 160
+ },
+ {
+ "id": 1131,
+ "position": "teamLeader",
+ "fio": "Поздова Дарья Василиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1132,
+ "position": "teamLeader",
+ "fio": "Завьялова Лидия Тимофеевна",
+ "workTime": 160
+ },
+ {
+ "id": 1133,
+ "position": "teamLeader",
+ "fio": "Нырко Данила Никифорович",
+ "workTime": 160
+ },
+ {
+ "id": 1134,
+ "position": "teamLeader",
+ "fio": "Плахтюрин Геннадий Платонович",
+ "workTime": 160
+ },
+ {
+ "id": 1135,
+ "position": "teamLeader",
+ "fio": "Тамило Кузьма Ираклиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1136,
+ "position": "teamLeader",
+ "fio": "Лукина Варвара Давидовна",
+ "workTime": 160
+ },
+ {
+ "id": 1137,
+ "position": "teamLeader",
+ "fio": "Сьянова Виктория Филипповна",
+ "workTime": 160
+ },
+ {
+ "id": 1138,
+ "position": "teamLeader",
+ "fio": "Мохов Андрон Маркович",
+ "workTime": 160
+ },
+ {
+ "id": 1139,
+ "position": "teamLeader",
+ "fio": "Осин Аким Федосиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1140,
+ "position": "teamLeader",
+ "fio": "Сорокина Альбина Никитевна",
+ "workTime": 160
+ },
+ {
+ "id": 1141,
+ "position": "teamLeader",
+ "fio": "Тетерина Людмила Фомевна",
+ "workTime": 160
+ },
+ {
+ "id": 1142,
+ "position": "manager",
+ "fio": "Вольпов Владилен Еремеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1143,
+ "position": "manager",
+ "fio": "Абдулов Семен Вячеславович",
+ "workTime": 160
+ },
+ {
+ "id": 1144,
+ "position": "manager",
+ "fio": "Чебыкина Мирослава Федотовна",
+ "workTime": 160
+ },
+ {
+ "id": 1145,
+ "position": "manager",
+ "fio": "Кобелева Александра Фомевна",
+ "workTime": 160
+ },
+ {
+ "id": 1146,
+ "position": "manager",
+ "fio": "Киреев Петр Измаилович",
+ "workTime": 160
+ },
+ {
+ "id": 1147,
+ "position": "manager",
+ "fio": "Осипова Эльвира Якововна",
+ "workTime": 160
+ },
+ {
+ "id": 1148,
+ "position": "manager",
+ "fio": "Мальцев Даниил Якубович",
+ "workTime": 160
+ },
+ {
+ "id": 1149,
+ "position": "manager",
+ "fio": "Абоимова Нина Ефимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1150,
+ "position": "manager",
+ "fio": "Мадулин Кузьма Проклович",
+ "workTime": 160
+ },
+ {
+ "id": 1151,
+ "position": "manager",
+ "fio": "Ковалев Рубен Филиппович",
+ "workTime": 160
+ },
+ {
+ "id": 1152,
+ "position": "manager",
+ "fio": "Львов Артур Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 1153,
+ "position": "manager",
+ "fio": "Ефремова Галина Елизаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1154,
+ "position": "manager",
+ "fio": "Разуваева Виктория Николаевна",
+ "workTime": 160
+ },
+ {
+ "id": 1155,
+ "position": "manager",
+ "fio": "Таттар Игнатий Филимонович",
+ "workTime": 160
+ },
+ {
+ "id": 1156,
+ "position": "manager",
+ "fio": "Жичкина Юлия Германовна",
+ "workTime": 160
+ },
+ {
+ "id": 1157,
+ "position": "manager",
+ "fio": "Салтанова Агата Никитевна",
+ "workTime": 160
+ },
+ {
+ "id": 1158,
+ "position": "manager",
+ "fio": "Смелоч Казимир Дмитриевич",
+ "workTime": 160
+ },
+ {
+ "id": 1159,
+ "position": "manager",
+ "fio": "Кутяков Чеслав Ростиславович",
+ "workTime": 160
+ },
+ {
+ "id": 1160,
+ "position": "manager",
+ "fio": "Невьянцев Ипполит Маркович",
+ "workTime": 160
+ },
+ {
+ "id": 1161,
+ "position": "manager",
+ "fio": "Николаева Галина Давидовна",
+ "workTime": 160
+ },
+ {
+ "id": 1162,
+ "position": "manager",
+ "fio": "Венедиктов Мстислав Сидорович",
+ "workTime": 160
+ },
+ {
+ "id": 1163,
+ "position": "manager",
+ "fio": "Дубов Бронислав Семенович",
+ "workTime": 160
+ },
+ {
+ "id": 1164,
+ "position": "manager",
+ "fio": "Букова Василиса Петровна",
+ "workTime": 160
+ },
+ {
+ "id": 1165,
+ "position": "manager",
+ "fio": "Ягемана Алиса Петровна",
+ "workTime": 160
+ },
+ {
+ "id": 1166,
+ "position": "projectManager",
+ "fio": "Куксюка Эльвира Виталиевна",
+ "workTime": 160
+ },
+ {
+ "id": 1167,
+ "position": "projectManager",
+ "fio": "Лашкина Ульяна Серафимовна",
+ "workTime": 160
+ },
+ {
+ "id": 1168,
+ "position": "projectManager",
+ "fio": "Рясной Бронислав Герасимович",
+ "workTime": 160
+ },
+ {
+ "id": 1169,
+ "position": "projectManager",
+ "fio": "Акимова Алиса Ростиславовна",
+ "workTime": 160
+ },
+ {
+ "id": 1170,
+ "position": "projectManager",
+ "fio": "Пашин Станислав Никифорович",
+ "workTime": 160
+ },
+ {
+ "id": 1171,
+ "position": "projectManager",
+ "fio": "Кузьмова Фаина Кузьмевна",
+ "workTime": 160
+ },
+ {
+ "id": 1172,
+ "position": "projectManager",
+ "fio": "Сластников Степан Гаврилевич",
+ "workTime": 160
+ },
+ {
+ "id": 1173,
+ "position": "projectManager",
+ "fio": "Масмех Казимир Анатолиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1174,
+ "position": "projectManager",
+ "fio": "Агеев Афанасий Георгиевич",
+ "workTime": 160
+ },
+ {
+ "id": 1175,
+ "position": "projectManager",
+ "fio": "Прилуцкий Вячеслав Гордеевич",
+ "workTime": 160
+ },
+ {
+ "id": 1176,
+ "position": "projectManager",
+ "fio": "Бабкин Аким Евграфович",
+ "workTime": 160
+ },
+ {
+ "id": 1177,
+ "position": "projectManager",
+ "fio": "Курневича Галина Захаровна",
+ "workTime": 160
+ },
+ {
+ "id": 1178,
+ "position": "seniorManager",
+ "fio": "Энгельгардт Пимен Артемиевич",
+ "workTime": 160
+ }
+]
\ No newline at end of file
diff --git a/target/classes/testProject.json b/target/classes/testProject.json
new file mode 100644
index 0000000..8000340
--- /dev/null
+++ b/target/classes/testProject.json
@@ -0,0 +1,7 @@
+[
+ {
+ "id": 1,
+ "title": "Root Insurance",
+ "budget": 300000
+ }
+]
\ No newline at end of file
diff --git a/target/classes/testStuff.json b/target/classes/testStuff.json
new file mode 100644
index 0000000..89d5401
--- /dev/null
+++ b/target/classes/testStuff.json
@@ -0,0 +1,51 @@
+[
+
+ {
+ "id": 1,
+ "position": "driver",
+ "fio": "Погребнова Оксана Тимуровна",
+ "workTime": 160
+ },
+ {
+ "id": 2,
+ "position": "cleaner",
+ "fio": "Сапалёв Андрон Денисович",
+ "workTime": 160
+ },
+ {
+ "id": 3,
+ "position": "programmer",
+ "fio": "Мячин Чеслав Карлович",
+ "workTime": 160
+ },
+ {
+ "id": 4,
+ "position": "tester",
+ "fio": "Валуева Ирина Анатолиевна",
+ "workTime": 160
+ },
+ {
+ "id": 5,
+ "position": "teamLeader",
+ "fio": "Тамило Кузьма Ираклиевич",
+ "workTime": 160
+ },
+ {
+ "id": 6,
+ "position": "manager",
+ "fio": "Киреев Петр Измаилович",
+ "workTime": 160
+ },
+ {
+ "id": 7,
+ "position": "projectManager",
+ "fio": "Рясной Бронислав Герасимович",
+ "workTime": 160
+ },
+ {
+ "id": 8,
+ "position": "seniorManager",
+ "fio": "Энгельгардт Пимен Артемиевич",
+ "workTime": 160
+ }
+]
\ No newline at end of file
diff --git a/target/test-classes/Staff/DeveloperCompanyTest.class b/target/test-classes/Staff/DeveloperCompanyTest.class
new file mode 100644
index 0000000..7ee7fc8
Binary files /dev/null and b/target/test-classes/Staff/DeveloperCompanyTest.class differ