diff --git a/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt b/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt index 00ce55d..36f3534 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt @@ -4,12 +4,9 @@ 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.projections.StaffSearchInfo -//import com.ffii.tsms.modules.data.web.models.NewCustomerResponse import com.ffii.tsms.modules.data.web.models.NewStaffRequest -import com.ffii.tsms.modules.data.web.models.NewStaffResponse import com.ffii.tsms.modules.user.entity.User import com.ffii.tsms.modules.user.entity.UserRepository -import org.springframework.beans.BeanUtils import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional diff --git a/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt b/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt index 11b2088..da0791c 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt @@ -8,7 +8,6 @@ import com.ffii.tsms.modules.data.entity.Staff import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo import com.ffii.tsms.modules.data.service.StaffsService import com.ffii.tsms.modules.data.web.models.NewStaffRequest -import com.ffii.tsms.modules.data.web.models.NewStaffResponse import jakarta.servlet.http.HttpServletRequest import jakarta.validation.Valid import org.springframework.http.HttpStatus diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/Milestone.kt b/src/main/java/com/ffii/tsms/modules/project/entity/Milestone.kt index 40b4239..8a760a0 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/Milestone.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/Milestone.kt @@ -31,6 +31,10 @@ open class Milestone : IdEntity() { @JoinColumn(name = "projectId") open var project: Project? = null + @ManyToOne + @JoinColumn(name = "taskGroupId") + open var taskGroup: TaskGroup? = null + final override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null) return false diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt b/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt index 551fe58..5155527 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt @@ -54,6 +54,10 @@ open class Project : BaseEntity() { @Column(name = "custLeadEmail") open var custLeadEmail: String? = null + @ManyToOne + @JoinColumn(name = "customerSubsidiaryId") + open var customerSubsidiary: Subsidiary? = null + @Column(name = "remark", length = 1500) open var remark: String? = null diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/TaskGroupRepository.kt b/src/main/java/com/ffii/tsms/modules/project/entity/TaskGroupRepository.kt new file mode 100644 index 0000000..d135f83 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/entity/TaskGroupRepository.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.project.entity; + +import com.ffii.core.support.AbstractRepository + +interface TaskGroupRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt index d518900..6532e0e 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt @@ -19,6 +19,7 @@ open class ProjectsService( private val customerService: CustomerService, private val tasksService: TasksService, private val customerContactService: CustomerContactService, + private val subsidiaryService: SubsidiaryService, private val projectCategoryRepository: ProjectCategoryRepository, private val staffRepository: StaffRepository, private val staffAllocationRepository: StaffAllocationRepository, @@ -66,8 +67,10 @@ open class ProjectsService( val teamLead = staffRepository.findById(request.projectLeadId).orElseThrow() val customer = customerService.findCustomer(request.clientId) val clientContact = customerContactService.findByContactId(request.clientContactId) + val customerSubsidiary = request.clientSubsidiaryId?.let { subsidiaryService.findSubsidiary(it) } val allTasksMap = tasksService.allTasks().associateBy { it.id } + val taskGroupMap = tasksService.allTaskGroups().associateBy { it.id } val project = Project().apply { @@ -90,6 +93,7 @@ open class ProjectsService( custLeadName = clientContact.name custLeadEmail = clientContact.email custLeadPhone = clientContact.phone + this.customerSubsidiary = customerSubsidiary } @@ -100,8 +104,9 @@ open class ProjectsService( Milestone().apply { val newMilestone = this this.project = project - this.startDate = LocalDate.parse(requestMilestone.startDate) - this.endDate = LocalDate.parse(requestMilestone.endDate) + this.taskGroup = taskGroupMap[taskStageId] + this.startDate = requestMilestone.startDate?.let { LocalDate.parse(it) } + this.endDate = requestMilestone.endDate?.let { LocalDate.parse(it) } this.milestonePayments = requestMilestone.payments.map { MilestonePayment().apply { this.description = it.description diff --git a/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt b/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt index 4e4d987..3e563a5 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt @@ -1,15 +1,13 @@ package com.ffii.tsms.modules.project.service -import com.ffii.tsms.modules.project.entity.Task -import com.ffii.tsms.modules.project.entity.TaskRepository -import com.ffii.tsms.modules.project.entity.TaskTemplate -import com.ffii.tsms.modules.project.entity.TaskTemplateRepository +import com.ffii.tsms.modules.project.entity.* import org.springframework.stereotype.Service @Service class TasksService( private val taskTemplateRepository: TaskTemplateRepository, - private val taskRepository: TaskRepository + private val taskRepository: TaskRepository, + private val taskGroupRepository: TaskGroupRepository ) { fun allTasks(): List { return taskRepository.findAll() @@ -28,4 +26,8 @@ class TasksService( } ) } + + fun allTaskGroups(): List { + return taskGroupRepository.findAll() + } } \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240424_01_wayne/01_project_customer_subsidiary.sql b/src/main/resources/db/changelog/changes/20240424_01_wayne/01_project_customer_subsidiary.sql new file mode 100644 index 0000000..0779ec4 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240424_01_wayne/01_project_customer_subsidiary.sql @@ -0,0 +1,6 @@ +-- liquibase formatted sql +-- changeset wayne:project_customer_subsidiary + +ALTER TABLE project ADD customerSubsidiaryId INT NULL; + +ALTER TABLE project ADD CONSTRAINT FK_PROJECT_ON_CUSTOMERSUBSIDIARYID FOREIGN KEY (customerSubsidiaryId) REFERENCES subsidiary (id); diff --git a/src/main/resources/db/changelog/changes/20240424_01_wayne/02_milestone_task_group.sql b/src/main/resources/db/changelog/changes/20240424_01_wayne/02_milestone_task_group.sql new file mode 100644 index 0000000..ecc9f34 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240424_01_wayne/02_milestone_task_group.sql @@ -0,0 +1,6 @@ +-- liquibase formatted sql +-- changeset wayne:milestone_task_group + +ALTER TABLE milestone ADD taskGroupId INT NULL; + +ALTER TABLE milestone ADD CONSTRAINT FK_MILESTONE_ON_TASKGROUPID FOREIGN KEY (taskGroupId) REFERENCES task_group (id);