Commit 26f8de4e authored by Phạm Duy Phi's avatar Phạm Duy Phi

Merge branch 'master' into phipham

# Conflicts:
#	pom.xml
#	src/main/resources/application.properties
#	src/main/resources/public/index.html
#	src/main/resources/public/js/app.js
#	src/main/resources/public/layout/layout3.html
parents 79cf6ecb 9bd95817
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-data-jpa</artifactId>
...@@ -54,6 +55,47 @@ ...@@ -54,6 +55,47 @@
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
<version>1.2.17</version> <version>1.2.17</version>
</dependency> </dependency>
<<<<<<< HEAD
=======
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
=======
>>>>>>> ed09ed47f5d092a7753469913def1ab676073023
=======
=======
>>>>>>> fcb3554c9480d927d3ff072584217224ddd37db6
<!-- <dependency>-->
<!-- <groupId>org.springframework.security</groupId>-->
<!-- <artifactId>spring-security-config</artifactId>-->
<!-- <version>${spring-security.version}</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<<<<<<< HEAD
>>>>>>> 049511c3b37f668c637022150c53bd25d9b8e61d
=======
>>>>>>> fcb3554c9480d927d3ff072584217224ddd37db6
=======
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.2.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-security</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt</artifactId>-->
<!-- <version>0.9.1</version>-->
<!-- </dependency>-->
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
>>>>>>> master
</dependencies> </dependencies>
<build> <build>
......
...@@ -13,9 +13,12 @@ public class QuantrivanphongApplication { ...@@ -13,9 +13,12 @@ public class QuantrivanphongApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(QuantrivanphongApplication.class, args); SpringApplication.run(QuantrivanphongApplication.class, args);
} }
<<<<<<< HEAD
@Bean @Bean
public ShallowEtagHeaderFilter shallowEtagHeaderFilter() { public ShallowEtagHeaderFilter shallowEtagHeaderFilter() {
return new ShallowEtagHeaderFilter(); return new ShallowEtagHeaderFilter();
} }
=======
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
} }
package com.itsol.quantrivanphong.access.login.bussiness;
import com.itsol.quantrivanphong.report.issue.common.WrapperResultObject;
public interface LoginBussiness {
WrapperResultObject checkUserAndPass(String username, String passworld);
}
package com.itsol.quantrivanphong.access.login.bussiness;
import com.itsol.quantrivanphong.access.login.repository.EmployeeRepositorys;
import com.itsol.quantrivanphong.access.login.repository.EmployeeRoleRepository;
import com.itsol.quantrivanphong.access.login.repository.LoginRepositoy;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.EmployeeRole;
import com.itsol.quantrivanphong.report.issue.common.WrapperResultObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class LoginBussunessImpl implements LoginBussiness {
@Autowired
private LoginRepositoy loginRepositoy;
@Autowired
private EmployeeRoleRepository employeeRoleRepository;
@Autowired
private EmployeeRepositorys employeeRepositorys;
@Override
public WrapperResultObject checkUserAndPass(String username, String password) {
String views = "";
int status = 113;
List<String> lstRole = new ArrayList<String>();
String Role = null;
Employee login = loginRepositoy.findEmployeeByUsernameAndPassword(username, password);
if (login != null) {
Employee userId = employeeRepositorys.findEmployeeByUsername(username);
lstRole = findRoleNameByUserId(userId.getId());
Role = lstRole.get(0);
status = 200;
views = "Chúc mừng bạn dăng nhập thành công!";
} else {
views = "Mật khẩu hoặc pass không đúng!";
}
return new WrapperResultObject(status, views,lstRole,Role);
}
public List<String> findRoleNameByUserId(Integer userId) {
List<String> lst = new ArrayList<>();
List<EmployeeRole> lstUR = employeeRoleRepository.findByEmployeeId(userId);
for (EmployeeRole employeeRole : lstUR) {
lst.add(employeeRole.getRole().getRoleCode());
}
return lst;
}
}
package com.itsol.quantrivanphong.access.login.controller;
import com.itsol.quantrivanphong.access.login.bussiness.LoginBussiness;
import com.itsol.quantrivanphong.report.issue.common.WrapperResultObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LoginControllers {
@Autowired
private LoginBussiness loginBussiness;
@PostMapping(value = "qtvp/login")
public ResponseEntity Login(@RequestBody LoginDTO loginDTO){
WrapperResultObject wrapperResult = loginBussiness.checkUserAndPass(loginDTO.getUsername(),loginDTO.getPassworld());
return ResponseEntity.ok(wrapperResult);
}
}
package com.itsol.quantrivanphong.access.login.controller;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginDTO {
private String username;
private String passworld;
}
package com.itsol.quantrivanphong.access.login.repository;
import com.itsol.quantrivanphong.model.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeRepositorys extends JpaRepository<Employee,Integer> {
Employee findEmployeeByUsername(String username);
}
package com.itsol.quantrivanphong.access.login.repository;
import com.itsol.quantrivanphong.model.EmployeeRole;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface EmployeeRoleRepository extends JpaRepository<EmployeeRole,Integer> {
// tìm kiếm danh sách Role theo UserId
List<EmployeeRole> findByEmployeeId(Integer userId);
}
package com.itsol.quantrivanphong.access.login.repository;
import com.itsol.quantrivanphong.model.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
public interface LoginRepositoy extends JpaRepository<Employee,Integer> {
Employee findEmployeeByUsernameAndPassword(String username,String passWorld);
}
package com.itsol.quantrivanphong.manager.project.project.bussiness; package com.itsol.quantrivanphong.manager.project.project.bussiness;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO; import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import com.itsol.quantrivanphong.report.issue.common.AbstractDaoPage;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import java.util.List; import java.util.List;
public interface ProjectBussiness { public interface ProjectBussiness {
// Danh sách dự án phân theo trang // Danh sách dự án tất cả các dự án
List<ProjectDTO> findProjectPage(String property, Object value, String sortExperssion, String sortDirection, Integer offset, Integer limit);
// Danh sách dự án tất cả các dự án
List<ProjectDTO> findAllProject(); List<ProjectDTO> findAllProject();
// upload thông tin dự án
String updateProject(ProjectDTO dto); // upload thông tin dự án
// thêm dự án mới WrapperResult updateProject(ProjectDTO dto);
String saveProject(ProjectDTO dto);
// tìm kiếm dự án theo id // thêm dự án mới
WrapperResult saveProject(ProjectDTO dto);
// tìm kiếm dự án theo id
ProjectDTO findByProjectId(Integer id); ProjectDTO findByProjectId(Integer id);
// xóa list dự án theo arr ids
String deleteProject(Integer[] ids);
// xóa một project // xóa một project
String deleteProjectById(Integer ids); WrapperResult deleteProjectById(Integer ids);
AbstractDaoPage<ProjectDTO> getPageProject(int page, int pageSize);
} }
package com.itsol.quantrivanphong.manager.project.project.bussiness; package com.itsol.quantrivanphong.manager.project.project.bussiness;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO; import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import com.itsol.quantrivanphong.model.Project;
import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository; import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository;
import com.itsol.quantrivanphong.model.Project;
import com.itsol.quantrivanphong.report.issue.common.AbstractDaoPage;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
public class ProjectBussinessImpl implements ProjectBussiness { public class ProjectBussinessImpl implements ProjectBussiness {
private Logger logger = Logger.getLogger(ProjectBussinessImpl.class); private Logger logger = Logger.getLogger(ProjectBussinessImpl.class);
private String views = "";
@Autowired @Autowired
private ProjectRepository projectRepository; private ProjectRepository projectRepository;
@Override
public List<ProjectDTO> findProjectPage(String property, Object value, String sortExperssion, String sortDirection, Integer offset, Integer limit) {
List<ProjectDTO> projectDTOList = new ArrayList<ProjectDTO>();
Object[] objects = projectRepository.getEntityPage(property,value,sortExperssion,sortDirection,offset,limit);
projectDTOList = lstDTO((List<Project>) objects[1]);
return projectDTOList;
}
@Override @Override
public List<ProjectDTO> findAllProject() { public List<ProjectDTO> findAllProject() {
try { try {
return lstDTO(projectRepository.finAllEntity()); return lstDTO(projectRepository.findAll());
} catch (Exception e) { } catch (Exception e) {
logger.info("Lỗi findAll " + e.getMessage()); logger.info("Lỗi findAll " + e.getMessage());
} }
...@@ -37,17 +32,22 @@ public class ProjectBussinessImpl implements ProjectBussiness { ...@@ -37,17 +32,22 @@ public class ProjectBussinessImpl implements ProjectBussiness {
} }
@Override @Override
public String updateProject(ProjectDTO dto) { public WrapperResult updateProject(ProjectDTO dto) {
String views = null;
int status = 113;
try { try {
ProjectDTO projectDTO = findByProjectId(dto.getId()); ProjectDTO projectDTO = findByProjectId(dto.getId());
dto.setStartDate(projectDTO.getStartDate());
dto.setEndDate(projectDTO.getEndDate());
if (dto.getStartDate() == null) { if (dto.getStartDate() == null) {
views = "ngày bắt đầu dự án không được null"; views = "ngày bắt đầu dự án không được null";
} else if (dto.getEndDate() == null) { } else if (dto.getEndDate() == null) {
views = "ngày dự kiếm kết thúc dự án không được null"; views = "ngày dự kiếm kết thúc dự án không được null";
} else if (projectDTO != null) { } else if (projectDTO != null) {
ProjectDTO updateProject = modelparseDto(projectRepository.updateEntity(dtoParseModels(dto))); ProjectDTO updateProject = modelparseDto(projectRepository.save(dtoParseModels(dto)));
if (updateProject != null) { if (updateProject != null) {
views = "sửa thành công project"; views = "sửa thành công project";
status = 200;
} }
} else { } else {
views = "không tìm thấy project phù hợp"; views = "không tìm thấy project phù hợp";
...@@ -56,11 +56,14 @@ public class ProjectBussinessImpl implements ProjectBussiness { ...@@ -56,11 +56,14 @@ public class ProjectBussinessImpl implements ProjectBussiness {
logger.info("Lỗi update" + e.getMessage()); logger.info("Lỗi update" + e.getMessage());
views = "lỗi update project"; views = "lỗi update project";
} }
return views; return new WrapperResult(status, views);
} }
@Override @Override
public String saveProject(ProjectDTO dto) { public WrapperResult saveProject(ProjectDTO dto) {
String views = null;
int status = 113;
if (projectRepository.findByName(dto.getName()) == null) {
try { try {
if (dto.getStartDate() == null) { if (dto.getStartDate() == null) {
views = "ngày bắt đầu dự án không được null"; views = "ngày bắt đầu dự án không được null";
...@@ -68,20 +71,29 @@ public class ProjectBussinessImpl implements ProjectBussiness { ...@@ -68,20 +71,29 @@ public class ProjectBussinessImpl implements ProjectBussiness {
views = "ngày dự kiếm kết thúc dự án không được null"; views = "ngày dự kiếm kết thúc dự án không được null";
} else { } else {
dto.setStatus(0); dto.setStatus(0);
projectRepository.saveEntity(dtoParseModels(dto)); // projectRepository.saveEntity(dtoParseModels(dto));
ProjectDTO saveProject = modelparseDto(projectRepository.save(dtoParseModels(dto)));
if (saveProject != null) {
views = "thêm thành công project !"; views = "thêm thành công project !";
status = 200;
} else {
views = "thêm project không thành công!";
}
} }
} catch (Exception e) { } catch (Exception e) {
logger.info("Lỗi insert " + e.getMessage()); logger.info("Lỗi insert " + e.getMessage());
views = "thêm project không thành công!"; views = "Lỗi thêm dữ liệu";
}
} else {
views = "Đã tồn tại Dự Án";
} }
return views; return new WrapperResult(status, views);
} }
@Override @Override
public ProjectDTO findByProjectId(Integer id) { public ProjectDTO findByProjectId(Integer id) {
try { try {
ProjectDTO projectDTO = modelparseDto(projectRepository.findByEmtityId(id)); ProjectDTO projectDTO = modelparseDto(projectRepository.findProjectById(id));
if (projectDTO != null) { if (projectDTO != null) {
return projectDTO; return projectDTO;
} }
...@@ -91,30 +103,48 @@ public class ProjectBussinessImpl implements ProjectBussiness { ...@@ -91,30 +103,48 @@ public class ProjectBussinessImpl implements ProjectBussiness {
return null; return null;
} }
@Override @Override
public String deleteProject(Integer[] ids) { public WrapperResult deleteProjectById(Integer id) {
int count = 0; String views = null;
count = projectRepository.deleteEntity(ids); int status = 113;
if (count != 0) { logger.info("deleteProjectById");
views = "xóa thành công " + count + " project"; if (findByProjectId(id) != null) {
try {
projectRepository.deleteById(id);
views = "xóa thành công project";
status = 200;
} catch (Exception e) {
logger.info("lỗi :" + e.getMessage());
views = "Lỗi xóa";
}
} else { } else {
views = "project không tồn tại"; views = "dự án không tồn tại không tồn tại";
} }
return views; return new WrapperResult(status, views);
} }
@Override @Override
public String deleteProjectById(Integer id) { public AbstractDaoPage<ProjectDTO> getPageProject(int page, int pageSize) {
logger.info("deleteProjectById"); AbstractDaoPage<ProjectDTO> abstractDaoPage = new AbstractDaoPage<ProjectDTO>();
int count = 0; List<Project> lstM = getListPage(page,pageSize);
count = projectRepository.deleteEntityByID(id); List<ProjectDTO> listDTO = lstDTO(lstM);
if (count != 0) { abstractDaoPage.setLstResult(listDTO);
views = "xóa thành công " + count + " project"; abstractDaoPage.setPage(page);
abstractDaoPage.setMaxPageItem(pageSize);
abstractDaoPage.setTotalItem(findAllProject().size());
abstractDaoPage.setTotalPage((int)Math.ceil((double) abstractDaoPage.getTotalItem()/abstractDaoPage.getMaxPageItem()));
return abstractDaoPage;
}
public List<Project> getListPage(int page, int pageSize) {
Pageable paging = PageRequest.of(page,pageSize);
Page<Project> pagedResult = projectRepository.findAll(paging);
if(pagedResult.hasContent()) {
return pagedResult.getContent();
} else { } else {
views = "project không tồn tại"; return new ArrayList<Project>();
} }
return views;
} }
public List<ProjectDTO> lstDTO(List<Project> lstModels) { public List<ProjectDTO> lstDTO(List<Project> lstModels) {
......
package com.itsol.quantrivanphong.manager.project.project.controller; package com.itsol.quantrivanphong.manager.project.project.controller;
import com.itsol.quantrivanphong.report.issue.common.SystemConstants;
import com.itsol.quantrivanphong.manager.project.project.bussiness.ProjectBussiness; import com.itsol.quantrivanphong.manager.project.project.bussiness.ProjectBussiness;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO; import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import com.itsol.quantrivanphong.report.issue.common.SystemConstants;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -18,74 +18,32 @@ public class ProjectController { ...@@ -18,74 +18,32 @@ public class ProjectController {
@Autowired @Autowired
private ProjectBussiness projectBussiness; private ProjectBussiness projectBussiness;
@GetMapping(value = "/danh-sach-du-an/{offset}/{limit}")
public ResponseEntity<List<ProjectDTO>> getProjectPage(@PathVariable("offset") Integer offset,@PathVariable("limit") Integer limit){
return ResponseEntity.ok(projectBussiness.findProjectPage(null,null,null,null,offset,limit));
}
@GetMapping(value = "/danh-sach-du-an") @GetMapping(value = "/danh-sach-du-an")
public ResponseEntity<List<ProjectDTO>> getAllProject(){ public ResponseEntity<List<ProjectDTO>> getAllProject(){
return ResponseEntity.ok(projectBussiness.findAllProject()); return ResponseEntity.ok(projectBussiness.findAllProject());
} }
@GetMapping(value = "/danh-sach-du-an/{page}/{pageSize}")
public ResponseEntity getPageProject(@PathVariable("page") int page, @PathVariable("pageSize") int pageSize){
return ResponseEntity.ok(projectBussiness.getPageProject(page,pageSize));
}
@GetMapping(value = "/chi-tiet-du-an/{id}",produces = SystemConstants.TYPE_JSON) @GetMapping(value = "/chi-tiet-du-an/{id}",produces = SystemConstants.TYPE_JSON)
public ResponseEntity<ProjectDTO> findProjectId(@PathVariable Integer id){ public ResponseEntity findProjectId(@PathVariable Integer id){
ProjectDTO projectDTO = projectBussiness.findByProjectId(id); ProjectDTO projectDTO = projectBussiness.findByProjectId(id);
return ResponseEntity.ok(projectDTO); return ResponseEntity.ok(projectDTO);
} }
@PostMapping(value = "/them-du-an",consumes = SystemConstants.TYPE_JSON) @PostMapping(value = "/them-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity saveProject(@RequestBody ProjectDTO projectDTO){ public ResponseEntity saveProject(@RequestBody ProjectDTO projectDTO){
String views = projectBussiness.saveProject(projectDTO); WrapperResult wrapperResult = projectBussiness.saveProject(projectDTO);
return ResponseEntity.ok(new WrapperResult(200, views)); return ResponseEntity.ok(wrapperResult);
} }
@PutMapping(value = "/sua-du-an",consumes = SystemConstants.TYPE_JSON) @PutMapping(value = "/sua-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity updateProject(@RequestBody ProjectDTO projectDTO){ public ResponseEntity updateProject(@RequestBody ProjectDTO projectDTO){
String views = projectBussiness.updateProject(projectDTO); WrapperResult wrapperResult = projectBussiness.updateProject(projectDTO);
return ResponseEntity.ok(new WrapperResult(200, views)); return ResponseEntity.ok(wrapperResult);
}
@DeleteMapping(value = "/xoa-danh-sach-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity deleteProject(@RequestBody ProjectDTO projectDTO){
String views ="";
if(projectDTO.getIds()!=null){
views = projectBussiness.deleteProject(projectDTO.getIds());
}else{
views="không tồn tại";
}
return ResponseEntity.ok(views);
} }
@DeleteMapping(value = "/xoa-du-an",consumes = SystemConstants.TYPE_JSON) @DeleteMapping(value = "/xoa-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity deleteProjectById(@RequestBody ProjectDTO projectDTO){ public ResponseEntity deleteProjectById(@RequestBody ProjectDTO projectDTO){
String views =""; WrapperResult wrapperResult = projectBussiness.deleteProjectById(projectDTO.getId());
if(projectDTO.getId()!=null){ return ResponseEntity.ok(wrapperResult);
views = projectBussiness.deleteProjectById(projectDTO.getId());
}else{
views="không tồn tại";
}
return ResponseEntity.ok(new WrapperResult(200, views));
}
static class WrapperResult{
private int status;
private String message;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public WrapperResult(int status, String message) {
this.status = status;
this.message = message;
}
} }
} }
package com.itsol.quantrivanphong.manager.project.project.repository; package com.itsol.quantrivanphong.manager.project.project.repository;
import com.itsol.quantrivanphong.report.issue.common.GennericeEntityManagerDao;
import com.itsol.quantrivanphong.model.Project; import com.itsol.quantrivanphong.model.Project;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProjectRepository extends JpaRepository<Project,Integer> {
Project findProjectById(Integer id);
Project findProjectByName(String nameProject);
Project findByName(String nameProject);
public interface ProjectRepository extends GennericeEntityManagerDao<Integer, Project> {
} }
package com.itsol.quantrivanphong.manager.project.project.repository;
import com.itsol.quantrivanphong.report.issue.common.AbstractEntityManagerDao;
import com.itsol.quantrivanphong.model.Project;
import org.springframework.stereotype.Repository;
@Repository
public class ProjectRepositoryImpl extends AbstractEntityManagerDao<Integer, Project> implements ProjectRepository{
}
package com.itsol.quantrivanphong.manager.project.projectgroup.bussiness; package com.itsol.quantrivanphong.manager.project.projectgroup.bussiness;
import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO; import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import java.util.List; import java.util.List;
public interface ProjectGroupBussiness { public interface ProjectGroupBussiness {
// chi tiết nhóm dự án // chi tiết nhóm dự án
List<ProjectGroupDTO> getGroupByProjectId(Integer projectId); List<ProjectGroupDTO> getGroupByProjectId(Integer projectId);
// thêm thành viên vào nhóm dự án
String saveEmployeeProject(ProjectGroupDTO dto); // thêm thành viên vào nhóm dự án
// sửa thông tin nhóm dự án, các thành viên out nhóm WrapperResult saveEmployeeProject(ProjectGroupDTO dto);
String updateEmployeeProject(ProjectGroupDTO dto);
// Tìm kiếm thành viên trong nhóm theo tên đăng nhập // sửa thông tin nhóm dự án, các thành viên out nhóm
ProjectGroupDTO findEmployeeProject(String username); WrapperResult updateEmployeeProject(ProjectGroupDTO dto);
// thành viên out dự án
String outProjectGroup(Integer[]ids); // thành viên out dự án
// thành viên out dự án WrapperResult deleteEmployeeProject(Integer id);
String deleteEmployeeProject(Integer id);
WrapperResult updateEmployeeOutGroup(ProjectGroupDTO dto);
ProjectGroupDTO findEmployeeProjectById(Integer id);
} }
package com.itsol.quantrivanphong.manager.project.projectgroup.bussiness; package com.itsol.quantrivanphong.manager.project.projectgroup.bussiness;
import com.itsol.quantrivanphong.model.Project;
import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository; import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository;
import com.itsol.quantrivanphong.manager.project.projectgroup.common.EmployeeRepositoryImpl; import com.itsol.quantrivanphong.manager.project.projectgroup.common.EmployeeProject;
import com.itsol.quantrivanphong.manager.project.projectgroup.common.ProjectGroupUtils; import com.itsol.quantrivanphong.manager.project.projectgroup.common.ProjectGroupUtils;
import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO; import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO;
import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.manager.project.projectgroup.repository.ProjectGroupRepository; import com.itsol.quantrivanphong.manager.project.projectgroup.repository.ProjectGroupRepository;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.List; import java.util.List;
@Service @Service
public class ProjectGroupBussinessImpl implements ProjectGroupBussiness { public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
Logger logger = Logger.getLogger(ProjectGroupBussinessImpl.class); private Logger logger = Logger.getLogger(ProjectGroupBussinessImpl.class);
@Autowired @Autowired
private ProjectGroupRepository projectGroupRepository; private ProjectGroupRepository projectGroupRepository;
...@@ -23,94 +26,127 @@ public class ProjectGroupBussinessImpl implements ProjectGroupBussiness { ...@@ -23,94 +26,127 @@ public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
private ProjectRepository projectRepository; private ProjectRepository projectRepository;
@Autowired @Autowired
private EmployeeRepositoryImpl employeeRepository; private ProjectGroupUtils utils;
@Autowired @Autowired
private ProjectGroupUtils utils; private EmployeeProject employeeProject;
@Override @Override
public List<ProjectGroupDTO> getGroupByProjectId(Integer projectId) { public List<ProjectGroupDTO> getGroupByProjectId(Integer projectId) {
logger.info("getGroupByProjectId"); logger.info("getGroupByProjectId");
Project project = projectRepository.findByEmtityId(projectId); List<Eproject> lstModels = projectGroupRepository.findByProjectId(projectId);
if (project != null) {
List<Eproject> lstModels = projectGroupRepository.finByProperty("project", project, "joinDate", "DESC");
List<ProjectGroupDTO> lstDTO = utils.getListDTO(lstModels); List<ProjectGroupDTO> lstDTO = utils.getListDTO(lstModels);
return lstDTO; return lstDTO;
} }
return null;
} public boolean checkEmployeeInGroupProject(ProjectGroupDTO dto) {
public boolean checkEmployeeInGroupProject(ProjectGroupDTO dto){ if (dto.getProjectId()!=null) {
List<Eproject> lst = projectGroupRepository.finByProperty("project",projectRepository.findByEmtityId(dto.getProjectId()),null,null); List<Eproject> lst = projectGroupRepository.findByProjectId(dto.getProjectId());
for (Eproject eproject:lst) { for (Eproject eproject : lst) {
if(eproject.getEmployee().getId()==dto.getUserId()){ if (eproject.getEmployee().getUsername().equals(dto.getUserName())) {
return true; return true;
} }
} }
}
return false; return false;
} }
@Override @Override
public String saveEmployeeProject(ProjectGroupDTO dto) { public WrapperResult saveEmployeeProject(ProjectGroupDTO dto) {
logger.info("saveEmployeeProject");
String views = ""; String views = "";
if(!checkEmployeeInGroupProject(dto)) { int status = 113;
logger.info("saveEmployeeProject");
Employee employee = employeeProject.findByUsername(dto.getUserName());
if (employee == null) {
views = "Nhân viên không tồn tại !";
} else if (!checkEmployeeInGroupProject(dto)) {
try { try {
projectGroupRepository.saveEntity(utils.Model(dto)); dto.setStatus(1);
dto.setUserId(employee.getId());
dto.setJoinDate(new Timestamp(System.currentTimeMillis()));
Eproject eproject = projectGroupRepository.save(utils.Model(dto));
if (eproject != null) {
views = "thêm thành công nhân viên vào nhóm dự án"; views = "thêm thành công nhân viên vào nhóm dự án";
} catch (Exception e) { status = 200;
} else {
views = "thêm không thành công!"; views = "thêm không thành công!";
} }
}else { } catch (Exception e) {
logger.info("Lỗi " + e.getMessage());
}
} else {
status = 113;
views = "thành viên đã tồn tại"; views = "thành viên đã tồn tại";
} }
return views; return new WrapperResult(status, views);
} }
@Override @Override
public String updateEmployeeProject(ProjectGroupDTO dto) { public WrapperResult updateEmployeeProject(ProjectGroupDTO dto) {
String views = "";
int status = 113;
logger.info("updateEmployeeProject"); logger.info("updateEmployeeProject");
String views="";
Eproject eproject = projectGroupRepository.findByEmtityId(dto.getId()); Eproject eproject = projectGroupRepository.findEprojectById(dto.getId());
if(eproject!=null){ if (eproject != null) {
Eproject updateProjectGroup = projectGroupRepository.updateEntity(utils.Model(dto)); eproject.setPosition(dto.getPosition());
if(updateProjectGroup!=null){ Eproject updateProjectGroup = projectGroupRepository.save(eproject);
views = "Sửa thành công"; if (updateProjectGroup != null) {
} views = "cập nhật chức vụ thành viên thành công";
}else{ status = 200;
}
} else {
views = "đối tượng không tồn tại"; views = "đối tượng không tồn tại";
} }
return null;
return new WrapperResult(status, views);
} }
@Override @Override
public ProjectGroupDTO findEmployeeProject(String username) { public ProjectGroupDTO findEmployeeProjectById(Integer id) {
try {
ProjectGroupDTO projectGroupDTO = utils.DTO(projectGroupRepository.findEprojectById(id));
if (projectGroupDTO != null) {
return projectGroupDTO;
}
} catch (Exception e) {
logger.info("Lỗi update EProject " + e.getMessage());
}
return null; return null;
} }
@Override @Override
public String outProjectGroup(Integer[] ids) { public WrapperResult deleteEmployeeProject(Integer id) {
logger.info("outProjectGroup");
String views = ""; String views = "";
int count=0; int status = 113;
count = projectGroupRepository.deleteEntity(ids); logger.info("deleteEmployeeProject");
if(count!=0){ if (projectGroupRepository.findEprojectById(id) != null) {
views="Bạn đã cho "+count+" thoát ra khỏi nhóm"; projectGroupRepository.deleteById(id);
}else{ views = "Bạn đã cho thoát ra khỏi nhóm";
views=" thành viên không tồn tại"; status = 200;
} else {
views = "Thành viên không tồn tại trong nhóm";
} }
return views; return new WrapperResult(status, views);
} }
@Override @Override
public String deleteEmployeeProject(Integer id) { public WrapperResult updateEmployeeOutGroup(ProjectGroupDTO dto) {
logger.info("deleteEmployeeProject");
String views = ""; String views = "";
int count=0; int status = 113;
count = projectGroupRepository.deleteEntityByID(id); logger.info("updateEmployeeOutGroup");
if(count!=0){ Eproject eproject = projectGroupRepository.findEprojectById(dto.getId());
views="Bạn đã cho "+count+" thoát ra khỏi nhóm"; if (eproject != null) {
}else{ eproject.setStatus(2);
views=" thành viên không tồn tại"; eproject.setOutDate(new Timestamp(System.currentTimeMillis()));
} Eproject updateProjectGroup = projectGroupRepository.save(eproject);
return views; if (updateProjectGroup != null) {
views = "thành viên đã out nhóm";
status = 200;
}
} else {
views = "đối tượng không tồn tại";
}
return new WrapperResult(status, views);
} }
} }
package com.itsol.quantrivanphong.manager.project.projectgroup.common;
import com.itsol.quantrivanphong.model.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeProject extends JpaRepository<Employee,Integer> {
Employee findEmployeeById(Integer employeeId);
Employee findByUsername(String username);
}
package com.itsol.quantrivanphong.manager.project.projectgroup.common; package com.itsol.quantrivanphong.manager.project.projectgroup.common;
import com.itsol.quantrivanphong.access.login.dto.EmployeeDTO; import com.itsol.quantrivanphong.access.login.dto.EmployeeDTO;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO; import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import com.itsol.quantrivanphong.model.Project;
import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository; import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository;
import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO; import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.Eproject; import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.model.Project;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -18,7 +18,7 @@ import java.util.List; ...@@ -18,7 +18,7 @@ import java.util.List;
public class ProjectGroupUtils { public class ProjectGroupUtils {
private static Logger logger = Logger.getLogger(ProjectGroupUtils.class); private static Logger logger = Logger.getLogger(ProjectGroupUtils.class);
@Autowired @Autowired
private EmployeeRepositoryImpl employeeRepository; private EmployeeProject employeeRepository;
@Autowired @Autowired
private ProjectRepository projectRepository; private ProjectRepository projectRepository;
...@@ -29,8 +29,9 @@ public class ProjectGroupUtils { ...@@ -29,8 +29,9 @@ public class ProjectGroupUtils {
model.setJoinDate(dto.getJoinDate()); model.setJoinDate(dto.getJoinDate());
model.setOutDate(dto.getOutDate()); model.setOutDate(dto.getOutDate());
model.setPosition(dto.getPosition()); model.setPosition(dto.getPosition());
model.setStatus(dto.getStatus());
try{ try{
Employee findEmployee = employeeRepository.getEmployeeById(dto.getUserId()); Employee findEmployee = employeeRepository.findEmployeeById(dto.getUserId());
if(findEmployee!=null){ if(findEmployee!=null){
model.setEmployee(findEmployee); model.setEmployee(findEmployee);
} }
...@@ -38,7 +39,7 @@ public class ProjectGroupUtils { ...@@ -38,7 +39,7 @@ public class ProjectGroupUtils {
logger.info("(Lỗi không tìm thấy Employee) "+e.getMessage()); logger.info("(Lỗi không tìm thấy Employee) "+e.getMessage());
} }
try{ try{
Project project = projectRepository.findByEmtityId(dto.getProjectId()); Project project = projectRepository.findProjectById(dto.getProjectId());
if(project!=null){ if(project!=null){
model.setProject(project); model.setProject(project);
} }
......
package com.itsol.quantrivanphong.manager.project.projectgroup.controller; package com.itsol.quantrivanphong.manager.project.projectgroup.controller;
import com.itsol.quantrivanphong.manager.project.project.controller.ProjectController;
import com.itsol.quantrivanphong.report.issue.common.SystemConstants;
import com.itsol.quantrivanphong.manager.project.projectgroup.bussiness.ProjectGroupBussiness; import com.itsol.quantrivanphong.manager.project.projectgroup.bussiness.ProjectGroupBussiness;
import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO; import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController @RestController
public class ProjectGroupController { public class ProjectGroupController {
...@@ -18,64 +15,40 @@ public class ProjectGroupController { ...@@ -18,64 +15,40 @@ public class ProjectGroupController {
// thông tin của 1 nhóm dư án theo id của dự án // thông tin của 1 nhóm dư án theo id của dự án
// Team lead,Hr // Team lead,Hr
@GetMapping(value = "/thong-tin-du-an/{id}", produces = SystemConstants.TYPE_JSON) @GetMapping(value = "/thong-tin-du-an/{id}")
public ResponseEntity<List<ProjectGroupDTO>> getOneProjectGroup(@PathVariable("id") Integer projectId) { public ResponseEntity getOneProjectGroup(@PathVariable("id") Integer projectId) {
return ResponseEntity.ok(projectGroupBussiness.getGroupByProjectId(projectId)); return ResponseEntity.ok(projectGroupBussiness.getGroupByProjectId(projectId));
} }
@GetMapping(value = "/chi-tiet-thanh-vien-du-an/{id}")
public ResponseEntity getOneEmployeeProject(@PathVariable("id") Integer employeeProjectId) {
return ResponseEntity.ok(projectGroupBussiness.findEmployeeProjectById(employeeProjectId));
}
// thêm thành viên vào dự án // thêm thành viên vào dự án
// hr,manager, teamlead thêm thành viên // hr,manager, teamlead thêm thành viên
@PostMapping(value = "/them-thanh-vien", consumes = SystemConstants.TYPE_JSON, produces = SystemConstants.TYPE_JSON) @PostMapping(value = "/them-thanh-vien")
public ResponseEntity addMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO) { public ResponseEntity addMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO) {
String views = projectGroupBussiness.saveEmployeeProject(projectGroupDTO); WrapperResult wrapperResult = projectGroupBussiness.saveEmployeeProject(projectGroupDTO);
return ResponseEntity.ok(new WrapperResult(200, views)); return ResponseEntity.ok(wrapperResult);
} }
// cập nhật thông tin thành viên // cập nhật thông tin thành viên
// manager cập nhật chức vụ cho nhân viên vào xét duyệt vào dự án // manager cập nhật chức vụ cho nhân viên vào xét duyệt vào dự án
@PutMapping(value = "/cap-nhat-thong-tin-thanh-vien",consumes = SystemConstants.TYPE_JSON, produces = SystemConstants.TYPE_JSON) @PutMapping(value = "/cap-nhat-chuc-vu-thanh-vien")
public ResponseEntity updateMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO) { public ResponseEntity updatePositionProject(@RequestBody ProjectGroupDTO projectGroupDTO) {
String views = projectGroupBussiness.updateEmployeeProject(projectGroupDTO); WrapperResult wrapperResult = projectGroupBussiness.updateEmployeeProject(projectGroupDTO);
return ResponseEntity.ok(views); return ResponseEntity.ok(wrapperResult);
} }
@PutMapping(value = "/thanh-vien-out-nhom")
public ResponseEntity updateMemberOutProject(@RequestBody ProjectGroupDTO projectGroupDTO) {
// xóa thành viên ra khỏi dự án WrapperResult wrapperResult = projectGroupBussiness.updateEmployeeOutGroup(projectGroupDTO);
@DeleteMapping(value = "/thanh-vien-out-du-an") return ResponseEntity.ok(wrapperResult);
public ResponseEntity deleteMembersProject(@RequestBody ProjectGroupDTO projectGroupDTO){
String views = projectGroupBussiness.outProjectGroup(projectGroupDTO.getIds());
return ResponseEntity.ok(views);
} }
@DeleteMapping(value = "/xoa-thanh-vien-du-an") @DeleteMapping(value = "/xoa-thanh-vien-du-an")
public ResponseEntity deleteMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO){ public ResponseEntity deleteMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO){
String views = projectGroupBussiness.deleteEmployeeProject(projectGroupDTO.getId()); WrapperResult wrapperResult = projectGroupBussiness.deleteEmployeeProject(projectGroupDTO.getId());
return ResponseEntity.ok(new WrapperResult(200, views)); return ResponseEntity.ok(wrapperResult);
}
static class WrapperResult{
private int status;
private String message;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public WrapperResult(int status, String message) {
this.status = status;
this.message = message;
}
} }
} }
...@@ -19,11 +19,11 @@ public class ProjectGroupDTO { ...@@ -19,11 +19,11 @@ public class ProjectGroupDTO {
private Timestamp joinDate; private Timestamp joinDate;
// ngày ra dự án // ngày ra dự án
private Timestamp outDate; private Timestamp outDate;
private int status;
private Integer userId; private Integer userId;
private Integer projectId; private Integer projectId;
private String userName;
private String nameProject;
private EmployeeDTO employeeDTO; private EmployeeDTO employeeDTO;
private ProjectDTO projectDTO; private ProjectDTO projectDTO;
private Integer[]ids;
} }
package com.itsol.quantrivanphong.manager.project.projectgroup.repository; package com.itsol.quantrivanphong.manager.project.projectgroup.repository;
import com.itsol.quantrivanphong.report.issue.common.GennericeEntityManagerDao;
import com.itsol.quantrivanphong.model.Eproject; import com.itsol.quantrivanphong.model.Eproject;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProjectGroupRepository extends GennericeEntityManagerDao<Integer, Eproject> { import java.util.List;
public interface ProjectGroupRepository extends JpaRepository<Eproject,Integer> {
List<Eproject> findByProjectId(Integer projectId);
Eproject findEprojectById(Integer eProjectId);
} }
package com.itsol.quantrivanphong.manager.project.projectgroup.repository;
import com.itsol.quantrivanphong.report.issue.common.AbstractEntityManagerDao;
import com.itsol.quantrivanphong.model.Eproject;
import org.springframework.stereotype.Repository;
@Repository
public class ProjectGroupRepositoryImpl extends AbstractEntityManagerDao<Integer, Eproject> implements ProjectGroupRepository {
}
package com.itsol.quantrivanphong.manager.project;
public class test {
}
package com.itsol.quantrivanphong.model; package com.itsol.quantrivanphong.model;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.TimeSheet;
import com.itsol.quantrivanphong.model.Project;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -34,6 +31,9 @@ public class Eproject { ...@@ -34,6 +31,9 @@ public class Eproject {
@Column(name = "out_date",nullable = true) @Column(name = "out_date",nullable = true)
private Timestamp outDate; private Timestamp outDate;
@Column(name = "status",nullable = false)
private int status;
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(fetch = FetchType.EAGER)
private Employee employee; private Employee employee;
......
package com.itsol.quantrivanphong.model; package com.itsol.quantrivanphong.model;
import com.itsol.quantrivanphong.model.Project; import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
...@@ -17,7 +20,7 @@ public class Issues { ...@@ -17,7 +20,7 @@ public class Issues {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true) @Column(name = "id", nullable = false, unique = true)
private int id; private Integer id;
// tiêu đề liên quan // tiêu đề liên quan
@Column(name = "title") @Column(name = "title")
private String title; private String title;
...@@ -26,8 +29,15 @@ public class Issues { ...@@ -26,8 +29,15 @@ public class Issues {
private String actionCode; private String actionCode;
// trạng thái vấn đề đó trong project // trạng thái vấn đề đó trong project
@Column(name = "status") @Column(name = "status")
private boolean status; private int status;
@Column(name = "startdate")
private Timestamp startDate;
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(fetch = FetchType.EAGER)
private Project project; private Project project;
@JsonIgnore
@OneToMany(mappedBy = "issues", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<IssuesComment> issuesCommentList = new ArrayList<IssuesComment>();
} }
package com.itsol.quantrivanphong.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.sql.Timestamp;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "issuescomment")
public class IssuesComment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private Integer id;
//nội dung
@Column(name = "content")
private String contentIssuse;
@Column(name = "usercreate")
private String userCreate;
@Column(name = "createdate")
private Timestamp createDate;
@ManyToOne(fetch = FetchType.EAGER)
private Issues issues;
}
package com.itsol.quantrivanphong.report.issue.bussiness;
import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository;
import com.itsol.quantrivanphong.model.Issues;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import com.itsol.quantrivanphong.report.issue.dto.IssueDTO;
import com.itsol.quantrivanphong.report.issue.repository.IssueRepository;
import org.apache.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Service
public class IssueBussinesImpl implements IssueBussiness {
Logger logger = Logger.getLogger(IssueBussinesImpl.class);
@Autowired
private IssueRepository issueRepository;
@Autowired
private ProjectRepository projectRepository;
@Override
public List<Issues> getAllIssue() {
return issueRepository.findAll();
}
@Override
public WrapperResult saveIssue(IssueDTO issueDTO) {
String views = null;
int status = 113;
try {
issueDTO.setStatus(0);
issueDTO.setStartDate(new Timestamp(System.currentTimeMillis()));
Issues saveIssues = issueRepository.save(dtoParseModels(issueDTO));
if (saveIssues != null) {
views = "thêm thành công Issues !";
status = 200;
} else {
views = "thêm Issues không thành công!";
}
} catch (Exception e) {
logger.info("Lỗi insert " + e.getMessage());
views = "Lỗi thêm dữ liệu";
}
return new WrapperResult(status, views);
}
@Override
public WrapperResult updateIssue(IssueDTO issueDTO) {
String views = null;
int status = 113;
try {
Issues issues = issueRepository.findIssuesById(issueDTO.getId());
if (issues != null) {
if (issues.getStatus() == 0) {
issues.setStatus(1);
}else{
issues.setStatus(0);
}
Issues saveIssues = issueRepository.save(issues);
if (saveIssues != null) {
views = "Cập nhật thành công Issues !";
status = 200;
} else {
views = "không thành công!";
}
} else {
views = "Issue không tồn tại!";
}
} catch (Exception e) {
logger.info("Lỗi Cập nhật " + e.getMessage());
views = "Lỗi Cập nhật dữ liệu";
}
return new WrapperResult(status, views);
}
@Override
public WrapperResult deleteIssue(IssueDTO issueDTO) {
String views = null;
int status = 113;
try {
Issues issues = issueRepository.findIssuesById(issueDTO.getId());
if (issues != null) {
issueRepository.deleteById(issueDTO.getId());
views = "Xóa thành công Issues !";
status = 200;
} else {
views = "Issue không tồn tại!";
}
} catch (Exception e) {
logger.info("Lỗi Delete " + e.getMessage());
views = "Lỗi xóa dữ liệu";
}
return new WrapperResult(status, views);
}
@Override
public Issues findIssueById(Integer id) {
return issueRepository.findIssuesById(id);
}
public IssueDTO modelsParseDTO(Issues models) {
IssueDTO issueDTO = new IssueDTO();
BeanUtils.copyProperties(models, issueDTO);
return issueDTO;
}
public Issues dtoParseModels(IssueDTO dto) {
Issues issues = new Issues();
BeanUtils.copyProperties(dto, issues);
issues.setProject(projectRepository.findProjectById(dto.getProjectId()));
return issues;
}
public List<IssueDTO> lstModel(List<Issues> lstModel) {
if (lstModel.size() != 0 && !lstModel.isEmpty()) {
List<IssueDTO> lstDTO = new ArrayList<IssueDTO>();
for (Issues issues : lstModel) {
lstDTO.add(modelsParseDTO(issues));
}
return lstDTO;
}
return null;
}
}
package com.itsol.quantrivanphong.report.issue.bussiness;
import com.itsol.quantrivanphong.model.Issues;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import com.itsol.quantrivanphong.report.issue.dto.IssueDTO;
import java.util.List;
public interface IssueBussiness {
List<Issues> getAllIssue();
WrapperResult saveIssue(IssueDTO issueDTO);
WrapperResult updateIssue(IssueDTO issueDTO);
WrapperResult deleteIssue(IssueDTO issueDTO);
Issues findIssueById(Integer id);
}
package com.itsol.quantrivanphong.report.issue.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AbstractDao<T> {
private List<T> lstResult = new ArrayList<T>();
// Số page đang đứng
private Integer page;
// Tổng sô page trong 1 item
private Integer maxPageItem;
// Tổng số page hiện tại
private Integer totalPage;
// Tổng số item
private Integer totalItem;
// kiểu sort
private String sortName;
// sort theo
private String sortBy;
}
package com.itsol.quantrivanphong.report.issue.common;
import java.util.ArrayList;
import java.util.List;
public class AbstractDaoPage<T> {
private List<T> lstResult = new ArrayList<T>();
// Số page đang đứng
private int page;
// Tổng sô page trong 1 item
private Integer maxPageItem;
// Tổng số page hiện tại
private int totalPage;
// Tổng số item
private int totalItem;
private int Count;
public List<T> getLstResult() {
return lstResult;
}
public void setLstResult(List<T> lstResult) {
this.lstResult = lstResult;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public Integer getMaxPageItem() {
return maxPageItem;
}
public void setMaxPageItem(Integer maxPageItem) {
this.maxPageItem = maxPageItem;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotalItem() {
return totalItem;
}
public void setTotalItem(int totalItem) {
this.totalItem = totalItem;
}
public int getCount() {
return (lstResult!=null)?lstResult.size():0;
}
}
package com.itsol.quantrivanphong.report.issue.common;
import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.springframework.beans.factory.annotation.Autowired;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;
public class AbstractEntityManagerDao<ID extends Serializable, T> implements GennericeEntityManagerDao<ID, T> {
@Autowired
EntityManager entityManager;
@Autowired
EntityManagerFactory entityManagerFactory;
private final static Logger log = Logger.getLogger(AbstractEntityManagerDao.class);
private Class<T> persistenceClass;
// Lấy Entity T trong Generic
public AbstractEntityManagerDao() {
this.persistenceClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1];
}
// get persistenceClass
public String getPersistenceClass() {
return persistenceClass.getSimpleName();
}
public List<T> finAllEntity() {
log.info("find All record from db");
List<T> list = new ArrayList<T>();
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
StringBuilder sql = new StringBuilder(" from ");
sql.append(this.getPersistenceClass());
list = entityManager.createQuery(sql.toString(), persistenceClass).getResultList();
} catch (HibernateException e) {
log.info(e.getMessage());
} finally {
if (entityManager != null) {
entityManager.close();
}
}
return list;
}
public void saveEntity(T t) {
log.info("save object");
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
entityManager.persist(t);
entityManager.getTransaction().commit();
} catch (HibernateException e) {
entityManager.getTransaction().rollback();
log.info(e.getMessage());
} finally {
if (entityManager != null) {
entityManager.close();
}
}
}
public T updateEntity(T t) {
log.info("update object");
T entity = null;
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
entity = entityManager.merge(t);
entityManager.getTransaction().commit();
return entity;
} catch (HibernateException e) {
entityManager.getTransaction().rollback();
log.info(e.getMessage());
} finally {
if (entityManager != null) {
entityManager.close();
}
}
return entity;
}
public Integer deleteEntity(ID[] ids) {
log.info("delete by ids ");
Integer count = 0;
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
for (ID id : ids) {
T entity = entityManager.find(persistenceClass, id);
if (entity != null) {
entityManager.remove(entity);
count++;
}
}
entityManager.getTransaction().commit();
} catch (HibernateException e) {
entityManager.getTransaction().rollback();
log.info(e.getMessage());
} finally {
if (entityManager != null) {
entityManager.close();
}
}
return count;
}
@Override
public Integer deleteEntityByID(Integer id) {
log.info("delete by id ");
Integer count = 0;
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
T entity = entityManager.find(persistenceClass, id);
if (entity != null) {
entityManager.remove(entity);
count++;
}
entityManager.getTransaction().commit();
} catch (HibernateException e) {
entityManager.getTransaction().rollback();
log.info(e.getMessage());
} finally {
if (entityManager != null) {
entityManager.close();
}
}
return count;
}
@Override
public T findByEmtityId(ID id) {
log.info("find by id");
T entity = null;
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
entity = entityManager.find(persistenceClass,id);
entityManager.getTransaction().commit();
} catch (Exception e) {
entityManager.getTransaction().rollback();
log.info(e.getMessage());
} finally {
if (entityManager != null) {
entityManager.close();
}
}
return entity;
}
// Tìm kiếm 1 list danh sách theo value sắp xếp theo ASC or DESC size của list
@Override
public List<T> finByProperty(String property, Object value, String sortExperssion, String sortDirection) {
log.info("find by value");
List<T> list = new ArrayList<T>();
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
StringBuilder sql = new StringBuilder(" from ");
sql.append(getPersistenceClass());
if(property!=null && value !=null) {
sql.append(" where ").append(property).append(" = ?1");
}
if(sortExperssion!=null && sortDirection!=null) {
sql.append(" order by ").append(sortExperssion);
sql.append(" "+(sortDirection.equals("ASC")?"asc":"desc"));
}
TypedQuery<T> query1 = entityManager.createQuery(sql.toString(),persistenceClass);
list = query1.setParameter(1,value).getResultList();
} catch (HibernateException e) {
entityManager.getTransaction().rollback();
log.info(e.getMessage());
}finally {
if (entityManager != null) {
entityManager.close();
}
}
return list;
}
@Override
public Object[] getEntityPage(String property, Object value, String sortExperssion, String sortDirection, Integer offset, Integer limit) {
List<T> list = new ArrayList<T>();
Object totalItem = 0;
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
// HQL
StringBuilder sql = new StringBuilder("from ");
sql.append(getPersistenceClass());
if (property != null && value != null) {
sql.append(" where ").append(property).append(" = ?1");
}
if (sortExperssion != null && sortDirection != null) {
sql.append(" order by ").append(sortExperssion);
sql.append(" " + (sortDirection.equals("ASC") ? "asc" : "desc"));
}
TypedQuery<T> query1 = entityManager.createQuery(sql.toString(),persistenceClass);
if (value != null) {
query1.setParameter(1,value);
}
if(offset!=null &&offset>=0){
query1.setFirstResult(offset);
}
if(limit!=null && limit>0){
query1.setMaxResults(limit);
}
list = query1.getResultList();
// số phần tử trong list
// StringBuilder sql2 = new StringBuilder("Select count(*) from ");
// sql2.append(getPersistenceClass());
// if (value != null && property != null) {
// sql2.append(" where ").append(property).append("= ?1");
// }
// TypedQuery<T> query2 = entityManager.createQuery(sql2.toString(),persistenceClass);
// if (value != null) {
// query2.setParameter(1,value);
// }
//
//// trả về size
totalItem = finAllEntity().size();
entityManager.getTransaction().commit();
} catch (HibernateException e) {
entityManager.getTransaction().rollback();
} finally {
if (entityManager != null) {
entityManager.close();
}
}
return new Object[]{totalItem, list};
}
}
package com.itsol.quantrivanphong.report.issue.common;
import java.io.Serializable;
import java.util.List;
public interface GennericeEntityManagerDao<ID extends Serializable,T> {
List<T> finAllEntity();
void saveEntity(T entity);
T updateEntity(T entity);
Integer deleteEntity(ID[] ids);
Integer deleteEntityByID(Integer id);
T findByEmtityId(ID id);
List<T> finByProperty(String property, Object value, String sortExperssion, String sortDirection);
Object[] getEntityPage(String property, Object value, String sortExperssion, String sortDirection,Integer offset, Integer limit);
// Integer getCount();
}
package com.itsol.quantrivanphong.report.issue.common;
public interface Pageble {
Integer getPage();
Integer getOffset();
Integer getLimit();
Sorter getSorter();
}
package com.itsol.quantrivanphong.report.issue.common;
public class PagebleRequest implements Pageble {
private Integer page;
private Integer maxPageItem;
private Sorter sorter;
@Override
public Integer getPage() {
return this.page;
}
public PagebleRequest(Integer page, Integer maxPageItem, Sorter sorter) {
this.page = page;
this.maxPageItem = maxPageItem;
this.sorter = sorter;
}
@Override
public Integer getOffset() {
// tính vị trí đầu của 1 page
if (this.page != null && this.maxPageItem != null) {
return ((this.page - 1) * this.maxPageItem);
}
return null;
}
@Override
public Integer getLimit() {
return (this.getOffset() + this.maxPageItem);
}
@Override
public Sorter getSorter() {
return this.sorter;
}
}
package com.itsol.quantrivanphong.report.issue.common;
public class Sorter {
private String sortName;
private String sortBy;
public Sorter(String sortName, String sortBy) {
this.sortName = sortName;
this.sortBy = sortBy;
}
public String getSortName() {
return sortName;
}
public void setSortName(String sortName) {
this.sortName = sortName;
}
public String getSortBy() {
return sortBy;
}
public void setSortBy(String sortBy) {
this.sortBy = sortBy;
}
}
package com.itsol.quantrivanphong.report.issue.common;
import java.util.List;
public class WrapperResultObject {
private int status;
private String message;
private List<String> lstRole;
private String Role;
public String getRole() {
return Role;
}
public void setRole(String role) {
Role = role;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<String> getLstRole() {
return lstRole;
}
public void setLstRole(List<String> lstRole) {
this.lstRole = lstRole;
}
public WrapperResultObject(int status, String message, List<String> lstRole) {
this.status = status;
this.message = message;
this.lstRole = lstRole;
}
public WrapperResultObject(int status, String message, List<String> lstRole, String role) {
this.status = status;
this.message = message;
this.lstRole = lstRole;
Role = role;
}
}
package com.itsol.quantrivanphong.report.issue.controller;
import com.itsol.quantrivanphong.model.Issues;
import com.itsol.quantrivanphong.report.issue.bussiness.IssueBussiness;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import com.itsol.quantrivanphong.report.issue.dto.IssueDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
public class IssueController {
@Autowired
private IssueBussiness issueBussiness;
@GetMapping(value = "/danh-sach-issues")
public ResponseEntity getAllIssue(){
return ResponseEntity.ok(issueBussiness.getAllIssue());
}
@GetMapping(value = "/chi-tiet-issues/{id}")
public ResponseEntity getIssueById(@PathVariable("id")Integer id){
Issues issues = issueBussiness.findIssueById(id);
if(issues!=null){
return ResponseEntity.ok(issues);
}
return ResponseEntity.ok("Issues không tồn tại");
}
@PostMapping(value = "/them-issues")
public ResponseEntity saveIssue(@RequestBody IssueDTO issueDTO){
WrapperResult wrapperResult = issueBussiness.saveIssue(issueDTO);
return ResponseEntity.ok(wrapperResult);
}
@PutMapping(value = "/sua-issues")
public ResponseEntity editIssue(@RequestBody IssueDTO issueDTO){
WrapperResult wrapperResult = issueBussiness.updateIssue(issueDTO);
return ResponseEntity.ok(wrapperResult);
}
@DeleteMapping(value = "/xoa-issues")
public ResponseEntity deleteIssue(@RequestBody IssueDTO issueDTO){
WrapperResult wrapperResult = issueBussiness.deleteIssue(issueDTO);
return ResponseEntity.ok(wrapperResult);
}
}
package com.itsol.quantrivanphong.report.issue.dto; package com.itsol.quantrivanphong.report.issue.dto;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.sql.Timestamp;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class AbstractPage<T> { public class IssueDTO {
// tổng số item trong 1 trang private Integer id;
private int maxPageItems; private String title;
// tổng số item trả về list đó private String actionCode;
private int totalItems=0; private Timestamp startDate;
// phần tử cuối cùng của 1 trang private int status;
private int firstItem=0; private Integer projectId;
private String sortExpression; private ProjectDTO projectDTO;
private String sortDirection;
// vị trí trang đang đứng
private int page = 1;
} }
package com.itsol.quantrivanphong.report.issue.repository; package com.itsol.quantrivanphong.report.issue.repository;
import com.itsol.quantrivanphong.report.issue.common.GennericeEntityManagerDao;
import com.itsol.quantrivanphong.model.Issues; import com.itsol.quantrivanphong.model.Issues;
import org.springframework.data.jpa.repository.JpaRepository;
public interface IssueRepository extends GennericeEntityManagerDao<Integer, Issues> { public interface IssueRepository extends JpaRepository<Issues, Integer> {
Issues findIssuesById(Integer id);
} }
package com.itsol.quantrivanphong.report.issue.repository;
import com.itsol.quantrivanphong.report.issue.common.AbstractEntityManagerDao;
import com.itsol.quantrivanphong.model.Issues;
import org.springframework.stereotype.Repository;
@Repository
public class IssueRepositoryImpl extends AbstractEntityManagerDao<Integer, Issues> implements IssueRepository{
}
package com.itsol.quantrivanphong.report.issue;
public class test {
}
package com.itsol.quantrivanphong.report.issuescomment.bussiness;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import com.itsol.quantrivanphong.report.issuescomment.dto.IssuesCommentDTO;
import java.util.List;
public interface IssuesCommentBussiness {
// danh sách comment của issues
List<IssuesCommentDTO> getListComment(Integer issuesId);
WrapperResult createComment(IssuesCommentDTO dto);
WrapperResult updateComment(IssuesCommentDTO dto);
WrapperResult deleteComment(IssuesCommentDTO dto);
IssuesCommentDTO findIssuesCommentById(Integer id);
}
package com.itsol.quantrivanphong.report.issuescomment.bussiness;
import com.itsol.quantrivanphong.model.IssuesComment;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import com.itsol.quantrivanphong.report.issue.repository.IssueRepository;
import com.itsol.quantrivanphong.report.issuescomment.dto.IssuesCommentDTO;
import com.itsol.quantrivanphong.report.issuescomment.repository.IssuesCommentRepository;
import org.apache.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Service
public class IssuesCommentBussinessImpl implements IssuesCommentBussiness{
Logger logger = Logger.getLogger(IssuesCommentBussinessImpl.class);
@Autowired
private IssueRepository issueRepository;
@Autowired
private IssuesCommentRepository issuesCommentRepository;
@Override
public List<IssuesCommentDTO> getListComment(Integer issuesId) {
return lstDTO(issuesCommentRepository.findIssuesCommentByIssuesId(issuesId));
}
@Override
public WrapperResult createComment(IssuesCommentDTO dto) {
String views ="";
int status = 113;
dto.setUserCreate("phungdung");
if(dto.getUserCreate()!=null){
try{
dto.setCreateDate(new Timestamp(System.currentTimeMillis()));
IssuesComment issuesComment = issuesCommentRepository.save(Models(dto));
views="tạo comment thành công!";
status = 200;
}catch (Exception e){
logger.info(" Lỗi Insert Comment "+e.getMessage());
views="Lỗi Tạo Comment";
}
}else{
views="Vui lòng đăng nhập để thực hiện chức năng này";
}
return new WrapperResult(status,views);
}
@Override
public WrapperResult updateComment(IssuesCommentDTO dto) {
return null;
}
@Override
public WrapperResult deleteComment(IssuesCommentDTO dto) {
return null;
}
@Override
public IssuesCommentDTO findIssuesCommentById(Integer id) {
return DTO(issuesCommentRepository.findIssuesCommentById(id));
}
public IssuesComment Models(IssuesCommentDTO dto){
IssuesComment issuesComment = new IssuesComment();
BeanUtils.copyProperties(dto,issuesComment);
if(dto.getIssueId()!=null){
issuesComment.setIssues(issueRepository.findIssuesById(dto.getIssueId()));
}
return issuesComment;
}
public IssuesCommentDTO DTO(IssuesComment issuesComment){
IssuesCommentDTO dto = new IssuesCommentDTO();
BeanUtils.copyProperties(issuesComment,dto);
return dto;
}
public List<IssuesCommentDTO> lstDTO(List<IssuesComment> lst){
List<IssuesCommentDTO> lstDTO = new ArrayList<IssuesCommentDTO>();
for (IssuesComment issuesComment:lst) {
lstDTO.add(DTO(issuesComment));
}
return lstDTO;
}
}
package com.itsol.quantrivanphong.report.issuescomment.controller;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import com.itsol.quantrivanphong.report.issuescomment.bussiness.IssuesCommentBussiness;
import com.itsol.quantrivanphong.report.issuescomment.dto.IssuesCommentDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class IssuesControllers {
@Autowired
private IssuesCommentBussiness issuesCommentBussiness;
@GetMapping(value = "/Comment/{IssuesId}")
public ResponseEntity getComment(@PathVariable("IssuesId") Integer issuesId){
List<IssuesCommentDTO> listComment = issuesCommentBussiness.getListComment(issuesId);
return ResponseEntity.ok(listComment);
}
@PostMapping(value = "/tao-comment")
public ResponseEntity saveComment(@RequestBody IssuesCommentDTO issuesCommentDTO){
WrapperResult wrapperResult = issuesCommentBussiness.createComment(issuesCommentDTO);
return ResponseEntity.ok(wrapperResult);
}
}
package com.itsol.quantrivanphong.report.issuescomment.dto;
import com.itsol.quantrivanphong.report.issue.dto.IssueDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IssuesCommentDTO {
private Integer id;
private String contentIssuse;
private String userCreate;
private Timestamp createDate;
private Integer issueId;
private IssueDTO issue;
}
package com.itsol.quantrivanphong.report.issuescomment.repository;
import com.itsol.quantrivanphong.model.IssuesComment;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface IssuesCommentRepository extends JpaRepository<IssuesComment,Integer> {
List<IssuesComment> findIssuesCommentByIssuesId(Integer issuesId);
IssuesComment findIssuesCommentById(Integer id);
}
//package com.itsol.quantrivanphong.security;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.itsol.quantrivanphong.access.login.dto.EmployeeDTO;
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;
//import org.apache.log4j.Logger;
//import org.springframework.security.authentication.AuthenticationManager;
//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.core.AuthenticationException;
//import org.springframework.security.core.userdetails.User;
//import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
//
//import javax.servlet.FilterChain;
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.Date;
//
//public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter{
// private Logger logger = Logger.getLogger(AuthenticationFilter.class);
// private final AuthenticationManager authenticationManager;
//
// public AuthenticationFilter(AuthenticationManager authenticationManager) {
// this.authenticationManager = authenticationManager;
// }
//
//// Login
// @Override
// public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
// throws AuthenticationException {
// try {
// EmployeeDTO userLogin = new ObjectMapper().readValue(request.getInputStream(), EmployeeDTO.class);
// return authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(
// userLogin.getUsername(), userLogin.getPassword(), new ArrayList<>()));
// } catch (IOException e) {
// throw new RuntimeException(e);
// }
// }
//
//// parse Token ra ngoài header
// @Override
// protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain,
// Authentication authResult) throws IOException, ServletException {
// String userName = ((User) authResult.getPrincipal()).getUsername();
// String token = Jwts.builder()
// .setSubject(userName).setExpiration(new Date(System.currentTimeMillis() + SecurityConstants.EXPIRATION_TIME))
// .signWith(SignatureAlgorithm.HS512, SecurityConstants.TOKEN_SECRET)
// .compact();
// response.addHeader(SecurityConstants.HEADER_STRING, SecurityConstants.TOKEN_PREFIX + token);
// }
//}
//package com.itsol.quantrivanphong.security;
//
//import io.jsonwebtoken.Jwts;
//import org.apache.log4j.Logger;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.authentication.AuthenticationManager;
//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
//import org.springframework.security.core.context.SecurityContextHolder;
//import org.springframework.security.core.userdetails.UserDetails;
//import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
//
//import javax.servlet.FilterChain;
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.ArrayList;
//
//public class AuthorizationFilter extends BasicAuthenticationFilter {
//
// private Logger logger = Logger.getLogger(AuthorizationFilter.class);
//
// public AuthorizationFilter(AuthenticationManager authManager) {
// super(authManager);
// }
//
// @Autowired
// private UserDetailsServiceImpl userDetailsService;
//
// @Override
// protected void doFilterInternal(HttpServletRequest request,
// HttpServletResponse response, FilterChain chain)
// throws IOException, ServletException {
// String header = request.getHeader(SecurityConstants.HEADER_STRING);
// if(header==null||!header.startsWith(SecurityConstants.TOKEN_PREFIX)){
// chain.doFilter(request,response);
// return;
// }
// UsernamePasswordAuthenticationToken authenticationToken = getAuthentication(request);
// SecurityContextHolder.getContext().setAuthentication(authenticationToken);
// chain.doFilter(request,response);
// }
//
//
//
// private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request){
// String token = request.getHeader(SecurityConstants.HEADER_STRING);
// if(token!=null){
// token = token.replace(SecurityConstants.TOKEN_PREFIX,"");
// String user = getUsername(token);
// if(user!=null){
// try{
//// UserDetails userDetails = userDetailsService.loadUserByUsername(user);
//// return new UsernamePasswordAuthenticationToken(userDetails, "", userDetails.getAuthorities());
// return new UsernamePasswordAuthenticationToken(user,null,new ArrayList<>());
// }catch (Exception e){
// logger.info("Lỗi "+e.getMessage());
// }
// }
// }
// return null;
// }
// public String getUsername(String token) {
// return Jwts.parser()
// .setSigningKey(SecurityConstants.TOKEN_SECRET)
// .parseClaimsJws(token)
// .getBody()
// .getSubject();
// }
//}
//package com.itsol.quantrivanphong.security;
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.core.userdetails.UserDetails;
//
//import java.util.Date;
//
//public class SecurityConstants {
// @Autowired
// private static UserDetailsServiceImpl userDetailsService;
//
// public static final String Member = "Member";
// public static final String TeamLead = "TeamLead";
// public static final String Manager = "Manager";
// public static final String HR = "HR";
//
// public static final long EXPIRATION_TIME = 860000;
// public static final String TOKEN_PREFIX ="Bearer ";
// public static final String HEADER_STRING ="Authorization";
// public static final String TOKEN_SECRET ="jf9i4jgu83nfl10";
//
//
// public static String getToken(String userName){
// String token = Jwts.builder()
// .setSubject(userName).setExpiration(new Date(System.currentTimeMillis() + SecurityConstants.EXPIRATION_TIME))
// .signWith(SignatureAlgorithm.HS512, SecurityConstants.TOKEN_SECRET)
// .compact();
// return token;
// }
//}
//package com.itsol.quantrivanphong.security;
//
//import org.springframework.beans.BeansException;
//import org.springframework.context.ApplicationContext;
//import org.springframework.context.ApplicationContextAware;
//
//public class SpringApplicationContext implements ApplicationContextAware {
// private static ApplicationContext CONTEXT;
//
// @Override
// public void setApplicationContext(ApplicationContext context) throws BeansException {
// CONTEXT = context;
// }
// public static Object getBean(String beanName){
// return CONTEXT.getBean(beanName);
// }
//}
//package com.itsol.quantrivanphong.security;
//import com.itsol.quantrivanphong.access.login.repository.EmployeeRepositorys;
//import com.itsol.quantrivanphong.access.login.repository.EmployeeRoleRepository;
//import com.itsol.quantrivanphong.model.Employee;
//import com.itsol.quantrivanphong.model.EmployeeRole;
//import org.apache.log4j.Logger;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//import org.springframework.security.core.userdetails.User;
//import org.springframework.security.core.userdetails.UserDetails;
//import org.springframework.security.core.userdetails.UserDetailsService;
//import org.springframework.security.core.userdetails.UsernameNotFoundException;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//import org.springframework.stereotype.Service;
//
//import java.util.ArrayList;
//import java.util.List;
//
//@Service
//public class UserDetailsServiceImpl implements UserDetailsService {
//
//
// private static Logger logger = Logger.getLogger(UserDetailsServiceImpl.class);
//
// @Autowired
// private EmployeeRepositorys employeeRepositorys;
//
// @Autowired
// private EmployeeRoleRepository employeeRoleRepository;
//
// @Override
// public UserDetails loadUserByUsername(String user) throws UsernameNotFoundException {
// Employee userModels = employeeRepositorys.findEmployeeByUsername(user);
// if (userModels == null) {
// logger.info("User not found!" + user);
// throw new UsernameNotFoundException("User " + user + " was not found in the database");
// }
// List<String> lstRole = findRoleNameByUserId(userModels.getId());
//
// List<GrantedAuthority> lstGrant = new ArrayList<GrantedAuthority>();
// if (!lstRole.isEmpty() && lstRole.size() != 0) {
// for (String role : lstRole) {
// GrantedAuthority authority = new SimpleGrantedAuthority(role);
// lstGrant.add(authority);
// }
// }
// UserDetails userDetails = (UserDetails) new User(userModels.getUsername(), encrytePassword(userModels.getPassword()), lstGrant);
// return userDetails;
// }
//// Tìm kiếm Danh sách Role theo userId
// public List<String> findRoleNameByUserId(Integer userId) {
// List<String> lst = new ArrayList<String>();
// List<EmployeeRole> lstUR = employeeRoleRepository.findByEmployeeId(userId);
// for (EmployeeRole employeeRole:lstUR) {
// lst.add(employeeRole.getRole().getRoleCode());
// }
// return lst;
// }
// public String encrytePassword(String password) {
// BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
// return encoder.encode(password);
// }
//}
//package com.itsol.quantrivanphong.security;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.http.HttpMethod;
//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//import org.springframework.security.crypto.password.PasswordEncoder;
//
//// xác định lớp WebSecurityConfig của ta là một lớp dùng để cấu hình.
//@Configuration
////tích hợp Spring Security với Spring MVC.
//@EnableWebSecurity
//public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//
// // interface UserDetailsService để cấu hình
// @Autowired
// private UserDetailsServiceImpl userDetailsService;
//
// //
// @Bean
// public PasswordEncoder passwordEncoder() {
// return new BCryptPasswordEncoder();
// }
//
// //
// @Autowired
// public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
// }
//
// @Override
// protected void configure(HttpSecurity http) throws Exception {
// http.csrf().disable();
//// các trang không yêu cầu login
// http
// .authorizeRequests()
// .antMatchers(HttpMethod.POST, "/login").permitAll()
// .antMatchers(HttpMethod.POST, "/register/dang-ky-tai-khoan").permitAll()
// .antMatchers(HttpMethod.GET, "/homepage/**").permitAll()
//// các trang yêu cầu login
// .antMatchers("/api/EmployeeTimekeeping/**").hasAnyRole(SecurityConstants.Member, SecurityConstants.Manager, SecurityConstants.TeamLead, SecurityConstants.HR)
// .antMatchers(HttpMethod.GET, "/api/quan-ly/danh-sach-xin-phep").hasRole(SecurityConstants.TeamLead)
// .antMatchers("/api/quan-ly/**").hasAnyRole(SecurityConstants.Manager, SecurityConstants.HR)
// .anyRequest().authenticated()
// .and().addFilter(getAuthenticationFilter())
// .addFilter(new AuthorizationFilter(authenticationManager()));
// }
//// đổi tên cổng login
// public AuthenticationFilter getAuthenticationFilter() throws Exception{
// final AuthenticationFilter filter = new AuthenticationFilter(authenticationManager());
// filter.setFilterProcessesUrl("/quan-tri-van-phong/login");
// return filter;
// }
//}
//
<<<<<<< HEAD
#server.port=8081 #server.port=8081
=======
server.port=8081
<<<<<<< HEAD
>>>>>>> master
# =============================== # ===============================
# DATABASE CONNECTION # DATABASE CONNECTION
# =============================== # ===============================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
<<<<<<< HEAD
spring.datasource.url=jdbc:mysql://localhost:3306/quantrivanphong spring.datasource.url=jdbc:mysql://localhost:3306/quantrivanphong
=======
spring.datasource.url=jdbc:mysql://localhost:3308/quantrivanphong
=======
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/qtvp_01
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
>>>>>>> master
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=ahihi123 spring.datasource.password=ahihi123
...@@ -13,10 +27,19 @@ spring.datasource.password=ahihi123 ...@@ -13,10 +27,19 @@ spring.datasource.password=ahihi123
# =============================== # ===============================
spring.jpa.show-sql=true spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
<<<<<<< HEAD
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
=======
<<<<<<< HEAD
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
>>>>>>> master
#spring.jpa.properties.hibernate.default_schema=qlns_itsol #spring.jpa.properties.hibernate.default_schema=qlns_itsol
=======
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
server.servlet.session.timeout=30s
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
# =============================== # ===============================
# SEND EMAIL # SEND EMAIL
......
...@@ -122,6 +122,7 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony ...@@ -122,6 +122,7 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony
setTimeout(hideURLbar, 0); setTimeout(hideURLbar, 0);
}, false); }, false);
<<<<<<< HEAD
function hideURLbar() { function hideURLbar() {
window.scrollTo(0, 1); window.scrollTo(0, 1);
} </script> } </script>
...@@ -145,12 +146,25 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony ...@@ -145,12 +146,25 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony
<script src="js/custom.js"></script> <script src="js/custom.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script>
<script src="js/angular-route.js"></script> <script src="js/angular-route.js"></script>
=======
<link href="common/css/all.min.css" rel="stylesheet"
type="text/css">
<!-- Page level plugin CSS-->
<link href="common/css/dataTables.bootstrap4.css"
rel="stylesheet">
<!-- Custom styles for this template-->
<link href="common/css/sb-admin.css" rel="stylesheet">
<!-- angular -->
<script src="js/angular.js"></script>
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
<script src="js/angular-ui-router.min.js"></script> <script src="js/angular-ui-router.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-animate.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-animate.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.js"></script>
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.3.3.js"></script> <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.3.3.js"></script>
<script src="js/app.js"></script> <script src="js/app.js"></script>
<script src="pages/project/groupproject/groupProjectController.js"></script> <script src="pages/project/groupproject/groupProjectController.js"></script>
<<<<<<< HEAD
<script src="pages/timesheet/timeSheetController.js"></script> <script src="pages/timesheet/timeSheetController.js"></script>
<script src="pages/leaveform/leaveFormController.js"></script> <script src="pages/leaveform/leaveFormController.js"></script>
...@@ -273,6 +287,19 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony ...@@ -273,6 +287,19 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony
<!-- Custom scripts for all pages--> <!-- Custom scripts for all pages-->
<script src="common/js/sb-admin.min.js"></script> <script src="common/js/sb-admin.min.js"></script>
<<<<<<< HEAD
=======
=======
>>>>>>> 14cbe76ccc34395abe463875cb178d2c872e3f85
=======
<link rel="stylesheet" href="css/bootstrap-combined.min.css">
<script data-require="angular-ui-bootstrap@0.3.0" data-semver="0.3.0" src="js/ui-bootstrap-tpls-0.3.0.min.js"></script>
<script src="pages/issue/IssueController.js"></script>
<script src="pages/issue/IssueAddControlelr.js"></script>
<script src="pages/issue/IssuesDeleteController.js"></script>
<script src="pages/issue/IssuesDetailController.js"></script>
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
>>>>>>> master
</head> </head>
<body class="cbp-spmenu-push" ng-app="myApp"> <body class="cbp-spmenu-push" ng-app="myApp">
<div class="main-content"> <div class="main-content">
...@@ -719,6 +746,7 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony ...@@ -719,6 +746,7 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony
}); });
} }
<<<<<<< HEAD
var colorNames = Object.keys(window.chartColors); var colorNames = Object.keys(window.chartColors);
var el = document.getElementById('addDataset'); var el = document.getElementById('addDataset');
if (el) { if (el) {
...@@ -795,6 +823,19 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony ...@@ -795,6 +823,19 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony
var menuLeft = document.getElementById('cbp-spmenu-s1'), var menuLeft = document.getElementById('cbp-spmenu-s1'),
showLeftPush = document.getElementById('showLeftPush'), showLeftPush = document.getElementById('showLeftPush'),
body = document.body; body = document.body;
=======
<!-- Js -->
<!-- Bootstrap core JavaScript-->
<script src="pages/project/groupproject/groupProjectViewController.js"></script>
<script src="pages/project/project/projectViewController.js"></script>
<script src="pages/project/directives/pagerDirective.js"></script>
<script src="pages/employee/employeeController.js"></script>
<script src="pages/project/project/projectController.js"></script>
<script src="pages/login/loginsController.js"></script>
<script src="common/js/jquery.min.js"></script>
<script src="common/js/bootstrap.bundle.min.js"></script>
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
showLeftPush.onclick = function () { showLeftPush.onclick = function () {
classie.toggle(this, 'active'); classie.toggle(this, 'active');
......
/** /**
* *
*/ */
<<<<<<< HEAD
angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(function ($stateProvider, $urlRouterProvider, $locationProvider) { angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
=======
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
// angular.module("myApp", ["ui.router", 'ngRoute']).config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
=======
angular.module("myApp", ["ngAnimate","ui.router","ui.bootstrap"]).config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
>>>>>>> 14cbe76ccc34395abe463875cb178d2c872e3f85
=======
angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
>>>>>>> 049511c3b37f668c637022150c53bd25d9b8e61d
=======
angular.module("myApp", ["ui.router","ui.bootstrap"]).config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
>>>>>>> master
$locationProvider.hashPrefix(''); $locationProvider.hashPrefix('');
//trở về trang mặc định //trở về trang mặc định
<<<<<<< HEAD
$urlRouterProvider.otherwise("/leaveform"); $urlRouterProvider.otherwise("/leaveform");
=======
$urlRouterProvider.otherwise("/admin-home");
>>>>>>> master
$stateProvider $stateProvider
.state("layout2", { .state("layout2", {
...@@ -15,13 +36,33 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct ...@@ -15,13 +36,33 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct
} }
} }
}) })
<<<<<<< HEAD
.state("admin", { .state("admin", {
<<<<<<< HEAD
parent: 'layout2', parent: 'layout2',
url: "/admin", url: "/admin",
=======
=======
.state("layout4", {
abstract: true,
views: {
"layout": {
templateUrl: "layout/layout4.html"
}
}
})
.state("admin-home", {
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
parent: 'layout3',
url: "/admin-home",
>>>>>>> master
views: { views: {
"content": { "content": {
templateUrl: "pages/adminhome/admin-home.html", templateUrl: "pages/adminhome/admin-home.html",
<<<<<<< HEAD
controller: "adminController" controller: "adminController"
=======
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
} }
} }
}) })
...@@ -116,6 +157,7 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct ...@@ -116,6 +157,7 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct
} }
} }
}) })
<<<<<<< HEAD
.state("createEmployee", { .state("createEmployee", {
parent: 'layout2', parent: 'layout2',
url: "/createEmployee", url: "/createEmployee",
...@@ -129,9 +171,31 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct ...@@ -129,9 +171,31 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct
} }
} }
}) })
<<<<<<< HEAD
.state("timeSheet", { .state("timeSheet", {
parent: 'layout2', parent: 'layout2',
url: "/timesheet", url: "/timesheet",
=======
<<<<<<< HEAD
.state("leaveFormDetail", {
=======
//danh sách các dự án
.state("project", {
parent: 'layout3',
url: "/project",
views: {
"content": {
templateUrl: "pages/project/project/projectListViews.html",
controller: "projectViewsController"
}
}
})
//thêm mới dự án
.state("addproject", {
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
parent: 'layout3',
url: "/leaveformdetail/:id",
>>>>>>> master
views: { views: {
"content": { "content": {
templateUrl: "pages/timesheet/timeSheet.html", templateUrl: "pages/timesheet/timeSheet.html",
...@@ -169,6 +233,14 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct ...@@ -169,6 +233,14 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct
} }
} }
}) })
<<<<<<< HEAD
=======
<<<<<<< HEAD
=======
//sửa thông tin dự án
>>>>>>> 592a9cde2e9976aeb47352e092e8505023fae2e2
>>>>>>> master
.state("editproject", { .state("editproject", {
parent: 'layout2', parent: 'layout2',
url: "/editproject/:ID", url: "/editproject/:ID",
...@@ -179,16 +251,19 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct ...@@ -179,16 +251,19 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct
} }
} }
}) })
//danh sách thành viên trong nhóm dự án
.state("groupProjectByProjectId", { .state("groupProjectByProjectId", {
parent: 'layout2', parent: 'layout2',
url: "/groupProjectByProjectId/:ID", url: "/groupProjectByProjectId/:ID",
params: {ID: null},
views: { views: {
"content": { "content": {
templateUrl: "pages/project/groupproject/groupProjectView.html", templateUrl: "pages/project/groupproject/groupProjectView.html",
controller: "loadGroupProjectByProjectId" controller: "groupProjectShowController"
} }
} }
}) })
//thêm thành viên vào nhóm dự án
.state("addEmployeeProject", { .state("addEmployeeProject", {
parent: 'layout2', parent: 'layout2',
url: "/addEmployeeProject", url: "/addEmployeeProject",
...@@ -199,6 +274,55 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct ...@@ -199,6 +274,55 @@ angular.module("myApp", ["ngAnimate", "ui.router", "ui.bootstrap"]).config(funct
} }
} }
}) })
<<<<<<< HEAD
=======
//sửa thông tin nhân viên trong nhóm
.state("editEmployeeProject", {
parent: 'layout3',
url: "/editEmployeeProject/:ID",
views: {
"content": {
templateUrl: "pages/project/groupproject/groupProjectEditView.html",
controller: "loadEmployeeProjectDetail"
}
}
})
// danh sách project vào các issues
.state("issues", {
parent: 'layout3',
url: "/issues",
views: {
"content": {
templateUrl: "pages/issue/IssueView.html",
controller: "IssuesShowController"
}
}
})
// thêm mới issues
.state("addIssues", {
parent: 'layout3',
url: "/addIssues",
views: {
"content": {
templateUrl: "pages/issue/IssueAdd.html",
controller: "IssuesAddController"
}
}
})
// thêm mới issues
.state("IssuesComment", {
parent: 'layout3',
url: "/issuescomment/:IssuesId",
views: {
"content": {
templateUrl: "pages/issue/IssueDetailViews.html",
controller: "loadIssuesDetail"
}
}
})
});
=======
>>>>>>> master
// .state("timeSheet", { // .state("timeSheet", {
......
...@@ -2,7 +2,63 @@ ...@@ -2,7 +2,63 @@
<!-- header --> <!-- header -->
<<<<<<< HEAD
=======
<nav class="navbar navbar-expand navbar-dark bg-dark static-top">
<a class="navbar-brand mr-1" ui-sref="">Trang Chủ</a>
<a class="navbar-brand mr-1" ui-sref="admin-home" style="margin-left: 40%">Trang Quản Trị</a>
<!-- Navbar Search -->
<form class="d-none d-md-inline-block form-inline ml-auto mr-0 mr-md-3 my-2 my-md-0">
</form>
<!-- Navbar -->
<ul class="navbar-nav ml-auto ml-md-0">
<li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" id="userDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<i class="fas fa-user-circle fa-fw"></i>Admin
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userDropdown">
<a class="dropdown-item" href="#">Profile</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">Logout</a>
</div>
</li>
</ul>
</nav>
<!--end header -->
<div id="wrapper">
<!-- menu -->
<!-- Sidebar -->
<ul class="sidebar navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="pagesDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<i class="fas fa-fw fa-folder"></i>
<span>Quản Trị Văn Phòng</span>
</a>
<div class="dropdown-menu" aria-labelledby="pagesDropdown">
<h6 class="dropdown-header">Quản Trị</h6>
<a class="dropdown-item" ui-sref="project">Dự Án</a>
<a class="dropdown-item" ui-sref="employees">Nhân Viên</a>
<a class="dropdown-item" href="#">Báo Cáo</a>
<a class="dropdown-item" href="#">Tin Tức</a>
<div class="dropdown-divider"></div>
<h6 class="dropdown-header">Báo Cáo</h6>
<a class="dropdown-item" href="#">Xin Phép</a>
<a class="dropdown-item" href="#">Time Sheet</a>
<a class="dropdown-item" ui-sref="issues">Quản lý Issuses</a>
</div>
</li>
</ul>
>>>>>>> master
<!-- end menu --> <!-- end menu -->
...@@ -14,4 +70,18 @@ ...@@ -14,4 +70,18 @@
</div> </div>
<!-- footer --> <!-- footer -->
<<<<<<< HEAD
</div>
=======
</div>
</div>
<!-- Footer -->
<footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">ps: Mock 1</p>
</div> </div>
<!-- /.container -->
</footer>
<!--end footer -->
>>>>>>> master
<div class="container" style="text-align: center"> <div class="container">
<h1>Chào Mừng bạn đến với trang ADMIN</h1>
</div> </div>
\ No newline at end of file
angular.module("myApp").controller("adminController", function($scope, $http,$window) {
console.log("adminController");
});
\ No newline at end of file
...@@ -5,13 +5,10 @@ ...@@ -5,13 +5,10 @@
<h4>Lấy lại mật khẩu bằng Email đăng ký?</h4> <h4>Lấy lại mật khẩu bằng Email đăng ký?</h4>
</div> </div>
<form> <form>
<div class="form-group"> <label>Enter email address</label>
<div class="form-label-group">
<input type="email" id="inputEmail" class="form-control" placeholder="Enter email address" <input type="email" id="inputEmail" class="form-control" placeholder="Enter email address"
required="required" autofocus="autofocus"> required="required" autofocus="autofocus">
<label for="inputEmail">Enter email address</label>
</div>
</div>
<a class="btn btn-primary btn-block" href="login.html">Reset Password</a> <a class="btn btn-primary btn-block" href="login.html">Reset Password</a>
</form> </form>
<div class="text-center"> <div class="text-center">
......
<div class="card card-login mx-auto mt-5"> <div class="card card-login mx-auto mt-5">
<div class="card-header" style="text-align: center">Đăng Nhập Hệ Thống</div> <div class="card-header" style="text-align: center">Đăng Nhập Hệ Thống</div>
<div class="card-body"> <div class="card-body">
<form> <form ng-submit="loginQTVP(login)">
<div class="form-group"> <label>Tên Đăng Nhập</label>
<div class="form-label-group"> <input type="text" id="username" ng-model="login.username" class="form-control" placeholder="Tên Đăng Nhập"
<input type="text" id="username" class="form-control" placeholder="Tên Đăng Nhập"
autofocus="autofocus" required> autofocus="autofocus" required>
<label for="username">Tên Đăng Nhập</label> <label>Mật Khẩu</label>
</div> <input type="password" id="inputPassword" ng-model="login.passworld" class="form-control" placeholder="Mật Khẩu"
</div>
<div class="form-group">
<div class="form-label-group">
<input type="password" id="inputPassword" class="form-control" placeholder="Mật Khẩu"
required="required"> required="required">
<label for="inputPassword">Mật Khẩu</label>
</div>
</div>
<input class="btn btn-primary btn-block" type="submit" value="Đăng Nhập"/> <input class="btn btn-primary btn-block" type="submit" value="Đăng Nhập"/>
</form> </form>
<h4>{{view.message}}</h4>
<div class="text-center"> <div class="text-center">
<a class="d-block small mt-3" ui-sref="register">Đăng Ký</a> <a class="d-block small mt-3" ui-sref="register">Đăng Ký</a>
<a class="d-block small" ui-sref="forgot-password">Lấy Lại Mật Khẩu?</a> <a class="d-block small" ui-sref="forgot-password">Lấy Lại Mật Khẩu?</a>
......
angular.module("myApp").controller("loginController", function($scope, $http,$window) { angular.module("myApp").controller("loginController", function ($scope, $http, $window, $state) {
console.log("loginController"); $scope.loginQTVP = function (login) {
$http({
method: 'POST',
url: 'http://localhost:8081/qtvp/login',
data: angular.toJson($scope.login),
headers: {
'Content-Type': 'application/json'
}
}).then(successCallback, errorCallback);
function successCallback(response) {
$scope.view = response.data;
if ($scope.view.status == 200&&($scope.view.role=='HR'||$scope.view.role=='Manager'||$scope.view.role=='TeamLead')) {
$state.go('admin-home');
}
if ($scope.view.status == 200&&$scope.view.role=='Member') {
$state.go('login');
}
}
function errorCallback(error) {
//error code
console.log("can't insert data!!");
}
}
}); });
\ No newline at end of file
...@@ -2,114 +2,30 @@ ...@@ -2,114 +2,30 @@
<div class="card-header" style="text-align: center">ĐĂNG KÝ TÀI KHOẢN</div> <div class="card-header" style="text-align: center">ĐĂNG KÝ TÀI KHOẢN</div>
<div class="card-body"> <div class="card-body">
<form> <form>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="username" id="username" class="form-control" placeholder="Tên truy cập" <input type="text" ng-model="username" id="username" class="form-control" placeholder="Tên truy cập"
required="required" autofocus="autofocus"> required="required" autofocus="autofocus">
<label for="username">Tên Đăng Nhập</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="name" id="name" class="form-control" placeholder="Họ và Tên" <input type="text" ng-model="name" id="name" class="form-control" placeholder="Họ và Tên"
required="required"> required="required">
<label for="name">Họ và Tên</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="email" ng-model="email" id="email" class="form-control" <input type="email" ng-model="email" id="email" class="form-control"
placeholder="Email đăng ký" required="required"> placeholder="Email đăng ký" required="required">
<label for="Email">Email đăng ký</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="tel" ng-model="phonenumber" id="phonenumber" class="form-control" <input type="tel" ng-model="phonenumber" id="phonenumber" class="form-control"
placeholder="SDT" required="required"> placeholder="SDT" required="required">
<label for="phonenumber">SDT</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="Object" id="Object" class="form-control" <input type="text" ng-model="Object" id="Object" class="form-control"
placeholder="Đối tượng" required="required"> placeholder="Đối tượng" required="required">
<label for="Object">Đối Tượng</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="skype" id="skype" class="form-control" <input type="text" ng-model="skype" id="skype" class="form-control"
placeholder="nick skype" required="required"> placeholder="nick skype" required="required">
<label for="skype">Nick Skype</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="facebook" id="facebook" class="form-control" <input type="text" ng-model="facebook" id="facebook" class="form-control"
placeholder="facebook" required="required"> placeholder="facebook" required="required">
<label for="facebook">facebook</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="HocVan" id="HocVan" class="form-control" <input type="text" ng-model="HocVan" id="HocVan" class="form-control"
placeholder="Học Vấn" required="required"> placeholder="Học Vấn" required="required">
<label for="HocVan">Học Vấn</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="QueQuan" id="QueQuan" class="form-control" <input type="text" ng-model="QueQuan" id="QueQuan" class="form-control"
placeholder="Quê Quán" required="required"> placeholder="Quê Quán" required="required">
<label for="QueQuan">Quê Quán</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="Truong" id="Truong" class="form-control" <input type="text" ng-model="Truong" id="Truong" class="form-control"
placeholder="Trường" required="required"> placeholder="Trường" required="required">
<label for="Truong">Trường</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="Khoa" id="Khoa" class="form-control" <input type="text" ng-model="Khoa" id="Khoa" class="form-control"
placeholder="Khoa" required="required"> placeholder="Khoa" required="required">
<label for="Khoa">Khoa</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="NamTotNghiep" id="NamTotNghiep" class="form-control" <input type="text" ng-model="NamTotNghiep" id="NamTotNghiep" class="form-control"
placeholder="Năm tốt nghiệp" required="required"> placeholder="Năm tốt nghiệp" required="required">
<label for="NamTotNghiep">Năm tốt nghiệp</label>
</div>
</div>
</div>
</div>
<a class="btn btn-primary btn-block" href="#">Register</a> <a class="btn btn-primary btn-block" href="#">Register</a>
</form> </form>
<div class="text-center"> <div class="text-center">
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment