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