@@ -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, | |||||
) |