From f1c3787ac7a175a42d4c8837f72e5ce124ebe5e1 Mon Sep 17 00:00:00 2001 From: Wayne Date: Tue, 30 Apr 2024 21:58:22 +0900 Subject: [PATCH] Fix project saving --- .../modules/project/entity/ProjectRepository.kt | 2 +- .../modules/project/service/ProjectsService.kt | 16 +++++++++++++--- .../modules/project/web/ProjectsController.kt | 3 ++- .../project/web/models/NewProjectResponse.kt | 10 ++++++++++ 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectResponse.kt diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt index 233d91c..cb0c28f 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt @@ -6,7 +6,7 @@ import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo interface ProjectRepository : AbstractRepository { - fun findProjectSearchInfoBy(): List + fun findProjectSearchInfoByOrderByCreatedDesc(): List fun findInvoiceSearchInfoBy(): List diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt index d91c5c0..a2dafa3 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt @@ -12,6 +12,7 @@ import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo import com.ffii.tsms.modules.project.web.models.AssignedProject import com.ffii.tsms.modules.project.web.models.MilestoneInfo import com.ffii.tsms.modules.project.web.models.NewProjectRequest +import com.ffii.tsms.modules.project.web.models.NewProjectResponse import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import java.time.LocalDate @@ -40,7 +41,7 @@ open class ProjectsService( private val projectTaskRepository: ProjectTaskRepository ) { open fun allProjects(): List { - return projectRepository.findProjectSearchInfoBy() + return projectRepository.findProjectSearchInfoByOrderByCreatedDesc() } open fun allInvoices(): List { @@ -87,7 +88,7 @@ open class ProjectsService( } @Transactional - open fun saveProject(request: NewProjectRequest): Project { + open fun saveProject(request: NewProjectRequest): NewProjectResponse { val projectCategory = projectCategoryRepository.findById(request.projectCategoryId).orElseThrow() val fundingType = fundingTypeRepository.findById(request.fundingTypeId).orElseThrow() @@ -184,7 +185,16 @@ open class ProjectsService( } } staffAllocationRepository.saveAll(staffAllocations) - return savedProject + return savedProject.let { + NewProjectResponse( + id = it.id, + code = it.code, + name = it.name, + client = it.customer?.name, + category = it.projectCategory?.name, + team = it.teamLead?.team?.code + ) + } } open fun allFundingTypes(): List { diff --git a/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt b/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt index 12a709d..6d30750 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt @@ -7,6 +7,7 @@ import com.ffii.tsms.modules.project.entity.ProjectCategory import com.ffii.tsms.modules.project.service.ProjectsService import com.ffii.tsms.modules.project.web.models.AssignedProject import com.ffii.tsms.modules.project.web.models.NewProjectRequest +import com.ffii.tsms.modules.project.web.models.NewProjectResponse import jakarta.validation.Valid import org.springframework.web.bind.annotation.* @@ -29,7 +30,7 @@ class ProjectsController(private val projectsService: ProjectsService) { } @PostMapping("/new") - fun saveProject(@Valid @RequestBody newProject: NewProjectRequest): Project { + fun saveProject(@Valid @RequestBody newProject: NewProjectRequest): NewProjectResponse { return projectsService.saveProject(newProject) } diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectResponse.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectResponse.kt new file mode 100644 index 0000000..0043d7d --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectResponse.kt @@ -0,0 +1,10 @@ +package com.ffii.tsms.modules.project.web.models + +data class NewProjectResponse( + val id: Long?, + val name: String?, + val code: String?, + val category: String?, + val team: String?, + val client: String?, +)