diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectExpense.kt b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectExpense.kt index 4ebf980..547df5b 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectExpense.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectExpense.kt @@ -14,7 +14,6 @@ open class ProjectExpense : BaseEntity(){ @Column(name = "expenseNo", length = 45) open var expenseNo: String? = null - @NotNull @Column(name = "issueDate") open var issueDate: LocalDate? = null diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/projections/ProjectExpenseSearchInfo.kt b/src/main/java/com/ffii/tsms/modules/project/entity/projections/ProjectExpenseSearchInfo.kt index 9ade337..dd4ea8a 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/projections/ProjectExpenseSearchInfo.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/projections/ProjectExpenseSearchInfo.kt @@ -26,4 +26,5 @@ interface ProjectExpenseSearchInfo { val amount: Double val issueDate: LocalDate val receiptDate: LocalDate? + val remarks: String? } diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt index b7e69f2..6828148 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt @@ -6,6 +6,7 @@ import com.ffii.tsms.modules.project.entity.ProjectExpense import com.ffii.tsms.modules.project.entity.ProjectExpenseRepository import com.ffii.tsms.modules.project.entity.ProjectRepository import com.ffii.tsms.modules.project.entity.projections.ProjectExpenseSearchInfo +import com.ffii.tsms.modules.project.web.models.EditProjectExpenseRequest import com.ffii.tsms.modules.project.web.models.ProjectExpenseRequest import org.springframework.stereotype.Service @@ -42,4 +43,26 @@ open class ProjectExpenseService( return true } + open fun deleteProjectExpense(id: Long){ + repository.save(repository.findById(id).orElseThrow().apply { deleted = true }) + } + + open fun updateProjectExpenseDetail(projectExpenseReq: EditProjectExpenseRequest): ProjectExpenseSearchInfo?{ + val projectExpense = repository.findById(projectExpenseReq.id!!) + + if(projectExpense.isPresent){ + + projectExpense.get().apply { + projectExpenseReq.expenseNo?.let{ expenseNo = it} +// projectExpenseReq.issueDate?.let { issueDate = it } +// projectExpenseReq.receiptDate?.let{ receiptDate = it } + amount = projectExpenseReq.amount + projectExpenseReq.remarks?.let { remarks = it } + }.also { + saveAndFlush(it) + } + return repository.findExpenseSearchInfoByDeletedFalse().find { it.id == projectExpenseReq.id } + } + return null + } } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt b/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt index c076d4f..5b36109 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt @@ -4,8 +4,10 @@ import com.ffii.tsms.modules.data.entity.Staff import com.ffii.tsms.modules.data.web.models.NewStaffRequest import com.ffii.tsms.modules.project.entity.projections.ProjectExpenseSearchInfo import com.ffii.tsms.modules.project.service.ProjectExpenseService +import com.ffii.tsms.modules.project.web.models.EditProjectExpenseRequest import com.ffii.tsms.modules.project.web.models.ProjectExpenseRequest import jakarta.validation.Valid +import org.springframework.http.HttpStatus import org.springframework.web.bind.annotation.* @RestController @@ -21,4 +23,15 @@ class ProjectExpenseController( fun saveProjectExpense(@Valid @RequestBody newProjectExpense: List): Boolean { return projectExpenseService.createProjectExpense(newProjectExpense) } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + fun deleteProjectExpense(@PathVariable id: Long){ + projectExpenseService.deleteProjectExpense(id) + } + + @PostMapping("/update") + fun updateProjectExpenseDetail(@RequestBody req: EditProjectExpenseRequest): ProjectExpenseSearchInfo?{ + return projectExpenseService.updateProjectExpenseDetail(req) + } } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/EditProjectExpenseRequest.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/EditProjectExpenseRequest.kt new file mode 100644 index 0000000..e9b531c --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/EditProjectExpenseRequest.kt @@ -0,0 +1,14 @@ +package com.ffii.tsms.modules.project.web.models + +import jakarta.validation.constraints.NotNull +import java.time.LocalDate + +data class EditProjectExpenseRequest ( + val id: Long?, + val expenseNo: String?, +// val issueDate: LocalDate?, +// val receiptDate: LocalDate?, + @field:NotNull(message = "amount cannot be empty") + val amount: Double, + val remarks: String?, +) diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt index 4d09045..6f7c20a 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt @@ -11,8 +11,7 @@ data class ProjectExpenseRequest ( @field:NotNull(message = "projectId cannot be empty") val projectId: Long, - @field:NotNull(message = "issueDate cannot be empty") - val issueDate: LocalDate, + val issueDate: LocalDate?, val receiptDate: LocalDate?, diff --git a/src/main/resources/db/changelog/changes/20240912_01_derek/03_issueDate_null.sql b/src/main/resources/db/changelog/changes/20240912_01_derek/03_issueDate_null.sql new file mode 100644 index 0000000..49a011c --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240912_01_derek/03_issueDate_null.sql @@ -0,0 +1,7 @@ +-- liquibase formatted sql + +-- changeset jason:project_expense_issueDate_NULL + + +ALTER TABLE tsmsdb.project_expense MODIFY COLUMN issueDate date NULL; +