@@ -11,5 +11,7 @@ public interface CustomerSubsidiaryRepository extends AbstractRepository<Custome | |||
List<CustomerSubsidiary> findAllByCustomerId(@Param("customerId") Long customerId); | |||
List<CustomerSubsidiary> findAllBySubsidiaryId(@Param("subsidiaryId") Long subsidiaryId); | |||
Optional<CustomerSubsidiary> findByCustomerIdAndSubsidiaryId(@Param("customerId") Long customerId, @Param("subsidiaryId") Long subsidiaryId); | |||
} |
@@ -1,9 +1,7 @@ | |||
package com.ffii.tsms.modules.data.entity; | |||
import com.ffii.core.entity.BaseEntity; | |||
import jakarta.persistence.Column; | |||
import jakarta.persistence.Entity; | |||
import jakarta.persistence.Table; | |||
import jakarta.persistence.*; | |||
import jakarta.validation.constraints.NotNull; | |||
import java.time.LocalTime; | |||
@@ -28,6 +26,11 @@ public class Subsidiary extends BaseEntity<Long> { | |||
@Column(name = "district", length = 30) | |||
private String district; | |||
@OneToOne | |||
@NotNull | |||
@JoinColumn(name = "typeId") | |||
private SubsidiaryType subsidiaryType; | |||
public String getAddress() { | |||
return address; | |||
} | |||
@@ -67,4 +70,12 @@ public class Subsidiary extends BaseEntity<Long> { | |||
public void setName(String name) { | |||
this.name = name; | |||
} | |||
public SubsidiaryType getSubsidiaryType() { | |||
return subsidiaryType; | |||
} | |||
public void setSubsidiaryType(SubsidiaryType subsidiaryType) { | |||
this.subsidiaryType = subsidiaryType; | |||
} | |||
} |
@@ -1,7 +1,10 @@ | |||
package com.ffii.tsms.modules.data.entity; | |||
import com.ffii.core.support.AbstractRepository; | |||
import org.springframework.data.repository.query.Param; | |||
public interface SubsidiaryContactRepository extends AbstractRepository<SubsidiaryContact, Long> { | |||
import java.util.List; | |||
public interface SubsidiaryContactRepository extends AbstractRepository<SubsidiaryContact, Long> { | |||
List<SubsidiaryContact> findAllBySubsidiaryId(@Param("subsidiary") Long subsidiaryId); | |||
} |
@@ -1,6 +1,13 @@ | |||
package com.ffii.tsms.modules.data.entity; | |||
import com.ffii.core.support.AbstractRepository; | |||
import org.springframework.data.repository.query.Param; | |||
import java.util.List; | |||
import java.util.Optional; | |||
public interface SubsidiaryRepository extends AbstractRepository<Subsidiary, Long> { | |||
List<Subsidiary> findAllByDeletedFalse(); | |||
Optional<Subsidiary> findByCode(@Param("code") String code); | |||
} |
@@ -3,6 +3,7 @@ package com.ffii.tsms.modules.data.service | |||
import com.ffii.tsms.modules.data.entity.CustomerContact | |||
import com.ffii.tsms.modules.data.entity.CustomerContactRepository | |||
import com.ffii.tsms.modules.data.entity.CustomerRepository | |||
import org.springframework.beans.BeanUtils | |||
import org.springframework.stereotype.Service | |||
@Service | |||
@@ -31,18 +32,14 @@ class CustomerContactService( | |||
val customerContact = | |||
if (customerContactId != null && customerContactId > 0) customerContactRepository.findById( | |||
customerContactId | |||
).orElseThrow().apply { | |||
this.customer = customer | |||
name = saveCustomerContact[i].name | |||
phone = saveCustomerContact[i].phone | |||
email = saveCustomerContact[i].email | |||
} else CustomerContact().apply { | |||
this.customer = customer | |||
name = saveCustomerContact[i].name | |||
phone = saveCustomerContact[i].phone | |||
email = saveCustomerContact[i].email | |||
} | |||
).orElseThrow() else CustomerContact() | |||
customerContact.apply { | |||
this.customer = customer | |||
name = saveCustomerContact[i].name | |||
phone = saveCustomerContact[i].phone | |||
email = saveCustomerContact[i].email | |||
} | |||
customerContactList.add(customerContact) | |||
} | |||
@@ -3,11 +3,10 @@ package com.ffii.tsms.modules.data.service | |||
import com.ffii.core.support.AbstractBaseEntityService | |||
import com.ffii.core.support.JdbcDao | |||
import com.ffii.tsms.modules.data.entity.Customer | |||
import com.ffii.tsms.modules.data.entity.CustomerContact | |||
import com.ffii.tsms.modules.data.entity.CustomerType | |||
import com.ffii.tsms.modules.data.entity.CustomerRepository | |||
import com.ffii.tsms.modules.data.entity.CustomerTypeRepository | |||
import com.ffii.tsms.modules.data.web.models.NewCustomerResponse | |||
import com.ffii.tsms.modules.data.web.models.SaveCustomerResponse | |||
import com.ffii.tsms.modules.project.web.models.SaveCustomerRequest | |||
import org.springframework.beans.BeanUtils | |||
import org.springframework.stereotype.Service | |||
@@ -38,13 +37,13 @@ open class CustomerService( | |||
return customerRepository.findByCode(code); | |||
} | |||
open fun saveCustomer(saveCustomer: SaveCustomerRequest): NewCustomerResponse { | |||
open fun saveCustomer(saveCustomer: SaveCustomerRequest): SaveCustomerResponse { | |||
val duplicateCustomer = findCustomerByCode(saveCustomer.code) | |||
//check duplicate customer | |||
if (duplicateCustomer.isPresent && duplicateCustomer.orElseThrow().id?.equals(saveCustomer.id) == false) { | |||
return NewCustomerResponse( | |||
return SaveCustomerResponse( | |||
customer = duplicateCustomer.get(), | |||
message = "The customer code has already existed" | |||
); | |||
@@ -85,6 +84,6 @@ open class CustomerService( | |||
} | |||
} | |||
return NewCustomerResponse(customer = customer, message = "Success"); | |||
return SaveCustomerResponse(customer = customer, message = "Success"); | |||
} | |||
} |
@@ -24,6 +24,10 @@ class CustomerSubsidiaryService( | |||
return customerSubsidiaryRepository.findAllByCustomerId(customerId) | |||
} | |||
fun findAllBySubsidiaryId(subsidiaryId : Long) : List<CustomerSubsidiary> { | |||
return customerSubsidiaryRepository.findAllBySubsidiaryId(subsidiaryId) | |||
} | |||
fun findByCustomerIdAndSubsidiaryId(customerId : Long, subsidiaryId: Long) : CustomerSubsidiary? { | |||
return customerSubsidiaryRepository.findByCustomerIdAndSubsidiaryId(customerId, subsidiaryId).getOrNull() | |||
} | |||
@@ -36,6 +40,15 @@ class CustomerSubsidiaryService( | |||
} else return emptyList() | |||
} | |||
fun findAllCustomerIdsBySubsidiaryId(subsidiaryId : Long) : List<Long> { | |||
val customerSubsidiaryList: List<CustomerSubsidiary> = customerSubsidiaryRepository.findAllBySubsidiaryId(subsidiaryId) | |||
if (customerSubsidiaryList.isNotEmpty()) { | |||
return customerSubsidiaryList.mapNotNull { it.customer.id } | |||
} else return emptyList() | |||
} | |||
fun saveSubsidiariesByCustomer(saveCustomerId: Long, saveSubsidiaryIds: List<Long>) { | |||
val customerSubsidiaryList = mutableListOf<CustomerSubsidiary>() | |||
@@ -60,6 +73,30 @@ class CustomerSubsidiaryService( | |||
customerSubsidiaryRepository.saveAll(customerSubsidiaryList) | |||
} | |||
fun saveCustomersBySubsidiary(saveSubsidiaryId: Long, saveCustomerIds: List<Long>) { | |||
val customerSubsidiaryList = mutableListOf<CustomerSubsidiary>() | |||
val customerIdsSize = saveCustomerIds.size | |||
for (i in 0 until customerIdsSize) { | |||
val checkExist = findByCustomerIdAndSubsidiaryId(saveSubsidiaryId, saveCustomerIds[i]) | |||
if (checkExist == null) { | |||
val customer = customerRepository.findById(saveCustomerIds[i]).orElseThrow() | |||
val subsidiary = subsidiaryRepository.findById(saveSubsidiaryId).orElseThrow() | |||
val customerSubsidiary = CustomerSubsidiary().apply { | |||
this.customer = customer | |||
this.subsidiary = subsidiary | |||
} | |||
customerSubsidiaryList.add(customerSubsidiary) | |||
} | |||
} | |||
customerSubsidiaryRepository.saveAll(customerSubsidiaryList) | |||
} | |||
fun deleteSubsidiariesByCustomer(deleteCustomerId: Long, deleteSubsidiaryIds: List<Long>) { | |||
val customerSubsidiaryList: List<CustomerSubsidiary> = findAllByCustomerId(deleteCustomerId) | |||
@@ -70,4 +107,15 @@ class CustomerSubsidiaryService( | |||
customerSubsidiaryRepository.deleteAllById(filteredSubsidiaryIds) | |||
} | |||
} | |||
fun deleteCustomersBySubsidiary(deleteSubsidiaryId: Long, deleteCustomerIds: List<Long>) { | |||
val customerSubsidiaryList: List<CustomerSubsidiary> = findAllBySubsidiaryId(deleteSubsidiaryId) | |||
if (customerSubsidiaryList.isNotEmpty()) { | |||
val filteredCustomerIds: List<Long> = | |||
customerSubsidiaryList.filter { deleteCustomerIds.contains(it.customer.id!!) }.mapNotNull { it.id } | |||
customerSubsidiaryRepository.deleteAllById(filteredCustomerIds) | |||
} | |||
} | |||
} |
@@ -0,0 +1,48 @@ | |||
package com.ffii.tsms.modules.data.service | |||
import com.ffii.tsms.modules.data.entity.CustomerContact | |||
import com.ffii.tsms.modules.data.entity.CustomerContactRepository | |||
import com.ffii.tsms.modules.data.entity.CustomerRepository | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryContact | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryContactRepository | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryRepository | |||
import org.springframework.beans.BeanUtils | |||
import org.springframework.stereotype.Service | |||
@Service | |||
class SubsidiaryContactService( | |||
private val subsidiaryContactRepository: SubsidiaryContactRepository, | |||
private val subsidiaryRepository: SubsidiaryRepository | |||
) { | |||
fun findAllBySubsidiaryId(subsidiaryId: Long): List<SubsidiaryContact> { | |||
return subsidiaryContactRepository.findAllBySubsidiaryId(subsidiaryId) | |||
} | |||
fun saveContactsBySubsidiary(saveSubsidiaryId: Long, saveSubsidiaryContact: List<SubsidiaryContact>) { | |||
val subsidiaryContactList = mutableListOf<SubsidiaryContact>() | |||
val subsidiaryContactSize = saveSubsidiaryContact.size | |||
for (i in 0 until subsidiaryContactSize) { | |||
val subsidiary = subsidiaryRepository.findById(saveSubsidiaryId).orElseThrow() | |||
val subsidiaryContactId = saveSubsidiaryContact[i].id | |||
val subsidiaryContact = | |||
if (subsidiaryContactId != null && subsidiaryContactId > 0) subsidiaryContactRepository.findById( | |||
subsidiaryContactId | |||
).orElseThrow() else SubsidiaryContact() | |||
subsidiaryContact.apply { | |||
this.subsidiary = subsidiary | |||
name = saveSubsidiaryContact[i].name | |||
phone = saveSubsidiaryContact[i].phone | |||
email = saveSubsidiaryContact[i].email | |||
} | |||
subsidiaryContactList.add(subsidiaryContact) | |||
} | |||
subsidiaryContactRepository.saveAll(subsidiaryContactList) | |||
} | |||
fun deleteContactsBySubsidiary(deleteContactIds: List<Long>) { | |||
subsidiaryContactRepository.deleteAllById(deleteContactIds.filter { it > 0 }) | |||
} | |||
} |
@@ -1,30 +1,90 @@ | |||
package com.ffii.tsms.modules.project.service | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryRepository | |||
import com.ffii.core.support.AbstractBaseEntityService | |||
import com.ffii.core.support.JdbcDao | |||
import com.ffii.tsms.modules.data.entity.Subsidiary | |||
import com.ffii.tsms.modules.data.service.CustomerService | |||
import com.ffii.tsms.modules.project.web.models.NewSubsidiaryRequest | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryRepository | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryType | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryTypeRepository | |||
import com.ffii.tsms.modules.data.service.CustomerSubsidiaryService | |||
import com.ffii.tsms.modules.data.service.SubsidiaryContactService | |||
import com.ffii.tsms.modules.data.web.models.SaveSubsidiaryResponse | |||
import com.ffii.tsms.modules.project.web.models.SaveSubsidiaryRequest | |||
import org.springframework.beans.BeanUtils | |||
import org.springframework.stereotype.Service | |||
import java.util.Optional | |||
@Service | |||
class SubsidiaryService( | |||
private val subsidiaryRepository: SubsidiaryRepository | |||
) { | |||
fun allSubsidiaries(): List<Subsidiary> { | |||
return subsidiaryRepository.findAll() | |||
open class SubsidiaryService( | |||
private val subsidiaryRepository: SubsidiaryRepository, | |||
private val jdbcDao: JdbcDao, | |||
private val customerSubsidiaryService: CustomerSubsidiaryService, | |||
private val subsidiaryTypeRepository: SubsidiaryTypeRepository, | |||
private val subsidiaryContactService: SubsidiaryContactService, | |||
) : AbstractBaseEntityService<Subsidiary, Long, SubsidiaryRepository>(jdbcDao, subsidiaryRepository) { | |||
open fun allSubsidiaries(): List<Subsidiary> { | |||
return subsidiaryRepository.findAllByDeletedFalse() | |||
} | |||
open fun allSubsidiaryTypes(): List<SubsidiaryType> { | |||
return subsidiaryTypeRepository.findAll() | |||
} | |||
open fun findSubsidiary(id: Long): Subsidiary { | |||
return subsidiaryRepository.findById(id).orElseThrow() | |||
} | |||
fun saveSubsidiary(request: NewSubsidiaryRequest): Subsidiary { | |||
open fun findSubsidiaryByCode(code: String): Optional<Subsidiary> { | |||
return subsidiaryRepository.findByCode(code); | |||
} | |||
open fun saveSubsidiary(saveSubsidiary: SaveSubsidiaryRequest): SaveSubsidiaryResponse { | |||
val duplicateSubsidiary = findSubsidiaryByCode(saveSubsidiary.code) | |||
//check duplicate customer | |||
if (duplicateSubsidiary.isPresent && duplicateSubsidiary.orElseThrow().id?.equals(saveSubsidiary.id) == false) { | |||
logger.info(duplicateSubsidiary.get()) | |||
return SaveSubsidiaryResponse( | |||
subsidiary = duplicateSubsidiary.get(), | |||
message = "The subsidiary code has already existed" | |||
); | |||
} | |||
val subsidiaryType = subsidiaryTypeRepository.findById(saveSubsidiary.typeId).orElseThrow() | |||
val instance = if (saveSubsidiary.id != null && saveSubsidiary.id > 0) subsidiaryRepository.findById(saveSubsidiary.id) | |||
.orElseThrow() else Subsidiary(); | |||
BeanUtils.copyProperties(saveSubsidiary, instance) | |||
instance.apply { | |||
this.subsidiaryType = subsidiaryType | |||
} | |||
val subsidiary = | |||
subsidiaryRepository.saveAndFlush(instance) | |||
val subsidiaryId = subsidiary.id | |||
if (subsidiaryId != null && subsidiaryId > 0) { | |||
if (saveSubsidiary.deleteCustomerIds.isNotEmpty()) { | |||
customerSubsidiaryService.deleteCustomersBySubsidiary(subsidiaryId, saveSubsidiary.deleteCustomerIds) | |||
} | |||
if (saveSubsidiary.addCustomerIds.isNotEmpty()) { | |||
customerSubsidiaryService.saveCustomersBySubsidiary(subsidiaryId, saveSubsidiary.addCustomerIds) | |||
} | |||
// TODO: Add tasks, milestones, allocated | |||
val subsidary = Subsidiary().apply { | |||
code = request.code | |||
name = request.name | |||
brNo = request.brNo | |||
address = request.address | |||
district = request.district | |||
if (saveSubsidiary.deleteContactIds.isNotEmpty()) { | |||
subsidiaryContactService.deleteContactsBySubsidiary(saveSubsidiary.deleteContactIds) | |||
} | |||
if (saveSubsidiary.addContacts.isNotEmpty()) { | |||
subsidiaryContactService.saveContactsBySubsidiary(subsidiaryId, saveSubsidiary.addContacts) | |||
} | |||
} | |||
return subsidiaryRepository.save(subsidary) | |||
return SaveSubsidiaryResponse(subsidiary = subsidiary, message = "Success"); | |||
} | |||
} |
@@ -1,12 +1,12 @@ | |||
package com.ffii.tsms.modules.data.web | |||
import com.ffii.core.support.AbstractBaseEntityService | |||
import com.ffii.core.support.JdbcDao | |||
import com.ffii.tsms.modules.data.entity.* | |||
import com.ffii.tsms.modules.data.entity.Customer | |||
import com.ffii.tsms.modules.data.entity.CustomerType | |||
import com.ffii.tsms.modules.data.service.CustomerContactService | |||
import com.ffii.tsms.modules.data.service.CustomerService | |||
import com.ffii.tsms.modules.data.service.CustomerSubsidiaryService | |||
import com.ffii.tsms.modules.data.web.models.CustomerResponse | |||
import com.ffii.tsms.modules.data.web.models.NewCustomerResponse | |||
import com.ffii.tsms.modules.data.web.models.SaveCustomerResponse | |||
import com.ffii.tsms.modules.project.web.models.SaveCustomerRequest | |||
import org.springframework.web.bind.annotation.GetMapping | |||
import org.springframework.web.bind.annotation.RequestMapping | |||
@@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.ResponseStatus | |||
@RestController | |||
@RequestMapping("/customer") | |||
class CustomerController(private val customerService: CustomerService, private val customerSubsidiaryService: CustomerSubsidiaryService, | |||
private val customerContactRepository: CustomerContactRepository | |||
private val customerContactService: CustomerContactService | |||
) { | |||
@GetMapping | |||
fun allCustomers(): List<Customer> { | |||
@@ -45,13 +45,13 @@ class CustomerController(private val customerService: CustomerService, private v | |||
val customer = customerService.findCustomer(id) | |||
val subsidiaryIds = customerSubsidiaryService.findAllSubsidiaryIdsByCustomerId(id) | |||
val contacts = customerContactRepository.findAllByCustomerId(id) | |||
val contacts = customerContactService.findAllByCustomerId(id) | |||
return CustomerResponse(customer, subsidiaryIds, contacts) | |||
} | |||
@PostMapping("/save") | |||
fun saveCustomer(@Valid @RequestBody saveCustomer: SaveCustomerRequest): NewCustomerResponse { | |||
fun saveCustomer(@Valid @RequestBody saveCustomer: SaveCustomerRequest): SaveCustomerResponse { | |||
return customerService.saveCustomer(saveCustomer) | |||
} | |||
} |
@@ -28,4 +28,9 @@ class CustomerSubsidiaryController(private val customerSubsidiaryService: Custom | |||
fun findAllSubsidiaryIdsByCustomerId(@PathVariable customerId: Long): List<Long> { | |||
return customerSubsidiaryService.findAllSubsidiaryIdsByCustomerId(customerId) | |||
} | |||
@GetMapping("/customers/{subsidiaryId}") | |||
fun findAllCustomerIdsBySubsidiaryId(@PathVariable subsidiaryId: Long): List<Long> { | |||
return customerSubsidiaryService.findAllCustomerIdsBySubsidiaryId(subsidiaryId) | |||
} | |||
} |
@@ -1,27 +1,59 @@ | |||
package com.ffii.tsms.modules.data.web | |||
import com.ffii.tsms.modules.data.entity.CustomerType | |||
import com.ffii.tsms.modules.data.entity.Staff | |||
import com.ffii.tsms.modules.data.entity.Subsidiary | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryType | |||
import com.ffii.tsms.modules.data.service.CustomerSubsidiaryService | |||
import com.ffii.tsms.modules.data.service.StaffsService | |||
import com.ffii.tsms.modules.data.service.SubsidiaryContactService | |||
import com.ffii.tsms.modules.data.web.models.CustomerResponse | |||
import com.ffii.tsms.modules.data.web.models.SaveSubsidiaryResponse | |||
import com.ffii.tsms.modules.data.web.models.SubsidiaryResponse | |||
import com.ffii.tsms.modules.project.service.SubsidiaryService | |||
import com.ffii.tsms.modules.project.web.models.NewSubsidiaryRequest | |||
import com.ffii.tsms.modules.project.web.models.SaveSubsidiaryRequest | |||
import jakarta.validation.Valid | |||
import org.springframework.http.HttpStatus | |||
import org.springframework.web.bind.annotation.DeleteMapping | |||
import org.springframework.web.bind.annotation.GetMapping | |||
import org.springframework.web.bind.annotation.PathVariable | |||
import org.springframework.web.bind.annotation.PostMapping | |||
import org.springframework.web.bind.annotation.RequestBody | |||
import org.springframework.web.bind.annotation.RequestMapping | |||
import org.springframework.web.bind.annotation.ResponseStatus | |||
import org.springframework.web.bind.annotation.RestController | |||
import org.springframework.web.bind.annotation.RequestBody | |||
import org.springframework.web.bind.annotation.PostMapping | |||
import jakarta.validation.Valid | |||
@RestController | |||
@RequestMapping("/subsidiary") | |||
class SubsidiaryController(private val subsidiaryService: SubsidiaryService) { | |||
class SubsidiaryController(private val subsidiaryService: SubsidiaryService, private val customerSubsidiaryService: CustomerSubsidiaryService, private val subsidiaryContactService: SubsidiaryContactService) { | |||
@GetMapping | |||
fun allSubsidiaries(): List<Subsidiary> { | |||
return subsidiaryService.allSubsidiaries() | |||
} | |||
@PostMapping("/new") | |||
fun saveSubsidiary(@Valid @RequestBody newSubsidary: NewSubsidiaryRequest): Subsidiary { | |||
return subsidiaryService.saveSubsidiary(newSubsidary) | |||
@GetMapping("/types") | |||
fun allCustomerTypes(): List<SubsidiaryType> { | |||
return subsidiaryService.allSubsidiaryTypes() | |||
} | |||
@DeleteMapping("/{id}") | |||
@ResponseStatus(HttpStatus.NO_CONTENT) | |||
fun deleteCustomer(@PathVariable id: Long) { | |||
subsidiaryService.markDelete(id) | |||
} | |||
@GetMapping("/{id}") | |||
fun findSubsidiary(@PathVariable id: Long): SubsidiaryResponse { | |||
val subsidiary = subsidiaryService.findSubsidiary(id) | |||
val customerIds = customerSubsidiaryService.findAllCustomerIdsBySubsidiaryId(id) | |||
val contacts = subsidiaryContactService.findAllBySubsidiaryId(id) | |||
return SubsidiaryResponse(subsidiary, customerIds, contacts) | |||
} | |||
@PostMapping("/save") | |||
fun saveSubsidiary(@Valid @RequestBody saveSubsidiary: SaveSubsidiaryRequest): SaveSubsidiaryResponse { | |||
return subsidiaryService.saveSubsidiary(saveSubsidiary) | |||
} | |||
} |
@@ -1,19 +0,0 @@ | |||
package com.ffii.tsms.modules.project.web.models | |||
import jakarta.validation.constraints.NotBlank | |||
data class NewSubsidiaryRequest( | |||
@field:NotBlank(message = "subsidary code cannot be empty") | |||
val code: String, | |||
@field:NotBlank(message = "subsidary name cannot be empty") | |||
val name: String, | |||
val brNo: String, | |||
val contactName: String, | |||
val phone: String, | |||
val address: String, | |||
val district: String, | |||
val email: String, | |||
val allocatedCustomerIds: List<Long>, | |||
) |
@@ -9,7 +9,7 @@ data class SaveCustomerRequest( | |||
val code: String, | |||
@field:NotBlank(message = "customer name cannot be empty") | |||
val name: String, | |||
@field:NotNull(message = "customer name cannot be empty") | |||
@field:NotNull(message = "customer type cannot be empty") | |||
val typeId: Long, | |||
val brNo: String?, | |||
@@ -2,7 +2,7 @@ package com.ffii.tsms.modules.data.web.models | |||
import com.ffii.tsms.modules.data.entity.Customer | |||
data class NewCustomerResponse ( | |||
data class SaveCustomerResponse ( | |||
val customer: Customer, | |||
val message: String, | |||
) |
@@ -0,0 +1,27 @@ | |||
package com.ffii.tsms.modules.project.web.models | |||
import com.ffii.tsms.modules.data.entity.CustomerContact | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryContact | |||
import jakarta.validation.constraints.NotBlank | |||
import jakarta.validation.constraints.NotNull | |||
data class SaveSubsidiaryRequest( | |||
@field:NotBlank(message = "subsidiary code cannot be empty") | |||
val code: String, | |||
@field:NotBlank(message = "subsidiary name cannot be empty") | |||
val name: String, | |||
@field:NotNull(message = "subsidiary type cannot be empty") | |||
val typeId: Long, | |||
val brNo: String?, | |||
val address: String?, | |||
val district: String?, | |||
val deleteCustomerIds: List<Long>, | |||
val addCustomerIds: List<Long>, | |||
val deleteContactIds: List<Long>, | |||
val addContacts: List<SubsidiaryContact>, | |||
val id: Long?, | |||
) |
@@ -0,0 +1,8 @@ | |||
package com.ffii.tsms.modules.data.web.models | |||
import com.ffii.tsms.modules.data.entity.Subsidiary | |||
data class SaveSubsidiaryResponse ( | |||
val subsidiary: Subsidiary, | |||
val message: String, | |||
) |
@@ -0,0 +1,13 @@ | |||
package com.ffii.tsms.modules.data.web.models | |||
import com.ffii.tsms.modules.data.entity.Customer | |||
import com.ffii.tsms.modules.data.entity.CustomerContact | |||
import com.ffii.tsms.modules.data.entity.Subsidiary | |||
import com.ffii.tsms.modules.data.entity.SubsidiaryContact | |||
data class SubsidiaryResponse( | |||
val subsidiary: Subsidiary, | |||
val customerIds: List<Long>, | |||
val contacts: List<SubsidiaryContact>, | |||
) | |||