| @@ -1,6 +1,11 @@ | |||||
| package com.ffii.tsms.modules.data.entity; | package com.ffii.tsms.modules.data.entity; | ||||
| import com.ffii.core.support.AbstractRepository; | 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<CompanyHoliday, Long> { | public interface CompanyHolidayRepository extends AbstractRepository<CompanyHoliday, Long> { | ||||
| List<CompanyHolidayInfo> findCompanyHolidayInfoByAndDeletedFalse(); | |||||
| } | } | ||||
| @@ -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(); | |||||
| } | |||||
| @@ -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<CompanyHoliday, Long, CompanyHolidayRepository>(jdbcDao, companyHolidayRepository) { | |||||
| open fun allCompanyHolidays(): List<CompanyHolidayInfo>{ | |||||
| 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) | |||||
| } | |||||
| } | |||||
| @@ -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<CompanyHolidayInfo>{ | |||||
| 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) | |||||
| } | |||||
| } | |||||
| @@ -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, | |||||
| ) | |||||