| @@ -2,9 +2,13 @@ package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| 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.Optional; | |||
| public interface CompanyRepository extends AbstractRepository<Company, Long> { | |||
| 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.tsms.modules.data.entity.Company | |||
| 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.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.NewPositionRequest | |||
| import org.springframework.beans.BeanUtils | |||
| import org.springframework.stereotype.Service | |||
| @Service | |||
| open class CompanyService( | |||
| @@ -18,23 +21,36 @@ open class CompanyService( | |||
| return companyRepository.findCompanySearchInfoBy() | |||
| } | |||
| open fun getCompanyDetails(companyId: Long): Company? { | |||
| val company = companyRepository.findCompanyByIdAndDeletedFalse(companyId).orElseThrow() | |||
| return 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) | |||
| } | |||
| @@ -1,13 +1,16 @@ | |||
| package com.ffii.tsms.modules.data.web.models | |||
| import com.ffii.core.exception.NotFoundException | |||
| 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.Position | |||
| 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 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.* | |||
| @@ -24,11 +27,23 @@ class CompanyController(private val companyService: CompanyService) { | |||
| // return companyService.allCompanys() | |||
| // } | |||
| @GetMapping("/companyDetails/{id}") | |||
| fun departmentDetails(@PathVariable id: Long): Company { | |||
| return companyService.getCompanyDetails(id) ?: throw NotFoundException() | |||
| } | |||
| @PostMapping("/new") | |||
| fun saveCompany(@Valid @RequestBody newCompany: NewCompanyRequest): Company { | |||
| return companyService.saveCompany(newCompany) | |||
| } | |||
| @DeleteMapping("/{id}") | |||
| @ResponseStatus(HttpStatus.NO_CONTENT) | |||
| fun deleteCompany(@PathVariable id: Long) { | |||
| companyService.markDelete(id) | |||
| } | |||
| @GetMapping("/combo") | |||
| @Throws(ServletRequestBindingException::class) | |||
| fun combo(request: HttpServletRequest?): RecordsRes<Map<String, Any>> { | |||
| @@ -4,6 +4,7 @@ import jakarta.validation.constraints.NotBlank | |||
| import java.time.LocalTime | |||
| data class NewCompanyRequest ( | |||
| val id: Long?, | |||
| @field: NotBlank(message = "Company code cannot be empty") | |||
| val companyCode: String, | |||
| @field:NotBlank(message = "Company name cannot be empty") | |||