From fbaf46b19ab4be8b42b36b9d1101bbbadfa9dce3 Mon Sep 17 00:00:00 2001 From: "MSI\\2Fi" Date: Mon, 6 May 2024 17:16:50 +0800 Subject: [PATCH] Company Holiday --- .../data/entity/CompanyHolidayRepository.java | 5 +++ .../projections/CompanyHolidayInfo.java | 15 +++++++ .../data/service/CompanyHolidayService.kt | 44 +++++++++++++++++++ .../data/web/CompanyHolidayController.kt | 38 ++++++++++++++++ .../web/models/NewCompanyHolidayRequest.kt | 14 ++++++ 5 files changed, 116 insertions(+) create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/projections/CompanyHolidayInfo.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/service/CompanyHolidayService.kt create mode 100644 src/main/java/com/ffii/tsms/modules/data/web/CompanyHolidayController.kt create mode 100644 src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyHolidayRequest.kt diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java index b5c67a9..de27c30 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java @@ -1,6 +1,11 @@ package com.ffii.tsms.modules.data.entity; import com.ffii.core.support.AbstractRepository; +import com.ffii.tsms.modules.data.entity.projections.CompanyHolidayInfo; +import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo; + +import java.util.List; public interface CompanyHolidayRepository extends AbstractRepository { + List findCompanyHolidayInfoByAndDeletedFalse(); } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/projections/CompanyHolidayInfo.java b/src/main/java/com/ffii/tsms/modules/data/entity/projections/CompanyHolidayInfo.java new file mode 100644 index 0000000..cd6d03c --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/projections/CompanyHolidayInfo.java @@ -0,0 +1,15 @@ +package com.ffii.tsms.modules.data.entity.projections; + +import java.time.LocalDate; + +/** + * Projection for {@link com.ffii.tsms.modules.data.entity.Company} + */ +public interface CompanyHolidayInfo { + + Long getId(); + + String getName(); + + LocalDate getDate(); +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/service/CompanyHolidayService.kt b/src/main/java/com/ffii/tsms/modules/data/service/CompanyHolidayService.kt new file mode 100644 index 0000000..15aa229 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/service/CompanyHolidayService.kt @@ -0,0 +1,44 @@ +package com.ffii.tsms.modules.data.service + +import com.ffii.core.support.AbstractBaseEntityService +import com.ffii.core.support.JdbcDao +import com.ffii.tsms.modules.data.entity.Company +import com.ffii.tsms.modules.data.entity.CompanyHoliday +import com.ffii.tsms.modules.data.entity.CompanyHolidayRepository +import com.ffii.tsms.modules.data.entity.CompanyRepository +import com.ffii.tsms.modules.data.entity.Position +import com.ffii.tsms.modules.data.entity.projections.CompanyHolidayInfo +import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo +import com.ffii.tsms.modules.data.web.models.NewCompanyHolidayRequest +import com.ffii.tsms.modules.data.web.models.NewCompanyRequest +import com.ffii.tsms.modules.data.web.models.NewPositionRequest +import org.springframework.beans.BeanUtils +import org.springframework.stereotype.Service +@Service +open class CompanyHolidayService( + private val companyHolidayRepository: CompanyHolidayRepository, + private val jdbcDao: JdbcDao, +) : AbstractBaseEntityService(jdbcDao, companyHolidayRepository) { + open fun allCompanyHolidays(): List{ + return companyHolidayRepository.findCompanyHolidayInfoByAndDeletedFalse() + } + + open fun saveCompanyHoliday(request: NewCompanyHolidayRequest): CompanyHoliday { +// println("------------------------ Date ----------------------") +// println(request.date) + var companyHoliday = CompanyHoliday() + + if (request.id != null && request.id > 0) { + companyHoliday = companyHolidayRepository.findById(request.id).orElseThrow() + + BeanUtils.copyProperties(request, companyHoliday) + + }else{ + companyHoliday.name = request.name + companyHoliday.date = request.date + } + + return companyHolidayRepository.save(companyHoliday) + } + +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/web/CompanyHolidayController.kt b/src/main/java/com/ffii/tsms/modules/data/web/CompanyHolidayController.kt new file mode 100644 index 0000000..5c4408a --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/web/CompanyHolidayController.kt @@ -0,0 +1,38 @@ +package com.ffii.tsms.modules.data.web.models + +import com.ffii.core.response.RecordsRes +import com.ffii.core.utils.CriteriaArgsBuilder +import com.ffii.tsms.modules.data.entity.Company +import com.ffii.tsms.modules.data.entity.CompanyHoliday +import com.ffii.tsms.modules.data.entity.Position +import com.ffii.tsms.modules.data.entity.projections.CompanyHolidayInfo +import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo +import com.ffii.tsms.modules.data.service.CompanyHolidayService +import com.ffii.tsms.modules.data.service.CompanyService +import jakarta.servlet.http.HttpServletRequest +import jakarta.validation.Valid +import org.springframework.http.HttpStatus +import org.springframework.web.bind.ServletRequestBindingException +import org.springframework.web.bind.annotation.* + + +@RestController +@RequestMapping("/company-holidays") +class CompanyHolidayController(private val companyHolidayService: CompanyHolidayService) { + @GetMapping + fun allCompanyHolidays(): List{ + return companyHolidayService.allCompanyHolidays() + } + + @PostMapping("/new") + fun saveCompanyHoliday(@Valid @RequestBody newCompanyHoliday: NewCompanyHolidayRequest): CompanyHoliday { + return companyHolidayService.saveCompanyHoliday(newCompanyHoliday) + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + fun deleteHoliday(@PathVariable id: Long) { + companyHolidayService.markDelete(id) + } + +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyHolidayRequest.kt b/src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyHolidayRequest.kt new file mode 100644 index 0000000..42e10fc --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyHolidayRequest.kt @@ -0,0 +1,14 @@ +package com.ffii.tsms.modules.data.web.models + +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import java.time.LocalDate +import java.time.LocalTime + +data class NewCompanyHolidayRequest ( + val id: Long?, + @field: NotBlank(message = "Company Holiday Name cannot be empty") + val name: String, + @field:NotNull(message = "Company Holiday Date cannot be empty") + val date: LocalDate, +)