| @@ -2,9 +2,13 @@ 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.CompanySearchInfo; | import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo; | ||||
| import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Optional; | |||||
| public interface CompanyRepository extends AbstractRepository<Company, Long> { | public interface CompanyRepository extends AbstractRepository<Company, Long> { | ||||
| List<CompanySearchInfo> findCompanySearchInfoBy(); | List<CompanySearchInfo> findCompanySearchInfoBy(); | ||||
| Optional<Company> findCompanyByIdAndDeletedFalse(Long companyId); | |||||
| } | } | ||||
| @@ -4,10 +4,13 @@ import com.ffii.core.support.AbstractBaseEntityService | |||||
| import com.ffii.core.support.JdbcDao | import com.ffii.core.support.JdbcDao | ||||
| import com.ffii.tsms.modules.data.entity.Company | import com.ffii.tsms.modules.data.entity.Company | ||||
| import com.ffii.tsms.modules.data.entity.CompanyRepository | import com.ffii.tsms.modules.data.entity.CompanyRepository | ||||
| import com.ffii.tsms.modules.data.entity.Department | |||||
| import com.ffii.tsms.modules.data.entity.Position | import com.ffii.tsms.modules.data.entity.Position | ||||
| import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo | import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo | ||||
| import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo | |||||
| import com.ffii.tsms.modules.data.web.models.NewCompanyRequest | import com.ffii.tsms.modules.data.web.models.NewCompanyRequest | ||||
| import com.ffii.tsms.modules.data.web.models.NewPositionRequest | import com.ffii.tsms.modules.data.web.models.NewPositionRequest | ||||
| import org.springframework.beans.BeanUtils | |||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
| @Service | @Service | ||||
| open class CompanyService( | open class CompanyService( | ||||
| @@ -18,23 +21,36 @@ open class CompanyService( | |||||
| return companyRepository.findCompanySearchInfoBy() | return companyRepository.findCompanySearchInfoBy() | ||||
| } | } | ||||
| open fun getCompanyDetails(companyId: Long): Company? { | |||||
| val company = companyRepository.findCompanyByIdAndDeletedFalse(companyId).orElseThrow() | |||||
| return company | |||||
| } | |||||
| open fun saveCompany(request: NewCompanyRequest): Company { | open fun saveCompany(request: NewCompanyRequest): Company { | ||||
| val company = | |||||
| Company().apply { | |||||
| name = request.companyName | |||||
| companyCode = request.companyCode | |||||
| brNo = request.brNo | |||||
| contactName = request.contactName | |||||
| phone = request.phone | |||||
| email = request.email | |||||
| normalHourTo = request.normalHourTo | |||||
| normalHourFrom = request.normalHourFrom | |||||
| otHourTo = request.otHourTo | |||||
| otHourFrom = request.otHourFrom | |||||
| address = request.address | |||||
| district = request.district | |||||
| currency = request.currency | |||||
| } | |||||
| var company = Company() | |||||
| if (request.id != null && request.id > 0) { | |||||
| company = companyRepository.findById(request.id).orElseThrow() | |||||
| BeanUtils.copyProperties(request, company) | |||||
| company.name = request.companyName | |||||
| }else{ | |||||
| company.name = request.companyName | |||||
| company.companyCode = request.companyCode | |||||
| company.brNo = request.brNo | |||||
| company.contactName = request.contactName | |||||
| company.phone = request.phone | |||||
| company.email = request.email | |||||
| company.normalHourTo = request.normalHourTo | |||||
| company.normalHourFrom = request.normalHourFrom | |||||
| company.otHourTo = request.otHourTo | |||||
| company.otHourFrom = request.otHourFrom | |||||
| company.address = request.address | |||||
| company.district = request.district | |||||
| company.currency = request.currency | |||||
| } | |||||
| return companyRepository.save(company) | return companyRepository.save(company) | ||||
| } | } | ||||
| @@ -1,13 +1,16 @@ | |||||
| package com.ffii.tsms.modules.data.web.models | package com.ffii.tsms.modules.data.web.models | ||||
| import com.ffii.core.exception.NotFoundException | |||||
| import com.ffii.core.response.RecordsRes | import com.ffii.core.response.RecordsRes | ||||
| import com.ffii.core.utils.CriteriaArgsBuilder | import com.ffii.core.utils.CriteriaArgsBuilder | ||||
| import com.ffii.tsms.modules.data.entity.Company | import com.ffii.tsms.modules.data.entity.Company | ||||
| import com.ffii.tsms.modules.data.entity.Position | import com.ffii.tsms.modules.data.entity.Position | ||||
| import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo | import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo | ||||
| import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo | |||||
| import com.ffii.tsms.modules.data.service.CompanyService | import com.ffii.tsms.modules.data.service.CompanyService | ||||
| import jakarta.servlet.http.HttpServletRequest | import jakarta.servlet.http.HttpServletRequest | ||||
| import jakarta.validation.Valid | import jakarta.validation.Valid | ||||
| import org.springframework.http.HttpStatus | |||||
| import org.springframework.web.bind.ServletRequestBindingException | import org.springframework.web.bind.ServletRequestBindingException | ||||
| import org.springframework.web.bind.annotation.* | import org.springframework.web.bind.annotation.* | ||||
| @@ -24,11 +27,23 @@ class CompanyController(private val companyService: CompanyService) { | |||||
| // return companyService.allCompanys() | // return companyService.allCompanys() | ||||
| // } | // } | ||||
| @GetMapping("/companyDetails/{id}") | |||||
| fun departmentDetails(@PathVariable id: Long): Company { | |||||
| return companyService.getCompanyDetails(id) ?: throw NotFoundException() | |||||
| } | |||||
| @PostMapping("/new") | @PostMapping("/new") | ||||
| fun saveCompany(@Valid @RequestBody newCompany: NewCompanyRequest): Company { | fun saveCompany(@Valid @RequestBody newCompany: NewCompanyRequest): Company { | ||||
| return companyService.saveCompany(newCompany) | return companyService.saveCompany(newCompany) | ||||
| } | } | ||||
| @DeleteMapping("/{id}") | |||||
| @ResponseStatus(HttpStatus.NO_CONTENT) | |||||
| fun deleteCompany(@PathVariable id: Long) { | |||||
| companyService.markDelete(id) | |||||
| } | |||||
| @GetMapping("/combo") | @GetMapping("/combo") | ||||
| @Throws(ServletRequestBindingException::class) | @Throws(ServletRequestBindingException::class) | ||||
| fun combo(request: HttpServletRequest?): RecordsRes<Map<String, Any>> { | fun combo(request: HttpServletRequest?): RecordsRes<Map<String, Any>> { | ||||
| @@ -4,6 +4,7 @@ import jakarta.validation.constraints.NotBlank | |||||
| import java.time.LocalTime | import java.time.LocalTime | ||||
| data class NewCompanyRequest ( | data class NewCompanyRequest ( | ||||
| val id: Long?, | |||||
| @field: NotBlank(message = "Company code cannot be empty") | @field: NotBlank(message = "Company code cannot be empty") | ||||
| val companyCode: String, | val companyCode: String, | ||||
| @field:NotBlank(message = "Company name cannot be empty") | @field:NotBlank(message = "Company name cannot be empty") | ||||