diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java index 098b940..b0c2820 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java @@ -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 { List findCompanySearchInfoBy(); + + Optional findCompanyByIdAndDeletedFalse(Long companyId); } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/service/CompanyService.kt b/src/main/java/com/ffii/tsms/modules/data/service/CompanyService.kt index 0eabad1..0ac904c 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/CompanyService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/CompanyService.kt @@ -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) } diff --git a/src/main/java/com/ffii/tsms/modules/data/web/CompanyController.kt b/src/main/java/com/ffii/tsms/modules/data/web/CompanyController.kt index 6cd4b53..12c4616 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/CompanyController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/CompanyController.kt @@ -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> { diff --git a/src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyRequest.kt b/src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyRequest.kt index 7f55dd9..1a25ce3 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/models/NewCompanyRequest.kt @@ -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")