├── .gitignore ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── internship ├── backlog │ └── task_x.txt ├── build.gradle ├── documentation │ └── task_0_description.txt └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ ├── InsuranceApplication.java │ │ │ ├── core │ │ │ ├── TravelCalculatePremiumService.java │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ └── rest │ │ │ ├── TravelCalculatePremiumController.java │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ └── TravelCalculatePremiumResponse.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── org │ └── javaguru │ └── travel │ └── insurance │ └── core │ └── TravelCalculatePremiumServiceImplTest.java ├── project ├── Project_content_task_by_task.txt ├── Team_work.txt ├── ideas │ ├── architecture │ │ ├── All_knowledge_pyramid.png │ │ ├── Articles.txt │ │ ├── Laws_of_achitecture.txt │ │ ├── POST_Ideas.txt │ │ └── Technical_breadth_pyramid.png │ ├── documentation │ │ ├── IdeaDescription.txt │ │ ├── notes │ │ │ └── IdeaDescription.txt │ │ ├── requirements │ │ │ ├── functional │ │ │ │ └── IdeaDescription.txt │ │ │ ├── limitations │ │ │ │ └── IdeaDescription.txt │ │ │ └── non_functional │ │ │ │ └── IdeaDescription.txt │ │ ├── technical_articles │ │ │ └── IdeaDescription.txt │ │ └── user_stories │ │ │ └── IdeaDescription.txt │ └── scribing_notes │ │ ├── IdeaDescription.txt │ │ └── pictures │ │ ├── Controller_Service.jpg │ │ ├── Network_and_ports.jpg │ │ ├── OS_WebServer_WebApplication.jpg │ │ └── Postman_request_response.jpg ├── sprint_0 │ └── task_0 │ │ ├── CopyPasteNote.txt │ │ ├── PartingWords.txt │ │ ├── ProjectOverview.txt │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ │ └── СonfidentialityAgreement.txt ├── sprint_1 │ ├── task_1 │ │ ├── Learning_reflection.txt │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_10 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_2 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_3 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_4 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_5 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_6 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_7 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_8 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ └── task_9 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── javaguru │ │ │ │ └── travel │ │ │ │ └── insurance │ │ │ │ ├── InsuranceApplication.java │ │ │ │ ├── core │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ └── rest │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── org │ │ └── javaguru │ │ └── travel │ │ └── insurance │ │ └── core │ │ └── TravelCalculatePremiumServiceImplTest.java ├── sprint_10 │ └── GetAccess.txt ├── sprint_11 │ └── GetAccess.txt ├── sprint_12 │ └── GetAccess.txt ├── sprint_13 │ └── GetAccess.txt ├── sprint_14 │ └── GetAccess.txt ├── sprint_15 │ └── GetAccess.txt ├── sprint_16 │ └── GetAccess.txt ├── sprint_17 │ └── GetAccess.txt ├── sprint_18 │ └── GetAccess.txt ├── sprint_19 │ └── GetAccess.txt ├── sprint_2 │ ├── task_11 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_12 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_13 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_14 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_15 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── TravelCalculatePremiumServiceImplAIEachFieldTest.java │ │ │ ├── TravelCalculatePremiumServiceImplAIOneTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_16 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_17 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_18 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_19 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_20 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ └── task_20_code_review │ │ ├── YourTask.txt │ │ ├── code-review-hints.txt │ │ └── lecture_recordings.txt ├── sprint_20 │ └── GetAccess.txt ├── sprint_21 │ └── GetAccess.txt ├── sprint_22 │ └── GetAccess.txt ├── sprint_23 │ └── GetAccess.txt ├── sprint_24 │ └── GetAccess.txt ├── sprint_25 │ └── GetAccess.txt ├── sprint_26 │ └── GetAccess.txt ├── sprint_3 │ ├── task_21 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_22 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_23 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_24 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_25 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_26 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_27 │ │ ├── Oliver Drotbohm - Why field injection is evil.pdf │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ └── rest │ │ │ │ │ ├── TravelCalculatePremiumController.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ └── TravelCalculatePremiumResponse.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_28 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumRequestValidator.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ ├── dto │ │ │ │ │ ├── CoreResponse.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ ├── TravelCalculatePremiumResponse.java │ │ │ │ │ └── ValidationError.java │ │ │ │ │ └── rest │ │ │ │ │ └── TravelCalculatePremiumController.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_29 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumRequestValidator.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ ├── dto │ │ │ │ │ ├── CoreResponse.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ ├── TravelCalculatePremiumResponse.java │ │ │ │ │ └── ValidationError.java │ │ │ │ │ └── rest │ │ │ │ │ └── TravelCalculatePremiumController.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ ├── TravelCalculatePremiumRequestValidatorTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ ├── task_30 │ │ ├── YourTask.txt │ │ ├── build.gradle │ │ ├── documentation │ │ │ └── BusinessRequirements.txt │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── javaguru │ │ │ │ │ └── travel │ │ │ │ │ └── insurance │ │ │ │ │ ├── InsuranceApplication.java │ │ │ │ │ ├── core │ │ │ │ │ ├── DateTimeService.java │ │ │ │ │ ├── TravelCalculatePremiumRequestValidator.java │ │ │ │ │ ├── TravelCalculatePremiumService.java │ │ │ │ │ └── TravelCalculatePremiumServiceImpl.java │ │ │ │ │ ├── dto │ │ │ │ │ ├── CoreResponse.java │ │ │ │ │ ├── TravelCalculatePremiumRequest.java │ │ │ │ │ ├── TravelCalculatePremiumResponse.java │ │ │ │ │ └── ValidationError.java │ │ │ │ │ └── rest │ │ │ │ │ └── TravelCalculatePremiumController.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── javaguru │ │ │ └── travel │ │ │ └── insurance │ │ │ └── core │ │ │ ├── DateTimeServiceTest.java │ │ │ ├── TravelCalculatePremiumRequestValidatorTest.java │ │ │ └── TravelCalculatePremiumServiceImplTest.java │ └── task_31_what_next │ │ ├── YourTask.txt │ │ └── project_themes │ │ ├── 1. Build Tools, Gradle, Maven project structure.txt │ │ ├── 2. IoC (Inversion of Control).txt │ │ ├── 3. Unit testing.txt │ │ ├── 4. JUnit library.txt │ │ ├── 5. Mockito library.txt │ │ ├── 6. Библиотека Lombok.txt │ │ └── 7. Логирование.txt ├── sprint_4 │ └── GetAccess.txt ├── sprint_5 │ └── GetAccess.txt ├── sprint_6 │ └── GetAccess.txt ├── sprint_7 │ └── GetAccess.txt ├── sprint_8 │ └── GetAccess.txt └── sprint_9 │ └── GetAccess.txt └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | #java specific 2 | *.class 3 | *.jar 4 | 5 | #log specific 6 | *.log 7 | 8 | #Mac 9 | **/.DS_Store 10 | 11 | ### Gradle ### 12 | .gradle 13 | **/build/ 14 | **/logs/ 15 | **/out/ 16 | 17 | ### STS ### 18 | .apt_generated 19 | .classpath 20 | .factorypath 21 | .project 22 | .settings 23 | .springBeans 24 | 25 | ### IntelliJ IDEA ### 26 | **/.idea 27 | *.iws 28 | *.iml 29 | *.ipr 30 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | mavenCentral() 4 | } 5 | } 6 | 7 | subprojects { 8 | 9 | apply plugin: 'java' 10 | apply plugin: 'idea' 11 | 12 | version = '0.0.1-SNAPSHOT' 13 | sourceCompatibility = '21' 14 | targetCompatibility = '21' 15 | 16 | 17 | repositories { 18 | mavenCentral() 19 | } 20 | 21 | compileJava { 22 | options.encoding = "UTF-8" 23 | } 24 | 25 | compileTestJava { 26 | options.encoding = "UTF-8" 27 | } 28 | 29 | test { 30 | useJUnitPlatform() 31 | } 32 | 33 | clean.doFirst { 34 | delete "${projectDir}/logs/" 35 | println "${projectDir}/logs/" 36 | 37 | delete "${projectDir}/out/" 38 | println "${projectDir}/out/" 39 | 40 | delete "${projectDir}/build/" 41 | println "${projectDir}/build/" 42 | } 43 | 44 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | rootProject.name=java_software_development_part_1 2 | org.gradle.parallel=true 3 | 4 | org.gradle.jvmargs=-Xmx4096m 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Nov 03 21:24:00 EET 2020 2 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip 3 | distributionBase=GRADLE_USER_HOME 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /internship/backlog/task_x.txt: -------------------------------------------------------------------------------- 1 | Название задачи 2 | TODO: дайте название вашей задаче 3 | 4 | 5 | Описание задачи 6 | TODO: опишите вашу задачу в свободной форме. 7 | TODO: постарайтесь сделать описание четким и подробным, так чтобы задачу могли выполнить не только вы. 8 | 9 | 10 | Важность/приоритет задачи 11 | TODO: определите важность задачи: Critical/Major/Minor. 12 | 13 | 14 | Предполагаемое время выполнения 15 | TODO: попробуйте оценить сколько времени примерно нужно на выполнение задачи. 16 | -------------------------------------------------------------------------------- /internship/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /internship/documentation/task_0_description.txt: -------------------------------------------------------------------------------- 1 | **Контекст задачи (краткое описание) ** 2 | TODO: опишите контекст и задачу своими словами в свободной форме. 3 | 4 | **Что было сделано и как? (краткое описание)** 5 | TODO: опишите что и как делали для того, чтобы выполнить задачу. 6 | 7 | **Зачем это было сделано? Чему научился в процессе выполнения задания?** 8 | TODO: опиши своими словами зачем было необходимо выполнить это задание, 9 | опиши какие техники, технологии, инструменты, использовал для выполнения задания, 10 | чему научился выполняя это задание? 11 | 12 | 13 | **Сколько потратил времени на выполнение задачи?** 14 | TODO: зафиксируй для себя сколько времени потратил на выполнение этого задания. Можно ли было его сделать быстрее? 15 | 16 | 17 | **Заметки, идеи, предложения в свободной форме** 18 | TODO: зафиксируй любые свои мысли, эмоции, идеи, размышления связанные с этим заданием. -------------------------------------------------------------------------------- /internship/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /internship/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /internship/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /internship/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /internship/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /internship/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /internship/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/internship/src/main/resources/application.properties -------------------------------------------------------------------------------- /internship/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/Team_work.txt: -------------------------------------------------------------------------------- 1 | Над проектом можно работать одному, а можно в команде. 2 | 3 | Командная работа зависит от того, готовы ли вы инвестировать 4 | свои усилия и время в других членов команды. 5 | 6 | Команда - это в первую очередь про общие интересы и взаимопомощь. 7 | 8 | Если вы готовы активно помогать другим в процессе обучения и работы над проектом, 9 | вы можете заняться поиском и формированием своей команды. 10 | 11 | В проекте есть много задач, которые можно делать вместе: 12 | - code review 13 | - обсуждения и поиск вариантов решения 14 | - составление планов реализации 15 | - парное программирование 16 | - генерация идей по улучшению проекта 17 | - и так далее 18 | 19 | Практически над любой задачей можно работать вместе! 20 | Современные инструменты это позволяют делать. 21 | 22 | Запомните одно, командный игрок ставит приоритеты команды выше своих собственных. 23 | 24 | Быть хорошим командным игроком, уметь вместе работать с разными людьми это 25 | отличный навык, которому вы тоже можете научиться! 26 | 27 | Над этим проектом постоянно работают много разных людей. 28 | При желании вы можете познакомиться с ними и найти среди них 29 | единомышленников для вашей команды. 30 | 31 | Вы можете привести на проект свою собственную команду! Вместе учиться и развиваться веселее! -------------------------------------------------------------------------------- /project/ideas/architecture/All_knowledge_pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/ideas/architecture/All_knowledge_pyramid.png -------------------------------------------------------------------------------- /project/ideas/architecture/Laws_of_achitecture.txt: -------------------------------------------------------------------------------- 1 | Everything in software architecture is a trade-off. 2 | —First Law of Software Architecture 3 | 4 | If an architect thinks they have discovered something that isn’t a trade-off, more likely 5 | they just haven’t identified the trade-off yet. 6 | —Corollary 1 7 | 8 | Why is more important than how. 9 | —Second Law of Software Architecture 10 | 11 | -------------------------------------------------------------------------------- /project/ideas/architecture/Technical_breadth_pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/ideas/architecture/Technical_breadth_pyramid.png -------------------------------------------------------------------------------- /project/ideas/documentation/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | Какова цель папки documentation? 2 | Зачем она нужна в проекте? 3 | 4 | Цель: познакомить слушателя с требованиями к проекту и их типами. 5 | 6 | Дать возможность слушателю самому собрать и задокументировать 7 | требования к проекту работая над заданиями. 8 | 9 | Дать слушателю структуру для сбора и хранения требований. 10 | 11 | 12 | Главный вопрос: 13 | Будет ли удобно слушателю помимо написания кода (реализации) 14 | собирать и оформлять требования к системе? 15 | 16 | Или требования/документация должна быть предоставлена слушателю 17 | уже в готовом виде? 18 | 19 | 20 | Какую пользу может получить слушатель от процесса 21 | описания/сбора требований? 22 | 23 | 24 | Слушатель сможет получить практику в четком формулировании 25 | и описании требований. Это позволит слушателю научиться 26 | четко формулировать и выражать свои мысли. 27 | 28 | Работая над сбором/описанием/документированием/визуализацией 29 | требований слушатель будет глубже вникать и понимать сам проект, 30 | это позволит встать на сторону пользователя и лучше понять 31 | пользу от проекта, заставит больше вникать в бизнес и 32 | задавать правильные вопросы. 33 | 34 | С другой стороны в реальной жизни программисты не пишут требования. 35 | Это может быть дополнительной нагрузкой, которую никто не захочет 36 | делать. -------------------------------------------------------------------------------- /project/ideas/documentation/notes/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | В этой папке могут храниться любые записки/пометки самого слушателя, 2 | которые он добавляет в процессе работы над проектом. -------------------------------------------------------------------------------- /project/ideas/documentation/requirements/functional/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | Папка для функциональных требований. -------------------------------------------------------------------------------- /project/ideas/documentation/requirements/limitations/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | Папка для ограничений. -------------------------------------------------------------------------------- /project/ideas/documentation/requirements/non_functional/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | Папка для не функциональных требований. -------------------------------------------------------------------------------- /project/ideas/documentation/technical_articles/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | Папка для технических статей, заметок, книг и так далее. 2 | Любой дополнительной литературы используемой при работе 3 | над проектом. -------------------------------------------------------------------------------- /project/ideas/documentation/user_stories/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | Папка для user stories. -------------------------------------------------------------------------------- /project/ideas/scribing_notes/IdeaDescription.txt: -------------------------------------------------------------------------------- 1 | Прочитай статью "Рисуй, чтобы победить": 2 | https://habr.com/ru/articles/693952/ 3 | 4 | Попробуй применить скрайбинг и скетчноутинг при работе 5 | над проектом. Возьми чистый лист бумаги, ручку и начни рисовать. 6 | С помощью картинок можно визуализировать взаимодействия 7 | между классами и компонентами системы, представить и объяснить 8 | сложные технические концепции просто и понятно. Визуальные 9 | образы лучше запоминаются. 10 | 11 | Простые примеры картинок ты найдешь в папке ideas/scribing_notes. 12 | 13 | Если хочешь воспользоваться идеей создания рисунков 14 | создай в своем модуле папку /documentation/scribing_notes 15 | и добавляй в нее свои новые рисунки по мере их появления. -------------------------------------------------------------------------------- /project/ideas/scribing_notes/pictures/Controller_Service.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/ideas/scribing_notes/pictures/Controller_Service.jpg -------------------------------------------------------------------------------- /project/ideas/scribing_notes/pictures/Network_and_ports.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/ideas/scribing_notes/pictures/Network_and_ports.jpg -------------------------------------------------------------------------------- /project/ideas/scribing_notes/pictures/OS_WebServer_WebApplication.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/ideas/scribing_notes/pictures/OS_WebServer_WebApplication.jpg -------------------------------------------------------------------------------- /project/ideas/scribing_notes/pictures/Postman_request_response.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/ideas/scribing_notes/pictures/Postman_request_response.jpg -------------------------------------------------------------------------------- /project/sprint_0/task_0/PartingWords.txt: -------------------------------------------------------------------------------- 1 | Вы тут потому что поставили перед собой масштабную 2 | цель - стать профессионалом в ИТ. Вы бесспорно 3 | талантливы! Но помните, одного таланта мало. 4 | Ваш талант это всего лишь начальная точка вашего 5 | путешествия. 6 | 7 | Для достижения настоящего успеха вы должны мыслить 8 | масштабно, но действовать маленькими шагами. 9 | 10 | Приготовьтесь к долгому путешествию. 11 | 12 | Шаг за шагом, день за днем прикладывайте усилия, 13 | изучайте новые вещи. Достижение настоящего мастерства 14 | требует смирения, усердия и самосознания. 15 | 16 | Вы должны быть нацелены на действие и образование, 17 | ваши амбиции не должны быть грандиозными, они должны 18 | быть итеративными, шаг за шагом вы будете расти и 19 | набираться мастерства. 20 | 21 | В конце пути вас ждет настоящая награда - практические 22 | знания, реальный опыт и растущая уверенность в своих 23 | силах. 24 | 25 | В добрый путь! -------------------------------------------------------------------------------- /project/sprint_0/task_0/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_0/task_0/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_0/task_0/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_0/task_0/СonfidentialityAgreement.txt: -------------------------------------------------------------------------------- 1 | Мы также хотели бы напомнить вам о важности соблюдения 2 | конфиденциальности. Все ресурсы, материалы и информация, 3 | предоставленные вам в рамках работы в нашей компании, 4 | являются её собственностью и охраняются законом о конфиденциальности. 5 | Вам строго запрещается распространять или использовать предоставленные 6 | материалы за пределами компании, как во время вашего испытательного 7 | срока, так и после его окончания, независимо от того, продолжите ли 8 | вы работу в компании. 9 | 10 | Любое нарушение данных правил будет рассматриваться как нарушение 11 | закона о конфиденциальности и преследоваться соответствующим образом. 12 | Это требование направлено на защиту интеллектуальной собственности и 13 | коммерческих интересов компании. Мы рассчитываем на ваше полное 14 | понимание и строгое соблюдение этих правил, подчёркивая их критическую 15 | важность для нашего совместного успеха. -------------------------------------------------------------------------------- /project/sprint_1/task_1/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_1/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_1/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_10/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_10/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_10/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_10/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_10/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_10/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /project/sprint_1/task_10/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_10/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_10/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_2/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_2/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_2/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_3/YourTask.txt: -------------------------------------------------------------------------------- 1 | В этом задании вы научитесь собирать (билдить) ваш проект 2 | с помощью команд Gradle из терминала. 3 | 4 | Gradle команды можно запускать так же из консоли (терминала). 5 | Для этого откройте закладку Terminal (обычно находится 6 | в нижней панели инструментов в среде разработки). 7 | В открывшемся окне напишите команду: 8 | 9 | ./gradlew build 10 | 11 | и нажмите Enter. Это запустит полную сборку проекта. 12 | 13 | Если проект большой и полная сборка проекта выполняется очень долго, 14 | то удобнее запускать только сборку своего модуля. Для этого воспользуйтесь 15 | следующей командой: 16 | 17 | ./gradlew :internship:build 18 | 19 | Эта команда запустит сборку только для модуля internship. 20 | 21 | PS: не забудьте по окончанию выполнения шага создать и заполнить 22 | файл /documentation/Task_x_description.txt. Формат заполнения этого 23 | файла описан в task_1 в файле Learning_reflection.txt. 24 | 25 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 26 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 27 | * [Телеграмм автора курса] (javaguruby) 28 | * [Емейл автора курса] (itguruby@mail.ru) 29 | -------------------------------------------------------------------------------- /project/sprint_1/task_3/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_3/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_3/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_4/YourTask.txt: -------------------------------------------------------------------------------- 1 | Почему команда Gradle build работает "из коробки" (по дефолту)? 2 | 3 | Откуда он знает где в проекте лежит продакшн код, а где лежат тесты? 4 | 5 | Наш проект использует так называемую Maven структуру проекта. 6 | Эта структура называется так, потому что она впервые появилась 7 | и использовалась в проектах под управлением Build Tool Maven. 8 | 9 | Maven структура проекта состоит из: 10 | - src - директория с кодом 11 | - src/main - в директории лежит продакшн код 12 | - src/main/java - Java продакшн код (классы) 13 | - src/main/resources - продакшн файлы ресурсов 14 | - src/test - в директории лежит тестовый код 15 | - src/test/java - тесты написанные на Java 16 | - src/test/resources - тестовые файлы ресурсов 17 | 18 | Попробуйте узнать больше о том зачем была создана 19 | и применяется такая структура проекта в современной разработке. 20 | 21 | PS: не забудьте по окончанию выполнения шага создать и заполнить 22 | файл /documentation/Task_x_description.txt. Формат заполнения этого 23 | файла описан в task_1 в файле Learning_reflection.txt. 24 | 25 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 26 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 27 | * [Телеграмм автора курса] (javaguruby) 28 | * [Емейл автора курса] (itguruby@mail.ru) 29 | -------------------------------------------------------------------------------- /project/sprint_1/task_4/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_4/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_4/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_5/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_5/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_5/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_6/YourTask.txt: -------------------------------------------------------------------------------- 1 | В этом задании вы научитесь удалять артефакты (файлы) 2 | созданные Gradle в процессе сборки приложения. 3 | 4 | В папке build расположены артефакты созданные Gradle в процессе сборки приложения. 5 | 6 | У Gradle есть полезная команда, которая находится рядом 7 | с командой build. Это команда clean. Эта команда удаляет все 8 | артефакты созданные Gradle во время сборки. Эти артефакты можно 9 | увидеть в папке build (обычно подсвечивается красным в IDEA). 10 | 11 | По аналогии с командой build, запустите команду clean из закладки Gradle 12 | для всего проекта и только для вашего модуля. 13 | 14 | По аналогии с командой build, запустите команду clean из терминала 15 | для всего проекта и только для вашего модуля. 16 | 17 | ./gradlew clean 18 | ./gradlew :internship:clean 19 | 20 | Команда Gradle clean удаляет папку build, то есть удаляет все артефакты 21 | созданные в процессе сборки приложения. 22 | 23 | PS: не забудьте по окончанию выполнения шага создать и заполнить 24 | файл /documentation/Task_x_description.txt. Формат заполнения этого 25 | файла описан в task_1 в файле Learning_reflection.txt. 26 | 27 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 28 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 29 | * [Телеграмм автора курса] (javaguruby) 30 | * [Емейл автора курса] (itguruby@mail.ru) 31 | -------------------------------------------------------------------------------- /project/sprint_1/task_6/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_6/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_6/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_7/YourTask.txt: -------------------------------------------------------------------------------- 1 | В этом задании вы научитесь запускать приложение. 2 | 3 | Приложение можно запустить открыв класс 4 | InsuranceApplication и запустив его. 5 | 6 | Попробуйте выполнить это! 7 | 8 | PS: можно ли запустить две копии приложения одновременно? 9 | 10 | PS: не забудьте по окончанию выполнения шага создать и заполнить 11 | файл /documentation/Task_x_description.txt. Формат заполнения этого 12 | файла описан в task_1 в файле Learning_reflection.txt. 13 | 14 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 15 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 16 | * [Телеграмм автора курса] (javaguruby) 17 | * [Емейл автора курса] (itguruby@mail.ru) 18 | -------------------------------------------------------------------------------- /project/sprint_1/task_7/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_7/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_7/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_8/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_8/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_8/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_1/task_9/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumRequest { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import java.util.Date; 4 | 5 | public class TravelCalculatePremiumResponse { 6 | 7 | private String personFirstName; 8 | private String personLastName; 9 | private Date agreementDateFrom; 10 | private Date agreementDateTo; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_1/task_9/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_1/task_9/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_10/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_11/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_12/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_13/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_14/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_15/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_16/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_17/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_18/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_19/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_2/task_11/YourTask.txt: -------------------------------------------------------------------------------- 1 | Ваша задача: в классе TravelCalculatePremiumResponse создать 2 | - дефолтный конструктор (конструктор без параметров); 3 | - конструктор для задания начальных значений всем свойствам; 4 | - get/set методы для всех свойств класса. 5 | 6 | Совет: всегда начинайте работу над новым заданием (шагом) с выполнения 7 | команды Git pull. Эта команда подтянет все изменения из глобального 8 | репозитория к вам на компьютер и добавит их в вашу рабочую копию. 9 | Так вы всегда будете up to date! 10 | 11 | PS: не забудьте по окончанию выполнения шага создать и заполнить 12 | файл /documentation/Task_x_description.txt. Формат заполнения этого 13 | файла описан в task_1 в файле Learning_reflection.txt. 14 | 15 | PS: возможно ты найдешь полезной идею скрайбинга 16 | описанную в /teacher/ideas/scribing_notes. 17 | 18 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 19 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 20 | * [Телеграмм автора курса] (javaguruby) 21 | * [Емейл автора курса] (itguruby@mail.ru) 22 | -------------------------------------------------------------------------------- /project/sprint_2/task_11/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_11/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_11/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_11/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | return new TravelCalculatePremiumResponse(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /project/sprint_2/task_11/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_11/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_11/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_11/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_2/task_12/YourTask.txt: -------------------------------------------------------------------------------- 1 | Ваша задача: заполнить поля ответа, значения для заполнения 2 | взять из запроса. Формирование ответа это часть бизнес логики 3 | приложения, поэтому требуемые изменения внесите в класс 4 | TravelCalculatePremiumServiceImpl. 5 | 6 | Совет: перед комитом в локальный репозиторий всегда запускайте 7 | сборку вашего модуля. Это позволит отловить ошибки и исправить 8 | их еще на этапе разработки, до того как ваш код попадет в репозиторий. 9 | 10 | PS: не забудьте по окончанию выполнения шага создать и заполнить 11 | файл /documentation/Task_x_description.txt. Формат заполнения этого 12 | файла описан в task_1 в файле Learning_reflection.txt. 13 | 14 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 15 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 16 | * [Телеграмм автора курса] (javaguruby) 17 | * [Емейл автора курса] (itguruby@mail.ru) 18 | -------------------------------------------------------------------------------- /project/sprint_2/task_12/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_12/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_12/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_12/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 13 | response.setPersonFirstName(request.getPersonFirstName()); 14 | response.setPersonLastName(request.getPersonLastName()); 15 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 16 | response.setAgreementDateTo(request.getAgreementDateTo()); 17 | return response; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /project/sprint_2/task_12/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_12/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_12/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_12/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.junit.jupiter.api.Test; 4 | 5 | class TravelCalculatePremiumServiceImplTest { 6 | 7 | @Test 8 | public void deleteMe() { 9 | 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /project/sprint_2/task_13/YourTask.txt: -------------------------------------------------------------------------------- 1 | В профессиональном программировании работоспособность 2 | написанного кода доказывается автоматическими тестами. 3 | 4 | Написание тестов это наиважнейший и широко применяемый 5 | инструмент в промышленной разработке программного обеспечения. 6 | 7 | Ваша задача: докажите при помощи тестов, что ваш код заполнения 8 | ответа написанный в предыдущем задании работает правильно. Тесты 9 | напишите в классе TravelCalculatePremiumServiceImplTest, который 10 | находится в тестовой директории src/test/java. 11 | 12 | Совет: перед комитом не забывайте выполнить ВСЕ (их в будущем будет много) 13 | ваши тесты и убедиться, что они все проходят без ошибок (GREEN). 14 | 15 | PS: не забудьте по окончанию выполнения шага создать и заполнить 16 | файл /documentation/Task_x_description.txt. Формат заполнения этого 17 | файла описан в task_1 в файле Learning_reflection.txt. 18 | 19 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 20 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 21 | * [Телеграмм автора курса] (javaguruby) 22 | * [Емейл автора курса] (itguruby@mail.ru) 23 | -------------------------------------------------------------------------------- /project/sprint_2/task_13/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_13/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_13/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_13/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 13 | response.setPersonFirstName(request.getPersonFirstName()); 14 | response.setPersonLastName(request.getPersonLastName()); 15 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 16 | response.setAgreementDateTo(request.getAgreementDateTo()); 17 | return response; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /project/sprint_2/task_13/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_13/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_13/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_13/src/test/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.junit.jupiter.api.Test; 6 | 7 | import java.util.Date; 8 | 9 | import static org.junit.jupiter.api.Assertions.assertEquals; 10 | 11 | class TravelCalculatePremiumServiceImplTest { 12 | 13 | private TravelCalculatePremiumServiceImpl service = new TravelCalculatePremiumServiceImpl(); 14 | @Test 15 | public void shouldPopulateResponse() { 16 | TravelCalculatePremiumRequest request = new TravelCalculatePremiumRequest(); 17 | request.setPersonFirstName("John"); 18 | request.setPersonLastName("Peterson"); 19 | request.setAgreementDateFrom(new Date()); 20 | request.setAgreementDateTo(new Date()); 21 | 22 | TravelCalculatePremiumResponse response = service.calculatePremium(request); 23 | 24 | assertEquals(response.getPersonFirstName(), request.getPersonFirstName()); 25 | assertEquals(response.getPersonLastName(), request.getPersonLastName()); 26 | assertEquals(response.getAgreementDateFrom(), request.getAgreementDateFrom()); 27 | assertEquals(response.getAgreementDateTo(), request.getAgreementDateTo()); 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /project/sprint_2/task_14/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_14/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_14/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_14/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 13 | response.setPersonFirstName(request.getPersonFirstName()); 14 | response.setPersonLastName(request.getPersonLastName()); 15 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 16 | response.setAgreementDateTo(request.getAgreementDateTo()); 17 | return response; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /project/sprint_2/task_14/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_14/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_14/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_15/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_15/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_15/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_15/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 13 | response.setPersonFirstName(request.getPersonFirstName()); 14 | response.setPersonLastName(request.getPersonLastName()); 15 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 16 | response.setAgreementDateTo(request.getAgreementDateTo()); 17 | return response; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /project/sprint_2/task_15/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_15/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_15/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_16/YourTask.txt: -------------------------------------------------------------------------------- 1 | Ваша задача: добавить в ответ свойство agreementPrice 2 | типа BigDecimal (TravelCalculatePremiumResponse). 3 | 4 | Узнайте (загуглите), почему для представления денег в Java используется 5 | класс BigDecimal. Почему деньги не хранят в переменных типа float 6 | или double? 7 | 8 | PS: при работе над проектом вам придётся много гуглить и изучать 9 | нового. В этом и цель! Мы хотим познакомить вас с многими аспектами 10 | реальной разработки ИТ систем на языке программирования Java. 11 | 12 | PS: не забудьте по окончанию выполнения шага создать и заполнить 13 | файл /documentation/Task_x_description.txt. Формат заполнения этого 14 | файла описан в task_1 в файле Learning_reflection.txt. 15 | 16 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 17 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 18 | * [Телеграмм автора курса] (javaguruby) 19 | * [Емейл автора курса] (itguruby@mail.ru) 20 | -------------------------------------------------------------------------------- /project/sprint_2/task_16/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_16/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_16/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_16/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 9 | 10 | @Override 11 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 12 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 13 | response.setPersonFirstName(request.getPersonFirstName()); 14 | response.setPersonLastName(request.getPersonLastName()); 15 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 16 | response.setAgreementDateTo(request.getAgreementDateTo()); 17 | return response; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /project/sprint_2/task_16/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_16/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_16/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_17/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_17/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_17/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_17/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.math.BigDecimal; 8 | import java.util.concurrent.TimeUnit; 9 | 10 | @Component 11 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 12 | 13 | @Override 14 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 15 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 16 | response.setPersonFirstName(request.getPersonFirstName()); 17 | response.setPersonLastName(request.getPersonLastName()); 18 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 19 | response.setAgreementDateTo(request.getAgreementDateTo()); 20 | 21 | long diff = request.getAgreementDateFrom().getTime() - request.getAgreementDateTo().getTime(); 22 | var daysBetween = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 23 | response.setAgreementPrice(new BigDecimal(daysBetween)); 24 | 25 | return response; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /project/sprint_2/task_17/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_17/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_17/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_18/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_18/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_18/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_18/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_18/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_18/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_19/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_19/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_19/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import java.util.Date; 4 | import java.util.concurrent.TimeUnit; 5 | 6 | class DateTimeService { 7 | 8 | long getDaysBetween(Date date1, Date date2) { 9 | long diff = date2.getTime() - date1.getTime(); 10 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_19/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_19/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_19/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_19/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_20/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_2/task_20/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_20/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import java.util.Date; 4 | import java.util.concurrent.TimeUnit; 5 | 6 | class DateTimeService { 7 | 8 | long getDaysBetween(Date date1, Date date2) { 9 | long diff = date2.getTime() - date1.getTime(); 10 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_2/task_20/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_2/task_20/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_2/task_20/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_2/task_20/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_2/task_20_code_review/lecture_recordings.txt: -------------------------------------------------------------------------------- 1 | LESSON 1: 2 | Rumble: https://rumble.com/v5cy5qz--java-lecture-1.html 3 | YouTube: https://www.youtube.com/watch?v=1GO1e3sOi1o 4 | Dzen: https://dzen.ru/video/watch/66d1668bdba9601de717b131 5 | VK video: https://vk.com/video873857422_456239030 6 | RuTube: https://rutube.ru/video/faafab019d5828964b0271031ab253dd/ 7 | 8 | LESSON 2: 9 | Rumble: https://rumble.com/v5cy6wq--java-lecture-2.html 10 | YouTube: https://www.youtube.com/watch?v=GF6DxFrVACY 11 | Dzen: https://dzen.ru/video/watch/66d16774a6fec84560735a42 12 | VK video: https://vk.com/video873857422_456239031 13 | RuTube: https://rutube.ru/video/9b8d62e910780129d3cdf7fca4f5bee1/ 14 | 15 | LESSON 3: 16 | Rumble: https://rumble.com/v5cy7vx--java-lecture-3.html 17 | YouTube: https://www.youtube.com/watch?v=daENVQmjzhI 18 | Dzen: https://dzen.ru/video/watch/66d169048cf40b67a27cc47a 19 | VK video: https://vk.com/video873857422_456239032 20 | RuTube: https://rutube.ru/video/87dbb1b21177ea749d1b6656068f79a6/ -------------------------------------------------------------------------------- /project/sprint_20/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_21/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_22/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_23/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_24/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_25/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_26/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_3/task_21/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_3/task_21/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_21/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_21/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_21/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_3/task_21/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_21/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_22/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_3/task_22/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_22/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_22/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_22/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_3/task_22/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_22/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_23/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_3/task_23/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_23/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_23/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_23/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_3/task_23/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_23/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_24/YourTask.txt: -------------------------------------------------------------------------------- 1 | Ваша задача: изучите дизайн паттерн Inversion of Control (IoC). 2 | 3 | IoC в действительности поддерживает три 4 | способа получения внешних зависимостей классом: 5 | - через конструктор; 6 | - через set метод; 7 | - через свойство объекта. 8 | 9 | Разберитесь как работает дизайн паттерн Inversion of Control (IoC). 10 | Попробуйте узнать, какой способ получения зависимостей лучше, 11 | какие плюсы и минусы есть у каждого способа. 12 | 13 | 14 | Рекомендованные линки для изучения: 15 | 16 | https://martinfowler.com/articles/injection.html 17 | 18 | https://odrotbohm.de/2013/11/why-field-injection-is-evil/ 19 | 20 | https://www.baeldung.com/constructor-injection-in-spring 21 | 22 | https://livebook.manning.com/book/dependency-injection/chapter-1/ 23 | 24 | PS: не забудьте по окончанию выполнения шага создать и заполнить 25 | файл /documentation/Task_x_description.txt. Формат заполнения этого 26 | файла описан в task_1 в файле Learning_reflection.txt. 27 | 28 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 29 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 30 | * [Телеграмм автора курса] (javaguruby) 31 | * [Емейл автора курса] (itguruby@mail.ru) 32 | -------------------------------------------------------------------------------- /project/sprint_3/task_24/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_3/task_24/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_24/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_24/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_24/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Component 10 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 11 | 12 | private final DateTimeService dateTimeService; 13 | 14 | TravelCalculatePremiumServiceImpl(DateTimeService dateTimeService) { 15 | this.dateTimeService = dateTimeService; 16 | } 17 | 18 | @Override 19 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 20 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 21 | response.setPersonFirstName(request.getPersonFirstName()); 22 | response.setPersonLastName(request.getPersonLastName()); 23 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 24 | response.setAgreementDateTo(request.getAgreementDateTo()); 25 | 26 | var daysBetween = dateTimeService.getDaysBetween(request.getAgreementDateFrom(), request.getAgreementDateTo()); 27 | response.setAgreementPrice(new BigDecimal(daysBetween)); 28 | 29 | return response; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /project/sprint_3/task_24/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_3/task_24/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_24/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_25/YourTask.txt: -------------------------------------------------------------------------------- 1 | Попробуйте применить подход описанный ниже для создания мок объектов 2 | и внедрения их в качестве зависимостей. 3 | 4 | JUnit - это библиотека, которая управляет запуском юнит тестов. 5 | Ее поведение можно расширять, что и сделано с помощью 6 | @ExtendWith(MockitoExtension.class). Узнайте, что эта штука делает 7 | под капотом. Так же узнайте что такое аннотации @Mock и @InjectMocks. 8 | 9 | 10 | @ExtendWith(MockitoExtension.class) 11 | class TravelCalculatePremiumServiceImplTest { 12 | 13 | @Mock private DateTimeService dateTimeService; 14 | 15 | @InjectMocks 16 | private TravelCalculatePremiumServiceImpl service; 17 | 18 | private TravelCalculatePremiumRequest request; 19 | 20 | @BeforeEach 21 | public void setUp() { 22 | request = createRequestWithAllFields(); 23 | when(dateTimeService.getDaysBetween(request.getAgreementDateFrom(), request.getAgreementDateTo())).thenReturn(0L); 24 | } 25 | 26 | 27 | PS: не забудьте по окончанию выполнения шага создать и заполнить 28 | файл /documentation/Task_x_description.txt. Формат заполнения этого 29 | файла описан в task_1 в файле Learning_reflection.txt. 30 | 31 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 32 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 33 | * [Телеграмм автора курса] (javaguruby) 34 | * [Емейл автора курса] (itguruby@mail.ru) 35 | -------------------------------------------------------------------------------- /project/sprint_3/task_25/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 6 | 7 | test { 8 | useJUnitPlatform() 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /project/sprint_3/task_25/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_25/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_25/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_25/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Component 10 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 11 | 12 | private final DateTimeService dateTimeService; 13 | 14 | TravelCalculatePremiumServiceImpl(DateTimeService dateTimeService) { 15 | this.dateTimeService = dateTimeService; 16 | } 17 | 18 | @Override 19 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 20 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 21 | response.setPersonFirstName(request.getPersonFirstName()); 22 | response.setPersonLastName(request.getPersonLastName()); 23 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 24 | response.setAgreementDateTo(request.getAgreementDateTo()); 25 | 26 | var daysBetween = dateTimeService.getDaysBetween(request.getAgreementDateFrom(), request.getAgreementDateTo()); 27 | response.setAgreementPrice(new BigDecimal(daysBetween)); 28 | 29 | return response; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /project/sprint_3/task_25/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_3/task_25/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_25/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_26/YourTask.txt: -------------------------------------------------------------------------------- 1 | Ваша задача: 2 | 3 | Узнайте для чего используют библиотеку Lombok. 4 | (https://www.baeldung.com/intro-to-project-lombok) 5 | 6 | Добавьте в проект библиотеку Lombok. 7 | 8 | compileOnly('org.projectlombok:lombok:1.18.32') 9 | annotationProcessor('org.projectlombok:lombok:1.18.32') 10 | 11 | testCompileOnly('org.projectlombok:lombok:1.18.32') 12 | testAnnotationProcessor('org.projectlombok:lombok:1.18.32') 13 | 14 | В IntelliJIdea File -> Settings -> "Enable annotation processing" 15 | поставить галочку! 16 | 17 | Примените Lombok для генерации get/set методов и конструкторов 18 | для классов запроса и ответа: 19 | 20 | @Getter 21 | @Setter 22 | @NoArgsConstructor 23 | @AllArgsConstructor 24 | 25 | Прочитайте и поэкспериментируйте 26 | с Lombok аннотациями описанными в статье: 27 | https://habr.com/ru/articles/812101/ 28 | 29 | PS: не забудьте по окончанию выполнения шага создать и заполнить 30 | файл /documentation/Task_x_description.txt. Формат заполнения этого 31 | файла описан в task_1 в файле Learning_reflection.txt. 32 | 33 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 34 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 35 | * [Телеграмм автора курса] (javaguruby) 36 | * [Емейл автора курса] (itguruby@mail.ru) 37 | -------------------------------------------------------------------------------- /project/sprint_3/task_26/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | compileOnly('org.projectlombok:lombok:1.18.32') 6 | annotationProcessor('org.projectlombok:lombok:1.18.32') 7 | 8 | testCompileOnly('org.projectlombok:lombok:1.18.32') 9 | testAnnotationProcessor('org.projectlombok:lombok:1.18.32') 10 | 11 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 12 | 13 | test { 14 | useJUnitPlatform() 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /project/sprint_3/task_26/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_26/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_26/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_26/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | @RequestMapping("/insurance/travel") 11 | public class TravelCalculatePremiumController { 12 | 13 | private final TravelCalculatePremiumService calculatePremiumService; 14 | 15 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 16 | this.calculatePremiumService = calculatePremiumService; 17 | } 18 | 19 | @PostMapping(path = "/", 20 | consumes = "application/json", 21 | produces = "application/json") 22 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 23 | return calculatePremiumService.calculatePremium(request); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /project/sprint_3/task_26/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Date; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class TravelCalculatePremiumRequest { 15 | 16 | private String personFirstName; 17 | private String personLastName; 18 | private Date agreementDateFrom; 19 | private Date agreementDateTo; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /project/sprint_3/task_26/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.Date; 10 | 11 | @Getter 12 | @Setter 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class TravelCalculatePremiumResponse { 16 | 17 | private String personFirstName; 18 | private String personLastName; 19 | private Date agreementDateFrom; 20 | private Date agreementDateTo; 21 | private BigDecimal agreementPrice; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /project/sprint_3/task_26/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_26/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_27/Oliver Drotbohm - Why field injection is evil.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_27/Oliver Drotbohm - Why field injection is evil.pdf -------------------------------------------------------------------------------- /project/sprint_3/task_27/YourTask.txt: -------------------------------------------------------------------------------- 1 | Ваша задача: 2 | 3 | Примените Lombok для генерации конструктора 4 | в классах 5 | - TravelCalculatePremiumServiceImpl 6 | - TravelCalculatePremiumController 7 | без модификатора доступа. 8 | 9 | Для этого воспользуйтесь 10 | следующей аннотацией из Lombok библиотеки: 11 | 12 | @RequiredArgsConstructor(access = AccessLevel.PACKAGE) 13 | 14 | 15 | Прочитайте документ: 16 | Oliver Drotbohm - Why field injection is evil.pdf 17 | 18 | 19 | PS: не забудьте по окончанию выполнения шага создать и заполнить 20 | файл /documentation/Task_x_description.txt. Формат заполнения этого 21 | файла описан в task_1 в файле Learning_reflection.txt. 22 | 23 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 24 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 25 | * [Телеграмм автора курса] (javaguruby) 26 | * [Емейл автора курса] (itguruby@mail.ru) 27 | -------------------------------------------------------------------------------- /project/sprint_3/task_27/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | compileOnly('org.projectlombok:lombok:1.18.32') 6 | annotationProcessor('org.projectlombok:lombok:1.18.32') 7 | 8 | testCompileOnly('org.projectlombok:lombok:1.18.32') 9 | testAnnotationProcessor('org.projectlombok:lombok:1.18.32') 10 | 11 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 12 | 13 | test { 14 | useJUnitPlatform() 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.RequiredArgsConstructor; 5 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumRequest; 6 | import org.javaguru.travel.insurance.rest.TravelCalculatePremiumResponse; 7 | import org.springframework.stereotype.Component; 8 | 9 | import java.math.BigDecimal; 10 | 11 | @Component 12 | @RequiredArgsConstructor(access = AccessLevel.PACKAGE) 13 | class TravelCalculatePremiumServiceImpl implements TravelCalculatePremiumService { 14 | 15 | private final DateTimeService dateTimeService; 16 | 17 | @Override 18 | public TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request) { 19 | TravelCalculatePremiumResponse response = new TravelCalculatePremiumResponse(); 20 | response.setPersonFirstName(request.getPersonFirstName()); 21 | response.setPersonLastName(request.getPersonLastName()); 22 | response.setAgreementDateFrom(request.getAgreementDateFrom()); 23 | response.setAgreementDateTo(request.getAgreementDateTo()); 24 | 25 | var daysBetween = dateTimeService.getDaysBetween(request.getAgreementDateFrom(), request.getAgreementDateTo()); 26 | response.setAgreementPrice(new BigDecimal(daysBetween)); 27 | 28 | return response; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.RequiredArgsConstructor; 5 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 6 | import org.springframework.web.bind.annotation.PostMapping; 7 | import org.springframework.web.bind.annotation.RequestBody; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | @RestController 12 | @RequestMapping("/insurance/travel") 13 | @RequiredArgsConstructor(access = AccessLevel.PACKAGE) 14 | public class TravelCalculatePremiumController { 15 | 16 | private final TravelCalculatePremiumService calculatePremiumService; 17 | 18 | @PostMapping(path = "/", 19 | consumes = "application/json", 20 | produces = "application/json") 21 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 22 | return calculatePremiumService.calculatePremium(request); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Date; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class TravelCalculatePremiumRequest { 15 | 16 | private String personFirstName; 17 | private String personLastName; 18 | private Date agreementDateFrom; 19 | private Date agreementDateTo; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.Date; 10 | 11 | @Getter 12 | @Setter 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class TravelCalculatePremiumResponse { 16 | 17 | private String personFirstName; 18 | private String personLastName; 19 | private Date agreementDateFrom; 20 | private Date agreementDateTo; 21 | private BigDecimal agreementPrice; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /project/sprint_3/task_27/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_27/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_28/YourTask.txt: -------------------------------------------------------------------------------- 1 | Любое ИТ решение трудно себе представить без процесса 2 | валидации входных данных. Валидация входных данных становится 3 | очень актуальной, когда с приложением взаимодействует человек. 4 | Человеку по своей природе свойственно ошибаться. Он запросто 5 | может оставить важное поле не заполненным, или вписать в поле 6 | вместо цифры буквы. Для выявления таких ситуаций и нужна 7 | валидация входных данных в ИТ решениях. 8 | 9 | Нам необходимо реализовать валидацию входных данных. 10 | Это не самое простое задание. Ментор создал прототип 11 | (возможно не до конца правильно работающее решение) 12 | кода валидации. 13 | 14 | Ваша задача: ознакомиться с прототипом валидации и понять 15 | как он работает. Если в процессе изучения кода у вас возникнут 16 | вопросы, задавайте их! 17 | 18 | Внедрите код валидации предложенный ментором в свой проект! 19 | 20 | PS: не забудьте по окончанию выполнения шага создать и заполнить 21 | файл /documentation/Task_x_description.txt. Формат заполнения этого 22 | файла описан в task_1 в файле Learning_reflection.txt. 23 | 24 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 25 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 26 | * [Телеграмм автора курса] (javaguruby) 27 | * [Емейл автора курса] (itguruby@mail.ru) 28 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | compileOnly('org.projectlombok:lombok:1.18.32') 6 | annotationProcessor('org.projectlombok:lombok:1.18.32') 7 | 8 | testCompileOnly('org.projectlombok:lombok:1.18.32') 9 | testAnnotationProcessor('org.projectlombok:lombok:1.18.32') 10 | 11 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 12 | 13 | test { 14 | useJUnitPlatform() 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumRequestValidator.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.dto.ValidationError; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | @Component 12 | class TravelCalculatePremiumRequestValidator { 13 | 14 | public List validate(TravelCalculatePremiumRequest request) { 15 | List errors = new ArrayList<>(); 16 | validatePersonFirstName(request).ifPresent(errors::add); 17 | return errors; 18 | } 19 | 20 | private Optional validatePersonFirstName(TravelCalculatePremiumRequest request) { 21 | return (request.getPersonFirstName() == null || request.getPersonLastName().isEmpty()) 22 | ? Optional.of(new ValidationError("personFirstName", "Must not be empty!")) 23 | : Optional.empty(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/dto/CoreResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class CoreResponse { 15 | 16 | private List errors; 17 | 18 | public boolean hasErrors() { 19 | return errors != null && !errors.isEmpty(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/dto/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Date; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class TravelCalculatePremiumRequest { 15 | 16 | private String personFirstName; 17 | private String personLastName; 18 | private Date agreementDateFrom; 19 | private Date agreementDateTo; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/dto/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.Date; 10 | import java.util.List; 11 | 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class TravelCalculatePremiumResponse extends CoreResponse { 17 | 18 | private String personFirstName; 19 | private String personLastName; 20 | private Date agreementDateFrom; 21 | private Date agreementDateTo; 22 | private BigDecimal agreementPrice; 23 | 24 | public TravelCalculatePremiumResponse(List errors) { 25 | super(errors); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/dto/ValidationError.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class ValidationError { 13 | 14 | private String field; 15 | private String message; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 5 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumResponse; 6 | import org.springframework.web.bind.annotation.PostMapping; 7 | import org.springframework.web.bind.annotation.RequestBody; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | @RestController 12 | @RequestMapping("/insurance/travel") 13 | public class TravelCalculatePremiumController { 14 | 15 | private final TravelCalculatePremiumService calculatePremiumService; 16 | 17 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 18 | this.calculatePremiumService = calculatePremiumService; 19 | } 20 | 21 | @PostMapping(path = "/", 22 | consumes = "application/json", 23 | produces = "application/json") 24 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 25 | return calculatePremiumService.calculatePremium(request); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /project/sprint_3/task_28/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_28/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_29/YourTask.txt: -------------------------------------------------------------------------------- 1 | Ваша задача: написать тесты к классу 2 | TravelCalculatePremiumRequestValidator, 3 | найти в нём ошибку и исправить ее. 4 | 5 | PS: не забудьте по окончанию выполнения шага создать и заполнить 6 | файл /documentation/Task_x_description.txt. Формат заполнения этого 7 | файла описан в task_1 в файле Learning_reflection.txt. 8 | 9 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 10 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 11 | * [Телеграмм автора курса] (javaguruby) 12 | * [Емейл автора курса] (itguruby@mail.ru) 13 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | compileOnly('org.projectlombok:lombok:1.18.32') 6 | annotationProcessor('org.projectlombok:lombok:1.18.32') 7 | 8 | testCompileOnly('org.projectlombok:lombok:1.18.32') 9 | testAnnotationProcessor('org.projectlombok:lombok:1.18.32') 10 | 11 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 12 | 13 | test { 14 | useJUnitPlatform() 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumRequestValidator.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.dto.ValidationError; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | @Component 12 | class TravelCalculatePremiumRequestValidator { 13 | 14 | public List validate(TravelCalculatePremiumRequest request) { 15 | List errors = new ArrayList<>(); 16 | validatePersonFirstName(request).ifPresent(errors::add); 17 | return errors; 18 | } 19 | 20 | private Optional validatePersonFirstName(TravelCalculatePremiumRequest request) { 21 | return (request.getPersonFirstName() == null || request.getPersonFirstName().isEmpty()) 22 | ? Optional.of(new ValidationError("personFirstName", "Must not be empty!")) 23 | : Optional.empty(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/dto/CoreResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class CoreResponse { 15 | 16 | private List errors; 17 | 18 | public boolean hasErrors() { 19 | return errors != null && !errors.isEmpty(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/dto/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Date; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class TravelCalculatePremiumRequest { 15 | 16 | private String personFirstName; 17 | private String personLastName; 18 | private Date agreementDateFrom; 19 | private Date agreementDateTo; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/dto/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.Date; 10 | import java.util.List; 11 | 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class TravelCalculatePremiumResponse extends CoreResponse { 17 | 18 | private String personFirstName; 19 | private String personLastName; 20 | private Date agreementDateFrom; 21 | private Date agreementDateTo; 22 | private BigDecimal agreementPrice; 23 | 24 | public TravelCalculatePremiumResponse(List errors) { 25 | super(errors); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/dto/ValidationError.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class ValidationError { 13 | 14 | private String field; 15 | private String message; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 5 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumResponse; 6 | import org.springframework.web.bind.annotation.PostMapping; 7 | import org.springframework.web.bind.annotation.RequestBody; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | @RestController 12 | @RequestMapping("/insurance/travel") 13 | public class TravelCalculatePremiumController { 14 | 15 | private final TravelCalculatePremiumService calculatePremiumService; 16 | 17 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 18 | this.calculatePremiumService = calculatePremiumService; 19 | } 20 | 21 | @PostMapping(path = "/", 22 | consumes = "application/json", 23 | produces = "application/json") 24 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 25 | return calculatePremiumService.calculatePremium(request); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /project/sprint_3/task_29/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_29/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_30/YourTask.txt: -------------------------------------------------------------------------------- 1 | Бизнес требование гласит, запрос без фамилии должен считаться не валидным. 2 | 3 | Ваша задача: реализуйте это бизнес правило. 4 | Постарайтесь поместить код реализации в правильное место. 5 | 6 | PS: Не забудьте про тесты! Решение без тестов не принимается! 7 | 8 | PS: Заведите у себя папку /documentation и начните собирать 9 | требования к системе в одном месте. В папке /documentation 10 | можете создать текстовый документ, например BusinessRequirements.txt 11 | и в него записывать все требования к приложению, которые будут 12 | встречаться по ходу разработки проекта. 13 | 14 | PS: не забудьте по окончанию выполнения шага создать и заполнить 15 | файл /documentation/Task_x_description.txt. Формат заполнения этого 16 | файла описан в task_1 в файле Learning_reflection.txt. 17 | 18 | #### Доступ к закрытой части курса, поддержка, вопросы и обратная связь по проекту: 19 | * [Телеграмм группа проекта](https://t.me/+mvRhG9YECTlkZjQ0) 20 | * [Телеграмм автора курса] (javaguruby) 21 | * [Емейл автора курса] (itguruby@mail.ru) 22 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | 3 | implementation('org.springframework.boot:spring-boot-starter-web:3.2.5') 4 | 5 | compileOnly('org.projectlombok:lombok:1.18.32') 6 | annotationProcessor('org.projectlombok:lombok:1.18.32') 7 | 8 | testCompileOnly('org.projectlombok:lombok:1.18.32') 9 | testAnnotationProcessor('org.projectlombok:lombok:1.18.32') 10 | 11 | testImplementation('org.springframework.boot:spring-boot-starter-test:3.2.5') 12 | 13 | test { 14 | useJUnitPlatform() 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /project/sprint_3/task_30/documentation/BusinessRequirements.txt: -------------------------------------------------------------------------------- 1 | 1. Каждый запрос должен включать в себя имя и фамилию заявителя. Запросы без указания фамилии следует считать некорректными и отклонять. 2 | 3 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/InsuranceApplication.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class InsuranceApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(InsuranceApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/core/DateTimeService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | @Component 9 | class DateTimeService { 10 | 11 | long getDaysBetween(Date date1, Date date2) { 12 | long diff = date2.getTime() - date1.getTime(); 13 | return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/core/TravelCalculatePremiumService.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.core; 2 | 3 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 4 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumResponse; 5 | 6 | public interface TravelCalculatePremiumService { 7 | 8 | TravelCalculatePremiumResponse calculatePremium(TravelCalculatePremiumRequest request); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/dto/CoreResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class CoreResponse { 15 | 16 | private List errors; 17 | 18 | public boolean hasErrors() { 19 | return errors != null && !errors.isEmpty(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/dto/TravelCalculatePremiumRequest.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Date; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class TravelCalculatePremiumRequest { 15 | 16 | private String personFirstName; 17 | private String personLastName; 18 | private Date agreementDateFrom; 19 | private Date agreementDateTo; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/dto/TravelCalculatePremiumResponse.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.Date; 10 | import java.util.List; 11 | 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class TravelCalculatePremiumResponse extends CoreResponse { 17 | 18 | private String personFirstName; 19 | private String personLastName; 20 | private Date agreementDateFrom; 21 | private Date agreementDateTo; 22 | private BigDecimal agreementPrice; 23 | 24 | public TravelCalculatePremiumResponse(List errors) { 25 | super(errors); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/dto/ValidationError.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class ValidationError { 13 | 14 | private String field; 15 | private String message; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/java/org/javaguru/travel/insurance/rest/TravelCalculatePremiumController.java: -------------------------------------------------------------------------------- 1 | package org.javaguru.travel.insurance.rest; 2 | 3 | import org.javaguru.travel.insurance.core.TravelCalculatePremiumService; 4 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumRequest; 5 | import org.javaguru.travel.insurance.dto.TravelCalculatePremiumResponse; 6 | import org.springframework.web.bind.annotation.PostMapping; 7 | import org.springframework.web.bind.annotation.RequestBody; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | @RestController 12 | @RequestMapping("/insurance/travel") 13 | public class TravelCalculatePremiumController { 14 | 15 | private final TravelCalculatePremiumService calculatePremiumService; 16 | 17 | TravelCalculatePremiumController(TravelCalculatePremiumService calculatePremiumService) { 18 | this.calculatePremiumService = calculatePremiumService; 19 | } 20 | 21 | @PostMapping(path = "/", 22 | consumes = "application/json", 23 | produces = "application/json") 24 | public TravelCalculatePremiumResponse calculatePremium(@RequestBody TravelCalculatePremiumRequest request) { 25 | return calculatePremiumService.calculatePremium(request); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /project/sprint_3/task_30/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/javagurulv/virtual_internship_v3/b72f7e917fdef8706085374d0b6bc384290c4c65/project/sprint_3/task_30/src/main/resources/application.properties -------------------------------------------------------------------------------- /project/sprint_3/task_31_what_next/project_themes/1. Build Tools, Gradle, Maven project structure.txt: -------------------------------------------------------------------------------- 1 | 1. Build Tools, Gradle, Maven project structure 2 | 3 | Инструменты сборки приложений (Building Tools) играют важную роль 4 | в процессе разработки современных Java Backend приложений. Они 5 | помогают подключать зависимости в проект, а так же автоматизировать 6 | процесс сборки проекта (CI - Continues Integration). 7 | 8 | Современная сборка приложения это процесс, который состоит из 9 | большого числа шагов, таких как компиляция продакшн и тестового кода, 10 | запуск тестов, генерация отчета по тестам, сборка артефакта для деплоя 11 | и так далее. Все эти шаги можно автоматизировать внедрив в свой проект 12 | Maven структуру проекта и один из Build Tools. 13 | 14 | На данный момент для новых проектов самым популярным инструментом 15 | сборки является Gradle. Проект курса Виртуальная Стажировка (Java) 16 | использует Gradle для сборки проекта. Слушатель на практике освоит 17 | работу с основными командами Gradle и научится эффективно использовать 18 | Build Tool Gradle для автоматизации сборки проекта и построения 19 | Continues Integration (CI) процесса. 20 | 21 | Курс Виртуальная Стажировка (Java): 22 | https://stepik.org/course/210937 23 | 24 | Телеграмм группа проекта Виртуальная Стажировка (Java): 25 | https://t.me/+mvRhG9YECTlkZjQ0 26 | 27 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_3/task_31_what_next/project_themes/2. IoC (Inversion of Control).txt: -------------------------------------------------------------------------------- 1 | 2. Design pattern: IoC (Inversion of Control) 2 | 3 | Дизайн паттерн Inversion of Control (IoC) 4 | это один из основных паттернов, которые 5 | должен знать Java Backend разработчик. 6 | 7 | IoC открывает путь к пониманию того как 8 | из большого количества маленьких кусочков 9 | в runtime собирается инфраструктура приложения 10 | готовая к обработке пользовательских запросов. 11 | 12 | Дизайн паттерн IoC лежит в самом сердце 13 | одной из самых популярных библиотек разработки 14 | приложений Spring Framework. IoC это ключ к 15 | пониманию того, как инициализируются и работают 16 | приложения под управлением Spring Framework. 17 | 18 | IoC это настоящий волшебник, который может 19 | собрать работающее приложение из сотен и тысяч 20 | маленький классов и заставить их работать вместе. 21 | 22 | В проекте Виртуальная Стажировка (Java) мы на практике 23 | изучаем дизайн паттерн Inversion of Control и пользуемся 24 | его реализацией в Spring Framework для создания 25 | современных Java Backend приложений (микро сервисов). 26 | 27 | Курс Виртуальная Стажировка (Java): 28 | https://stepik.org/course/210937 29 | 30 | Телеграмм группа проекта Виртуальная Стажировка (Java): 31 | https://t.me/+mvRhG9YECTlkZjQ0 32 | 33 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_3/task_31_what_next/project_themes/5. Mockito library.txt: -------------------------------------------------------------------------------- 1 | Mockito library 2 | 3 | Современные Java Backend приложения состоят 4 | из большого числа связанных друг с другом классов. 5 | Редко когда встретишь класс, который ни от кого 6 | не зависит. В такой среде чистое юнит тестирование 7 | становится сложной задачей. 8 | 9 | В такой ситуации на помощь Java программисту 10 | приходят мок объекты (mock objects). Мок объекты 11 | это специальные умные заглушки, которые позволяют 12 | изолировать тестируемый класс от внешних 13 | зависимостей и провести его чистое юнит тестирование. 14 | 15 | Библиотека Mockito это отличный инструмент для 16 | создания и управления мок объектами (mock objects). 17 | С помощью Mockito библиотеки можно легко создавать 18 | мок объекты, управлять их поведением и проверять 19 | историю взаимодействия с ними. 20 | 21 | Mockito открывает путь к применению BDD 22 | (Behavior Driven Development). 23 | 24 | В проекте Виртуальная Стажировка (Java) библиотека 25 | Mockito используется для создания моков и тестирования 26 | классов с зависимостями. В нужных местах используется 27 | подход BDD для проверки правильного взаимодействия 28 | между классами. 29 | 30 | Курс Виртуальная Стажировка (Java): 31 | https://stepik.org/course/210937 32 | 33 | Телеграмм группа проекта Виртуальная Стажировка (Java): 34 | https://t.me/+mvRhG9YECTlkZjQ0 35 | 36 | Moving Java Forward {JG} 37 | -------------------------------------------------------------------------------- /project/sprint_3/task_31_what_next/project_themes/6. Библиотека Lombok.txt: -------------------------------------------------------------------------------- 1 | Библиотека Lombok 2 | 3 | Писать шаблонный код это нудно и не продуктивно. 4 | Программисты ленивые ребята и всегда изобретают 5 | разные интересные штуки, чтобы не заниматься 6 | скучными делами. Библиотека Lombok одно из 7 | таких изобретений. 8 | 9 | Библиотека Lombok позволяет используя всего 10 | пару аннотаций создать конструктор, get и set 11 | методы, билдер и много чего другого. 12 | 13 | В проекте Виртуальная Стажировка (Java) 14 | мы используем библиотеку Lombok с самого 15 | начала проекта и генерим с помощью нее 16 | тот самый шаблонный код. 17 | 18 | Помимо этого на лекциях курса мы разбираем работу 19 | препроцессора аннотаций для того, чтобы понимать 20 | как библиотека Lombok выполняет свою работу. 21 | 22 | Курс Виртуальная Стажировка (Java): 23 | https://stepik.org/course/210937 24 | 25 | Телеграмм группа проекта Виртуальная Стажировка (Java): 26 | https://t.me/+mvRhG9YECTlkZjQ0 27 | 28 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_3/task_31_what_next/project_themes/7. Логирование.txt: -------------------------------------------------------------------------------- 1 | Логирование (Log4j, slf4j, etc) 2 | 3 | Концепция наблюдаемости (observability) очень важное 4 | понятие для современной Java Backend разработки. 5 | В мире микро сервисов, виртуальных машин и контейнеризации 6 | наблюдаемость (observability) играет решающую роль 7 | в построении стабильно работающих компьютерных систем. 8 | 9 | В понятие наблюдаемости (observability) входят: 10 | логи, метрики и трейсинг. 11 | 12 | Логи компьютерных систем можно сравнить со следами 13 | на снегу. Они дают возможность разработчикам исследовать 14 | поведение компьютерной системы, находить проблемы и устранять их. 15 | 16 | В проекте Виртуальная Стажировка (Java) мы знакомимся 17 | с понятием логирования и внедряем логи в разрабатываемые 18 | приложения. Так же во время лекций курса мы изучаем 19 | как устроена и работает система логирования внутри, 20 | как и куда собираются логи, и как они анализируются. 21 | 22 | Курс Виртуальная Стажировка (Java): 23 | https://stepik.org/course/210937 24 | 25 | Телеграмм группа проекта Виртуальная Стажировка (Java): 26 | https://t.me/+mvRhG9YECTlkZjQ0 27 | 28 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_4/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_5/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_6/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_7/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_8/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /project/sprint_9/GetAccess.txt: -------------------------------------------------------------------------------- 1 | Спасибо за то что вы уделили время проекту 2 | Виртуальная Стажировка Java. 3 | 4 | Очень надеемся, что проект вам понравился. 5 | 6 | Полный проект состоит из 263 заданий. 7 | 8 | По условиям получения доступа к закрытой 9 | части проекта свяжитесь с автором проекта: 10 | - Телеграмм: (@javagurulv) или (@javaguruby) 11 | - Емейл: javagurulv@gmail.com или itguruby@mail.ru 12 | 13 | Moving Java Forward {JG} -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include 'internship' 2 | 3 | 4 | include 'project:sprint_0:task_0' 5 | include 'project:sprint_1:task_1' 6 | include 'project:sprint_1:task_2' 7 | include 'project:sprint_1:task_3' 8 | include 'project:sprint_1:task_4' 9 | include 'project:sprint_1:task_5' 10 | include 'project:sprint_1:task_6' 11 | include 'project:sprint_1:task_7' 12 | include 'project:sprint_1:task_8' 13 | include 'project:sprint_1:task_9' 14 | include 'project:sprint_1:task_10' 15 | include 'project:sprint_2:task_11' 16 | include 'project:sprint_2:task_12' 17 | include 'project:sprint_2:task_13' 18 | include 'project:sprint_2:task_14' 19 | include 'project:sprint_2:task_15' 20 | include 'project:sprint_2:task_16' 21 | include 'project:sprint_2:task_17' 22 | include 'project:sprint_2:task_18' 23 | include 'project:sprint_2:task_19' 24 | include 'project:sprint_2:task_20' 25 | include 'project:sprint_3:task_21' 26 | include 'project:sprint_3:task_22' 27 | include 'project:sprint_3:task_23' 28 | include 'project:sprint_3:task_24' 29 | include 'project:sprint_3:task_25' 30 | include 'project:sprint_3:task_26' 31 | include 'project:sprint_3:task_27' 32 | include 'project:sprint_3:task_28' 33 | include 'project:sprint_3:task_29' 34 | include 'project:sprint_3:task_30' 35 | --------------------------------------------------------------------------------