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