Commit 6f855afc authored by đinh thị đầm's avatar đinh thị đầm

Merge branch 'dinhdam'

# Conflicts:
#	src/main/java/com/itsol/quantrivanphong/access/homepage/business/CatalogiBusiness.java
#	src/main/java/com/itsol/quantrivanphong/access/homepage/business/NewsBusiness.java
#	src/main/java/com/itsol/quantrivanphong/access/homepage/controller/CatalogiController.java
#	src/main/java/com/itsol/quantrivanphong/access/homepage/controller/NewsController.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/project/bussiness/ProjectBussiness.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/project/bussiness/ProjectBussinessImpl.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/project/controller/ProjectController.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/projectgroup/bussiness/ProjectGroupBussiness.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/projectgroup/bussiness/ProjectGroupBussinessImpl.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/projectgroup/common/EmployeeRepositoryImpl.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/projectgroup/controller/ProjectGroupController.java
#	src/main/java/com/itsol/quantrivanphong/model/Catalogi.java
#	src/main/java/com/itsol/quantrivanphong/model/Eproject.java
#	src/main/java/com/itsol/quantrivanphong/model/News.java
#	src/main/java/com/itsol/quantrivanphong/report/issue/common/AbstractEntityManagerDao.java
#	src/main/java/com/itsol/quantrivanphong/report/issue/common/GennericeEntityManagerDao.java
#	src/main/java/com/itsol/quantrivanphong/report/leaveform/business/LeaveFormBusiness.java
#	src/main/java/com/itsol/quantrivanphong/report/leaveform/controller/LeaveFormController.java
#	src/main/java/com/itsol/quantrivanphong/report/timesheet/business/TimeSheetBusiness.java
#	src/main/java/com/itsol/quantrivanphong/report/timesheet/controller/TimeSheetController.java
#	src/main/java/com/itsol/quantrivanphong/report/timesheet/repository/TimeSheetRepository.java
#	src/main/resources/public/layout/layout1.html
#	src/main/resources/public/pages/report/employeeListViews.html
#	src/main/resources/public/pages/report/employeeListViews1.html
#	src/main/resources/public/pages/report/reportController.js
#	src/main/resources/public/pages/report/reportPage.html
parents e3332b54 5a3250a9
package com.itsol.quantrivanphong.access.homepage.business; package com.itsol.quantrivanphong.access.homepage.business;
import com.itsol.quantrivanphong.access.homepage.repository.CatalogiRepository; import com.itsol.quantrivanphong.access.homepage.repository.CatalogiRepository;
import com.itsol.quantrivanphong.exception.ResourceNotFoundException;
import com.itsol.quantrivanphong.model.Catalogi; import com.itsol.quantrivanphong.model.Catalogi;
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.util.List; import java.util.List;
import java.util.Optional;
@Service @Service
public class CatalogiBusiness { public class CatalogiBusiness {
...@@ -24,4 +24,13 @@ public class CatalogiBusiness { ...@@ -24,4 +24,13 @@ public class CatalogiBusiness {
public Catalogi save(Catalogi catalogi){ public Catalogi save(Catalogi catalogi){
return catalogiRepository.save(catalogi); return catalogiRepository.save(catalogi);
} }
public String deleteCatalogi(int catalogiId){
Catalogi catalogi = catalogiRepository.findCatalogiById(catalogiId);
if(catalogi == null){
throw new ResourceNotFoundException("News" ,"newsId",catalogiId);
}
catalogiRepository.delete(catalogi);
return "ok";
}
} }
...@@ -7,7 +7,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -7,7 +7,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Optional;
@Service @Service
public class NewsBusiness { public class NewsBusiness {
...@@ -62,8 +61,8 @@ public class NewsBusiness { ...@@ -62,8 +61,8 @@ public class NewsBusiness {
} }
// //
public String deleteNews(int newsId,int employeeId){ public String deleteNews(int newsId){
News news = newsRepository.findByIdAndEmployeeId(newsId,employeeId); News news = newsRepository.findNewsById(newsId);
if(news == null){ if(news == null){
throw new ResourceNotFoundException("News" ,"newsId",newsId); throw new ResourceNotFoundException("News" ,"newsId",newsId);
} }
......
...@@ -30,9 +30,17 @@ public class CatalogiController { ...@@ -30,9 +30,17 @@ public class CatalogiController {
return catalogi; return catalogi;
} }
@PostMapping("/catalogi") @PostMapping("HR/catalogi")
public Catalogi createCatalogi(@Valid@RequestBody Catalogi catalogi) { public Catalogi createCatalogi(@Valid@RequestBody Catalogi catalogi) {
return catalogiBusiness.save(catalogi); return catalogiBusiness.save(catalogi);
} }
@DeleteMapping("HR/catalogi/{catalogiId}")
public ResponseEntity<?> deleteNews(@PathVariable (value = "catalogiId") int catalogiId) {
if(catalogiBusiness.findCatalogiById(catalogiId)== null){
throw new ResourceNotFoundException("News","newsId",catalogiId);
}
return ResponseEntity.ok(catalogiBusiness.deleteCatalogi(catalogiId));
}
} }
...@@ -8,9 +8,8 @@ import com.itsol.quantrivanphong.manager.employee.business.EmployeeBusiness; ...@@ -8,9 +8,8 @@ import com.itsol.quantrivanphong.manager.employee.business.EmployeeBusiness;
import com.itsol.quantrivanphong.model.Catalogi; import com.itsol.quantrivanphong.model.Catalogi;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.News; import com.itsol.quantrivanphong.model.News;
import com.itsol.quantrivanphong.report.leaveform.controller.Notification;
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.*;
...@@ -51,6 +50,11 @@ public class NewsController { ...@@ -51,6 +50,11 @@ public class NewsController {
return newsBusiness.findByCatalogiId(catalogiId); return newsBusiness.findByCatalogiId(catalogiId);
} }
@GetMapping("/catalogi/{catalogiId}/news/{newsId}")
public News getNewsByCatalogiId(@PathVariable(value="catalogiId") int catalogiId,
@PathVariable(value="newsId") int newsId){
return newsBusiness.findNewsByIdAndAndCatalogiId(newsId,catalogiId);
}
// get LatestNews by catalogiId // get LatestNews by catalogiId
@GetMapping("/catalogi/{catalogiId}/latestNews") @GetMapping("/catalogi/{catalogiId}/latestNews")
public List<News> getLatestNews(@PathVariable(value="catalogiId") int catalogiId){ public List<News> getLatestNews(@PathVariable(value="catalogiId") int catalogiId){
...@@ -70,8 +74,8 @@ public class NewsController { ...@@ -70,8 +74,8 @@ public class NewsController {
} }
// create news by employeesId, categoriId // create news by employeesId, categoriId
@PostMapping("/employees/{employeeId}/catalogies/{catalogiId}/news") @PostMapping("/HR/{employeeId}/catalogies/{catalogiId}/news")
public News createNews(@PathVariable (value = "employeeId") int employeeId, public ResponseEntity createNews(@PathVariable (value = "employeeId") int employeeId,
@PathVariable (value = "catalogiId") int catalogiId, @PathVariable (value = "catalogiId") int catalogiId,
@Valid @RequestBody News news) { @Valid @RequestBody News news) {
Employee employee = employeeBusiness.findById(employeeId); Employee employee = employeeBusiness.findById(employeeId);
...@@ -85,17 +89,15 @@ public class NewsController { ...@@ -85,17 +89,15 @@ public class NewsController {
news.setEmployee(employee); news.setEmployee(employee);
news.setCatalogi(catalogi); news.setCatalogi(catalogi);
return newsBusiness.save(news); newsBusiness.save(news);
return ResponseEntity.ok(new Notification(200, "Success"));
} }
// Edit news by EmployeeId // Edit news by EmployeeId
@PutMapping("/employees/{employeeId}/news/{newsId}") @PutMapping("HR/news/{newsId}")
public News updateNews(@PathVariable (value = "employeeId") int employeeId, public News updateNews(@PathVariable (value = "newsId") int newsId,
@PathVariable (value = "newsId") int newsId,
@Valid @RequestBody News newsRequest) { @Valid @RequestBody News newsRequest) {
if(employeeBusiness.findById(employeeId)==null) {
throw new ResourceNotFoundException("Employee" ,"employeeId",employeeId);
}
if (newsBusiness.findNewsById(newsId)== null) { if (newsBusiness.findNewsById(newsId)== null) {
throw new ResourceNotFoundException("News", "id", newsId); throw new ResourceNotFoundException("News", "id", newsId);
} }
...@@ -103,12 +105,11 @@ public class NewsController { ...@@ -103,12 +105,11 @@ public class NewsController {
} }
//delete news by employeeId and newsId //delete news by employeeId and newsId
@DeleteMapping("/HR/catagori/{catagoriId}/news/{newsId}") @DeleteMapping("HR/news/{newsId}")
public ResponseEntity<?> deleteNews(@PathVariable (value = "catagoriId") int catagoriId, public ResponseEntity<?> deleteNews(@PathVariable (value = "newsId") int newsId) {
@PathVariable (value = "newsId") int newsId) { if(newsBusiness.findNewsById(newsId)== null){
if(newsBusiness.findNewsByIdAndAndCatalogiId(newsId,catagoriId)== null){
throw new ResourceNotFoundException("News","newsId",newsId); throw new ResourceNotFoundException("News","newsId",newsId);
} }
return ResponseEntity.ok(newsBusiness.deleteNews(newsId,catagoriId)); return ResponseEntity.ok(newsBusiness.deleteNews(newsId));
} }
} }
...@@ -6,7 +6,6 @@ import org.springframework.data.jpa.repository.Query; ...@@ -6,7 +6,6 @@ import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
import java.util.Optional;
@Repository @Repository
public interface NewsRepository extends JpaRepository<News, Integer> { public interface NewsRepository extends JpaRepository<News, Integer> {
......
...@@ -3,7 +3,6 @@ package com.itsol.quantrivanphong.access.login.dto; ...@@ -3,7 +3,6 @@ package com.itsol.quantrivanphong.access.login.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
...@@ -23,20 +23,6 @@ public class EmailBussiness { ...@@ -23,20 +23,6 @@ public class EmailBussiness {
public boolean sendEmail(EmailDTO emailDTO) { public boolean sendEmail(EmailDTO emailDTO) {
boolean check; boolean check;
// MimeMessage message = sender.createMimeMessage();
// MimeMessageHelper helper = new MimeMessageHelper(message);
//
//
// try {
// helper.setTo(emailDTO.getRecipientEmail());
// helper.setText(emailDTO.getMessage(),"text/html");
// helper.setSubject(emailDTO.getSubject());
// sender.send(message);
// check = true;
// } catch (Exception e) {
// e.printStackTrace();
// check = false;
// }
// Recipient's email ID needs to be mentioned. // Recipient's email ID needs to be mentioned.
String to = emailDTO.getRecipientEmail(); String to = emailDTO.getRecipientEmail();
......
package com.itsol.quantrivanphong.access.register.controller; package com.itsol.quantrivanphong.access.register.controller;
import com.itsol.quantrivanphong.exception.InputException;
import com.itsol.quantrivanphong.access.register.bussiness.RegisterBussiness; import com.itsol.quantrivanphong.access.register.bussiness.RegisterBussiness;
import com.itsol.quantrivanphong.access.register.dto.RegisterDTO; import com.itsol.quantrivanphong.access.register.dto.RegisterDTO;
import com.itsol.quantrivanphong.exception.InputException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
......
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);
} }
...@@ -3,8 +3,13 @@ package com.itsol.quantrivanphong.manager.project.project.bussiness; ...@@ -3,8 +3,13 @@ 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.manager.project.project.repository.ProjectRepository; import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository;
import com.itsol.quantrivanphong.model.Project; 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.util.ArrayList; import java.util.ArrayList;
...@@ -13,22 +18,13 @@ import java.util.List; ...@@ -13,22 +18,13 @@ 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());
} }
...@@ -36,17 +32,22 @@ public class ProjectBussinessImpl implements ProjectBussiness { ...@@ -36,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";
...@@ -55,32 +56,44 @@ public class ProjectBussinessImpl implements ProjectBussiness { ...@@ -55,32 +56,44 @@ 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) {
try { String views = null;
if (dto.getStartDate() == null) { int status = 113;
views = "ngày bắt đầu dự án không được null"; if (projectRepository.findByName(dto.getName()) == null) {
} else if (dto.getEndDate() == null) { try {
views = "ngày dự kiếm kết thúc dự án không được null"; if (dto.getStartDate() == null) {
} else { views = "ngày bắt đầu dự án không được null";
dto.setStatus(0); } else if (dto.getEndDate() == null) {
projectRepository.saveEntity(dtoParseModels(dto)); views = "ngày dự kiếm kết thúc dự án không được null";
views = "thêm thành công project !"; } else {
dto.setStatus(0);
// projectRepository.saveEntity(dtoParseModels(dto));
ProjectDTO saveProject = modelparseDto(projectRepository.save(dtoParseModels(dto)));
if (saveProject != null) {
views = "thêm thành công project !";
status = 200;
} else {
views = "thêm project không thành công!";
}
}
} catch (Exception e) {
logger.info("Lỗi insert " + e.getMessage());
views = "Lỗi thêm dữ liệu";
} }
} catch (Exception e) { } else {
logger.info("Lỗi insert " + e.getMessage()); views = "Đã tồn tại Dự Án";
views = "thêm project không thành công!";
} }
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;
} }
...@@ -90,30 +103,48 @@ public class ProjectBussinessImpl implements ProjectBussiness { ...@@ -90,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) {
......
...@@ -3,6 +3,7 @@ package com.itsol.quantrivanphong.manager.project.project.controller; ...@@ -3,6 +3,7 @@ package com.itsol.quantrivanphong.manager.project.project.controller;
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.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.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -17,74 +18,32 @@ public class ProjectController { ...@@ -17,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 GennericeEntityManagerDao<Integer, Project> { public interface ProjectRepository extends JpaRepository<Project,Integer> {
Project findProjectById(Integer id);
Project findProjectByName(String nameProject);
Project findByName(String nameProject);
} }
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.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.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.model.Eproject;
import com.itsol.quantrivanphong.model.Project; 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<ProjectGroupDTO> lstDTO = utils.getListDTO(lstModels);
List<Eproject> lstModels = projectGroupRepository.finByProperty("project", project, "joinDate", "DESC"); return lstDTO;
List<ProjectGroupDTO> lstDTO = utils.getListDTO(lstModels);
return lstDTO;
}
return null;
} }
public boolean checkEmployeeInGroupProject(ProjectGroupDTO dto){
List<Eproject> lst = projectGroupRepository.finByProperty("project",projectRepository.findByEmtityId(dto.getProjectId()),null,null); public boolean checkEmployeeInGroupProject(ProjectGroupDTO dto) {
for (Eproject eproject:lst) { if (dto.getProjectId()!=null) {
if(eproject.getEmployee().getId()==dto.getUserId()){ List<Eproject> lst = projectGroupRepository.findByProjectId(dto.getProjectId());
return true; for (Eproject eproject : lst) {
if (eproject.getEmployee().getUsername().equals(dto.getUserName())) {
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);
views = "thêm thành công nhân viên vào nhóm dự án"; 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";
status = 200;
} else {
views = "thêm không thành công!";
}
} catch (Exception e) { } catch (Exception e) {
views = "thêm không thành công!"; logger.info("Lỗi " + e.getMessage());
} }
}else { } 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";
status = 200;
} }
}else{ } 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);
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 views; 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;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.report.issue.common.AbstractEntityManagerDao;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
@Service
public class EmployeeRepositoryImpl extends AbstractEntityManagerDao<Integer, Employee> {
private Logger logger = Logger.getLogger(EmployeeRepositoryImpl.class);
public Employee getEmployeeById(Integer employeeId) {
try {
Employee employee = findByEmtityId(employeeId);
if (employee != null) {
return employee;
}
} catch (Exception e) {
logger.info("( Lỗi tìm employee theo ID: )" + e.getMessage());
}
return null;
}
}
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,9 +18,9 @@ import java.util.List; ...@@ -18,9 +18,9 @@ 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;
public Eproject Model(ProjectGroupDTO dto){ public Eproject Model(ProjectGroupDTO dto){
...@@ -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);
} }
......
...@@ -2,13 +2,11 @@ package com.itsol.quantrivanphong.manager.project.projectgroup.controller; ...@@ -2,13 +2,11 @@ package com.itsol.quantrivanphong.manager.project.projectgroup.controller;
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.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.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 {
...@@ -17,64 +15,40 @@ public class ProjectGroupController { ...@@ -17,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.JsonIgnoreProperties;
import com.itsol.quantrivanphong.audit.DateAudit;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
@Entity @Entity
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"createdAt", "updatedAt"},
allowGetters = true)
@Table(name = "catalogi") @Table(name = "catalogi")
public class Catalogi extends DateAudit { public class Catalogi {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
...@@ -37,8 +29,10 @@ public class Catalogi extends DateAudit { ...@@ -37,8 +29,10 @@ public class Catalogi extends DateAudit {
@Column(name = "descriptions") @Column(name = "descriptions")
private String descriptions; private String descriptions;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "catalogi") @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "catalogi")
private List<News> news = new ArrayList<>(); private List<News> news = new ArrayList<>();
} }
...@@ -21,25 +21,27 @@ public class Eproject { ...@@ -21,25 +21,27 @@ public class Eproject {
@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 int id;
// chức vụ trong project // chức vụ trong project
@Column(name = "position", nullable = false) @Column(name = "position", nullable = false)
private String position; private String position;
//ngày vào dự án //ngày vào dự án
@Column(name = "join_date",nullable =false) @Column(name = "join_date",nullable =false)
private Timestamp joinDate; private Timestamp joinDate;
// ngày ra dự án // ngày ra dự án
@Column(name = "out_date",nullable = true) @Column(name = "out_date",nullable = true)
private Timestamp outDate; private Timestamp outDate;
@JsonIgnore @Column(name = "status",nullable = false)
private int status;
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(fetch = FetchType.EAGER)
private Employee employee; private Employee employee;
@JsonIgnore
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(fetch = FetchType.EAGER)
private Project project; private Project project;
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy = "eproject", fetch = FetchType.LAZY, cascade = CascadeType.ALL) @OneToMany(mappedBy = "eproject", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<TimeSheet> timeSheetList = new ArrayList<>(); private List<TimeSheet> timeSheetList = new ArrayList<>();
} }
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
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
@Table(name = "issues") @Table(name = "issues")
public class Issues { 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;
//nội dung //nội dung
@Column(name = "content") @Column(name = "content")
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<>();
} }
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;
}
...@@ -2,6 +2,7 @@ package com.itsol.quantrivanphong.model; ...@@ -2,6 +2,7 @@ package com.itsol.quantrivanphong.model;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -14,6 +15,7 @@ import java.util.List; ...@@ -14,6 +15,7 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
@Table(name = "leave_type") @Table(name = "leave_type")
@Builder
public class LeaveType { public class LeaveType {
@Id @Id
......
...@@ -17,7 +17,7 @@ import javax.persistence.*; ...@@ -17,7 +17,7 @@ import javax.persistence.*;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@EntityListeners(AuditingEntityListener.class) @EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"createdAt", "updatedAt"},allowGetters = true) @JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, allowGetters = true)
@Table(name = "news") @Table(name = "news")
public class News extends DateAudit { public class News extends DateAudit {
...@@ -47,12 +47,10 @@ public class News extends DateAudit { ...@@ -47,12 +47,10 @@ public class News extends DateAudit {
@JsonIgnore @JsonIgnore
private Catalogi catalogi; private Catalogi catalogi;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private Employee employee;
@ManyToOne(fetch = FetchType.EAGER)
private Employee employee;
} }
...@@ -18,25 +18,26 @@ import java.util.List; ...@@ -18,25 +18,26 @@ import java.util.List;
@Table(name = "project") @Table(name = "project")
public class Project { public class Project {
@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 Integer id; private Integer id;
// tên project // tên project
@Column(name = "name", nullable = false) @Column(name = "name", nullable = false)
private String name; private String name;
//mô tả ngắn //mô tả ngắn
@Column(name = "descriptions") @Column(name = "descriptions")
private String descriptions; private String descriptions;
//ngày bắt đầu của dự án //ngày bắt đầu của dự án
@Column(name = "start_date", nullable = false) @Column(name = "start_date", nullable = false)
private Timestamp startDate; private Timestamp startDate;
//ngày kết thúc dự án //ngày kết thúc dự án
@Column(name = "end_date") @Column(name = "end_date")
private Timestamp endDate; private Timestamp endDate;
//trạng thái //trạng thái
@Column(name = "status",nullable = false) @Column(name = "status",nullable = false)
private Integer status; private Integer status;
......
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 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 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;
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;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IssueDTO {
private Integer id;
private String title;
private String actionCode;
private Timestamp startDate;
private int status;
private Integer projectId;
private ProjectDTO projectDTO;
}
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 {
}
...@@ -6,7 +6,7 @@ import com.itsol.quantrivanphong.model.LeaveForm; ...@@ -6,7 +6,7 @@ import com.itsol.quantrivanphong.model.LeaveForm;
import com.itsol.quantrivanphong.model.LeaveType; import com.itsol.quantrivanphong.model.LeaveType;
import com.itsol.quantrivanphong.report.leaveform.dto.LeaveFormDTO; import com.itsol.quantrivanphong.report.leaveform.dto.LeaveFormDTO;
import com.itsol.quantrivanphong.report.leaveform.repository.LeaveFormRepository; import com.itsol.quantrivanphong.report.leaveform.repository.LeaveFormRepository;
import com.itsol.quantrivanphong.report.leaveform.repository.LeaveTypeRepository; import com.itsol.quantrivanphong.report.leavetype.repository.LeaveTypeRepository;
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 org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -135,4 +135,8 @@ public class LeaveFormBusiness { ...@@ -135,4 +135,8 @@ public class LeaveFormBusiness {
public LeaveForm showLeaveFormById(int id) { public LeaveForm showLeaveFormById(int id) {
return leaveFormRepository.findLeaveFormById(id); return leaveFormRepository.findLeaveFormById(id);
} }
public List<LeaveType> getLeaveTypeList() {
return leaveTypeRepository.findAll();
}
} }
package com.itsol.quantrivanphong.report.leaveform.controller; package com.itsol.quantrivanphong.report.leaveform.controller;
import com.itsol.quantrivanphong.exception.InputException; import com.itsol.quantrivanphong.exception.InputException;
import com.itsol.quantrivanphong.model.LeaveForm;
import com.itsol.quantrivanphong.model.LeaveType;
import com.itsol.quantrivanphong.report.leaveform.business.LeaveFormBusiness; import com.itsol.quantrivanphong.report.leaveform.business.LeaveFormBusiness;
import com.itsol.quantrivanphong.report.leaveform.dto.LeaveFormDTO; import com.itsol.quantrivanphong.report.leaveform.dto.LeaveFormDTO;
import com.itsol.quantrivanphong.model.LeaveForm;
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.*;
...@@ -76,4 +76,9 @@ public class LeaveFormController { ...@@ -76,4 +76,9 @@ public class LeaveFormController {
public ResponseEntity<LeaveForm> showLeaveFormById(@PathVariable int id) { public ResponseEntity<LeaveForm> showLeaveFormById(@PathVariable int id) {
return ResponseEntity.ok(leaveFormBusiness.showLeaveFormById(id)); return ResponseEntity.ok(leaveFormBusiness.showLeaveFormById(id));
} }
@GetMapping(path = "/leaveType/getAll")
public ResponseEntity<List<LeaveType>> getAllLeaveType() {
return ResponseEntity.ok(leaveFormBusiness.getLeaveTypeList());
}
} }
package com.itsol.quantrivanphong.report.leavetype.business;
import com.itsol.quantrivanphong.model.LeaveType;
import com.itsol.quantrivanphong.report.leavetype.dto.LeaveTypeDTO;
import com.itsol.quantrivanphong.report.leavetype.repository.LeaveTypeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class LeaveTypeBusiness {
@Autowired
LeaveTypeRepository leaveTypeRepository;
public String addLeaveType(LeaveTypeDTO leaveTypeDTO) {
String message;
LeaveType leaveType = leaveTypeRepository.save(LeaveType.builder()
.name(leaveTypeDTO.getName())
.descriptions(leaveTypeDTO.getDescriptions())
.status(true)
.build());
if (leaveType != null) {
message = "Insert leave type success";
} else {
message = "Insert leave type failed";
}
return message;
}
@Transactional
public String deleteLeaveType(int leaveTypeId) {
String message;
LeaveType leaveType = leaveTypeRepository.findLeaveTypeById(leaveTypeId);
if (leaveType != null) {
leaveTypeRepository.delete(leaveType);
if (leaveTypeRepository.findLeaveTypeById(leaveTypeId) != null) {
message = "Delete failed!";
} else {
message = "Delete success!";
}
} else {
message = "Leave Form does not exist";
}
return message;
}
@Transactional
public String updateLeaveType(LeaveTypeDTO leaveTypeDTO) {
String message;
LeaveType leaveType = leaveTypeRepository.findLeaveTypeById(leaveTypeDTO.getId());
if (leaveType != null) {
int i = leaveTypeRepository.updateLeaveType(leaveTypeDTO.getName(), leaveTypeDTO.getDescriptions(), leaveTypeDTO.getId());
if (i == 1) {
message = "Update success";
} else {
message = "Update failed";
}
} else {
message = "Leave Type does not exist";
}
return message;
}
public List<LeaveType> getLeaveTypeList() {
return leaveTypeRepository.findAll();
}
}
package com.itsol.quantrivanphong.report.leavetype.controller;
import com.itsol.quantrivanphong.exception.InputException;
import com.itsol.quantrivanphong.model.LeaveType;
import com.itsol.quantrivanphong.report.leaveform.controller.Notification;
import com.itsol.quantrivanphong.report.leavetype.business.LeaveTypeBusiness;
import com.itsol.quantrivanphong.report.leavetype.dto.LeaveTypeDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(path = "/leavetype")
public class LeaveTypeController {
@Autowired
LeaveTypeBusiness leaveTypeBusiness;
@PostMapping(path = "/add", consumes = "application/json", produces = "application/json")
public ResponseEntity addLeaveForm(@RequestBody LeaveTypeDTO leaveTypeDTO) {
String message;
try {
if (leaveTypeDTO.getName().trim().equals("")) throw new InputException("Tên không được để trống");
if (leaveTypeDTO.getDescriptions().trim().equals("")) throw new InputException("Mô tả không được để trống");
message = leaveTypeBusiness.addLeaveType(leaveTypeDTO);
} catch (InputException e) {
message = e.getMessage();
}
return ResponseEntity.ok(new Notification(200, message));
}
@DeleteMapping("/delete/{leaveTypeId}")
public ResponseEntity deleteLeaveForm(@PathVariable int leaveTypeId) {
return ResponseEntity.ok(new Notification(200, leaveTypeBusiness.deleteLeaveType(leaveTypeId)));
}
@PostMapping(path = "/update", consumes = "application/json", produces = "application/json")
public ResponseEntity updateLeaveForm(@RequestBody LeaveTypeDTO leaveTypeDTO) {
String message;
try {
if (leaveTypeDTO.getName().trim().equals("")) throw new InputException("Tiêu đề không được để trống");
if (leaveTypeDTO.getDescriptions().trim().equals("")) throw new InputException("Nội dung không được để trống");
message = leaveTypeBusiness.updateLeaveType(leaveTypeDTO);
} catch (InputException e) {
message = e.getMessage();
}
return ResponseEntity.ok(new Notification(200, message));
}
@GetMapping(path = "/getAll")
public ResponseEntity<List<LeaveType>> getAllLeaveType() {
return ResponseEntity.ok(leaveTypeBusiness.getLeaveTypeList());
}
}
package com.itsol.quantrivanphong.report.leavetype.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LeaveTypeDTO {
private int id;
private String name;
private String descriptions;
private boolean status;
}
package com.itsol.quantrivanphong.report.leaveform.repository; package com.itsol.quantrivanphong.report.leavetype.repository;
import com.itsol.quantrivanphong.model.LeaveType; import com.itsol.quantrivanphong.model.LeaveType;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
public interface LeaveTypeRepository extends JpaRepository<LeaveType, Integer> { public interface LeaveTypeRepository extends JpaRepository<LeaveType, Integer> {
LeaveType findLeaveTypeById(int id); LeaveType findLeaveTypeById(int id);
@Modifying
@Query("update LeaveType lt set lt.name = ?1, lt.descriptions = ?2 where lt.id = ?3")
int updateLeaveType(String name, String descriptions, int id);
} }
...@@ -137,4 +137,8 @@ public class TimeSheetBusiness { ...@@ -137,4 +137,8 @@ public class TimeSheetBusiness {
public TimeSheet findTimeSheetById(int id) { public TimeSheet findTimeSheetById(int id) {
return timeSheetRepository.findTimeSheetById(id); return timeSheetRepository.findTimeSheetById(id);
} }
public List<Eproject> getEprojectList() {
return eProjectRepository.findAll();
}
} }
package com.itsol.quantrivanphong.report.timesheet.controller; package com.itsol.quantrivanphong.report.timesheet.controller;
import com.itsol.quantrivanphong.exception.InputException; import com.itsol.quantrivanphong.exception.InputException;
import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.model.TimeSheet; import com.itsol.quantrivanphong.model.TimeSheet;
import com.itsol.quantrivanphong.report.leaveform.controller.Notification; import com.itsol.quantrivanphong.report.leaveform.controller.Notification;
import com.itsol.quantrivanphong.report.timesheet.business.TimeSheetBusiness; import com.itsol.quantrivanphong.report.timesheet.business.TimeSheetBusiness;
...@@ -90,4 +91,10 @@ public class TimeSheetController { ...@@ -90,4 +91,10 @@ public class TimeSheetController {
public ResponseEntity<String> updateCheck(@RequestBody TimeSheetDTO timeSheetDTO) { public ResponseEntity<String> updateCheck(@RequestBody TimeSheetDTO timeSheetDTO) {
return ResponseEntity.ok(timeSheetBusiness.updateCheck(timeSheetDTO)); return ResponseEntity.ok(timeSheetBusiness.updateCheck(timeSheetDTO));
} }
@GetMapping(path = "/getAll")
public List<Eproject> getAllEproject() {
return timeSheetBusiness.getEprojectList();
}
} }
\ No newline at end of file
...@@ -8,13 +8,10 @@ import org.springframework.data.jpa.repository.Query; ...@@ -8,13 +8,10 @@ import org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
public interface EProjectRepository extends JpaRepository<Eproject, Integer> { public interface EProjectRepository extends JpaRepository<Eproject, Integer> {
// Eproject findEprojectById(int id); Eproject findEprojectById(int id);
Eproject findEprojectByEmployee(Employee employee); Eproject findEprojectByEmployee(Employee employee);
Eproject findEprojectByIdAndEmployee(int eProject_Id, Employee employee); Eproject findEprojectByIdAndEmployee(int eProjectId, Employee employee);
......
...@@ -37,7 +37,7 @@ public interface TimeSheetRepository extends JpaRepository<TimeSheet, Integer> { ...@@ -37,7 +37,7 @@ public interface TimeSheetRepository extends JpaRepository<TimeSheet, Integer> {
//Timesheet Of Hieunv //Timesheet Of Hieunv
@Query(value = "SELECT * FROM timesheet ts JOIN eproject ep ON ep.id = ts.eproject_id WHERE ep.project_id = ?1 AND ts.status = true and ts.created_at like ?2%", nativeQuery = true) @Query(value = "SELECT * FROM timesheet ts JOIN eproject ep ON ep.id = ts.eproject_id WHERE ep.project_id = ?1 AND ts.status = true and ts.created_at like ?2%", nativeQuery = true)
List<TimeSheet> findAllTimeSheetStatusTrue(int projectId, String currentDate); List<TimeSheet> findAllTimesheetStatusTrue(int projectId, String currentDate);
@Transactional @Transactional
...@@ -48,7 +48,7 @@ public interface TimeSheetRepository extends JpaRepository<TimeSheet, Integer> { ...@@ -48,7 +48,7 @@ public interface TimeSheetRepository extends JpaRepository<TimeSheet, Integer> {
@Transactional @Transactional
@Modifying @Modifying
@Query(value = "update TimeSheet ts set ts.checked = ?1 where ts.id = ?2", nativeQuery = true) @Query(value = "update TimeSheet ts set ts.checked = ?1 where ts.id = ?2", nativeQuery = true)
void updateTimeSheetChecked(String checked, int id); void updateTimesheetChecked(String checked, int id);
@Query(value = "SELECT Count(DISTINCT ts.eproject_id) FROM timesheet ts JOIN eproject ep ON ep.id = ts.eproject_id WHERE ts.status = false AND ep.project_id = ?1 AND created_at >= ?2 AND created_at <= ?3",nativeQuery = true) @Query(value = "SELECT Count(DISTINCT ts.eproject_id) FROM timesheet ts JOIN eproject ep ON ep.id = ts.eproject_id WHERE ts.status = false AND ep.project_id = ?1 AND created_at >= ?2 AND created_at <= ?3",nativeQuery = true)
int numberEmployeeLack(int ProjectId, String firstDate, String finalDate); int numberEmployeeLack(int ProjectId, String firstDate, String finalDate);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -33,22 +33,31 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony ...@@ -33,22 +33,31 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony
<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>
<script src="js/angular-ui-router.min.js"></script> <script src="js/angular-ui-router.min.js"></script>
<script src="js/angular-resource.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/report/reportController.js"></script> <script src="pages/report/reportController.js"></script>
<script src="pages/employee/employeeController.js"></script> <script src="pages/employee/employeeController.js"></script>
<!-- <script src="pages/project/projectController.js"></script>--> <script src="pages/project/project/projectController.js"></script>
<script src="pages/project/groupproject/groupProjectController.js"></script>
<script src="pages/project/groupproject/groupProjectViewController.js"></script>
<script src="pages/issue/IssueAddControlelr.js"></script>
<script src="pages/issue/IssueController.js"></script>
<script src="pages/issue/IssuesDetailController.js"></script>
<script src="pages/issue/IssuesDeleteController.js"></script>
<script src="pages/leaveform/leaveFormController.js"></script> <script src="pages/leaveform/leaveFormController.js"></script>
<script src="pages/homepage/homeController.js"></script> <script src="pages/homepage/MyHomeController.js"></script>
<script src="pages/homepage/HomeService.js"></script>
<script src="pages/timesheet/timeSheetController.js"></script> <script src="pages/timesheet/timeSheetController.js"></script>
<script src="pages/timesheet/timeSheetDetailController.js"></script> <script src="pages/timesheet/timeSheetDetailController.js"></script>
<script src="pages/leaveform/leaveFormDetailController.js"></script> <script src="pages/leaveform/leaveFormDetailController.js"></script>
<script src="pages/employee/createEmployeeController.js"></script> <script src="pages/employee/createEmployeeController.js"></script>
<script src="pages/project/project/projectViewController.js"></script>
<link data-require="bootstrap-css@2.3.2" data-semver="2.3.2" rel="stylesheet" <link data-require="bootstrap-css@2.3.2" data-semver="2.3.2" rel="stylesheet"
href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"/> href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"/>
`
<!-- end anguarjs app--> <!-- end anguarjs app-->
<link href="css/custom.css" rel="stylesheet"> <link href="css/custom.css" rel="stylesheet">
...@@ -111,6 +120,8 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony ...@@ -111,6 +120,8 @@ SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, Sony
}); });
</script> </script>
</head> </head>
<body class="cbp-spmenu-push" ng-app="myApp"> <body class="cbp-spmenu-push" ng-app="myApp">
<div ui-view="layout"></div> <div ui-view="layout"></div>
......
This diff is collapsed.
This diff is collapsed.
...@@ -30,16 +30,27 @@ ...@@ -30,16 +30,27 @@
<span>Employee</span> <span>Employee</span>
</a> </a>
</li> </li>
<!-- PhungDung-->
<li class="treeview"> <li class="treeview">
<!-- <a ui-sref="project">--> <a ui-sref="project">
<i class="fa fa-laptop"></i> <i class="fa fa-laptop"></i>
<span>Project</span> <span>Project</span>
</a>
</li> </li>
<li class="treeview">
<a ui-sref="issues">
<i class="fa fa-laptop"></i>
<span>Quản Lý Issues</span>
</a>
</li>
<!-- END DUng-->
<li class="treeview"> <li class="treeview">
<li class="treeview"> <li class="treeview">
<a ui-sref="news"> <a ui-sref="CatagoriManagement">
<i class="fa fa-newspaper-o" aria-hidden="true"></i> <i class="fa fa-newspaper-o" aria-hidden="true"></i>
<span>News</span> <span>News</span>
</a> </a>
...@@ -60,86 +71,18 @@ ...@@ -60,86 +71,18 @@
</a> </a>
</li> </li>
<li class="treeview">
<a ui-sref="reportProject" >
<i class="fa fa-edit"></i>
<span>Report TimeSheet</span>
</a>
</li>
<li class="treeview"> <li class="treeview">
<a ui-sref="report2"> <a ui-sref="report2">
<i class="fa fa-envelope"></i> <i class="fa fa-envelope"></i>
<span>Report</span> <span>Report</span>
</a> </a>
<ul class="treeview-menu">
<li>
<a href="inbox.html">
<i class="fa fa-angle-right"></i>
Mail Inbox
</a>
</li>
<li>
<a href="compose.html">
<i class="fa fa-angle-right"></i>
Compose Mail
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-folder"></i>
<span>Examples</span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
<li>
<a href="login.html">
<i class="fa fa-angle-right"></i>
Login
</a>
</li>
<li>
<a href="signup.html">
<i class="fa fa-angle-right"></i>
Register
</a>
</li>
<li>
<a href="blank-page.html">
<i class="fa fa-angle-right"></i>
Blank Page
</a>
</li>
</ul>
</li>
<li class="header">LABELS</li>
<li>
<a href="#">
<i class="fa fa-angle-right text-red"></i>
<span>Important</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-angle-right text-yellow"></i>
<span>Warning</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-angle-right text-aqua"></i>
<span>Information</span>
</a>
</li> </li>
</ul> </ul>
</div> </div>
</nav> </nav>
</aside> </aside>
</div> </div>
<!-- header-starts -->
<div class="sticky-header header-section "> <div class="sticky-header header-section ">
<div class="header-left"> <div class="header-left">
<button id="showLeftPush"> <button id="showLeftPush">
......
This diff is collapsed.
<div class="container" style="text-align: center">
<h1>Chào Mừng bạn đến với trang ADMIN</h1>
</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
<div class="container"> <div class="container">
<table class="table"> <table class="table">
<form> <form>
<div class="form-row"> <div class="form-row">
<div class="col"> <div class="col">
<tr> <tr>
<td><label>User Name</label></td> <td><label>User Name</label></td>
<td> <td>
<input type="text" maxlength="29" ng-model="emp.username"/> <input type="text" maxlength="29" ng-model="emp.username"/>
</td> <span style="color:red" ng-show="myForm.emp.username.$dirty && myForm.emp.username.$invalid">
</tr> <span ng-show="myForm.emp.username.$error.required">Username is required.</span>
<tr> </span>
<td><label>First Name</label></td>
<td> </td>
<input type="text" maxlength="29" ng-model="emp.firstName"/> </tr>
</td> <tr>
</tr> <td><label>First Name</label></td>
<tr> <td>
<td><label>Last Name</label></td> <input type="text" maxlength="29" ng-model="emp.firstName"/>
<td> </td>
<input type="text" maxlength="29" ng-model="emp.lastName"/> </tr>
</td> <tr>
</tr> <td><label>Last Name</label></td>
<tr> <td>
<td><label id="email" for="email">Email</label></td> <input type="text" maxlength="29" ng-model="emp.lastName"/>
<td> </td>
<input class="form-check-label" type="email" maxlength="150" ng-model="emp.emailAddress"/> </tr>
</td> <tr>
</tr> <td><label id="email" for="email">Email</label></td>
<tr> <td>
<td><label>Phone</label></td> <input class="form-check-label" type="email" maxlength="150" ng-model="emp.emailAddress"/>
<td> </td>
<input type="text" maxlength="10" value="" ng-model="emp.phoneNumber"/> </tr>
</td> <tr>
</tr> <td><label>Phone</label></td>
</div> <td>
<div class="col"> <input type="text" maxlength="10" value="" ng-model="emp.phoneNumber"/>
<tr> </td>
<td><label>Education</label></td> </tr>
<td> </div>
<input type="text" ng-model="emp.education"/> <div class="col">
</td> <tr>
</tr> <td><label>Education</label></td>
<tr> <td>
<td><label>Home town</label></td> <input type="text" ng-model="emp.education"/>
<td><input type="text" ng-model="emp.homeTown"/></td> </td>
</tr> </tr>
<tr> <tr>
<td><label>Department</label></td> <td><label>Home town</label></td>
<td><input type="text" ng-model="emp.department"/></td> <td><input type="text" ng-model="emp.homeTown"/></td>
</tr> </tr>
<tr> <tr>
<td><label>Position</label></td> <td><label>Department</label></td>
<td><input type="text" ng-model="emp.position"/></td> <td><input type="text" ng-model="emp.department"/></td>
</tr> </tr>
<tr> <tr>
</div> <td><label>Position</label></td>
<td><input type="text" ng-model="emp.position"/></td>
</tr>
<tr>
</div> </div>
</form> </div>
<td></td> </form>
<td> <td></td>
<input class="btn btn-primary" type="submit" name="submit" value="submit" ng-click="save();"/> <td>
<input class="btn btn-primary" type="submit" name="clear" value="clear" ng-click=" emp = null"/> <input class="btn btn-primary" type="submit" name="submit" value="submit" ng-click="save();"/>
</td> <input class="btn btn-primary" type="submit" name="clear" value="clear" ng-click=" emp = null"/>
</tr> </td>
</table> </tr>
</table>
</div> </div>
\ No newline at end of file
angular.module("myApp").factory('News', function ($resource) { angular.module("myApp").factory('News', function ($resource) {
return $resource('http://localhost:8080/api/news/:id', {id: '@myNewsId'},{ return $resource('http://localhost:8081/api/news/:id', {id: '@myNewsId'},{
'get': { 'get': {
method: 'GET', method: 'GET',
isArray: false isArray: false
...@@ -9,11 +9,11 @@ angular.module("myApp").factory('News', function ($resource) { ...@@ -9,11 +9,11 @@ angular.module("myApp").factory('News', function ($resource) {
}); });
angular.module('myApp').factory('Catagories', function ($resource) { angular.module('myApp').factory('Catagories', function ($resource) {
return $resource('http://localhost:8080/api/catalogies/:id', {id: '@myCatagoriesId'}); return $resource('http://localhost:8081/api/catalogies/:id', {id: '@myCatagoriesId'});
}); });
angular.module('myApp').factory('LatestNews', function ($resource) { angular.module('myApp').factory('LatestNews', function ($resource) {
return $resource('http://localhost:8080/api/catalogi/:id/latestNews', {id: '@CatagoriesId'},{ return $resource('http://localhost:8081/api/catalogi/:id/latestNews', {id: '@CatagoriesId'},{
'get': { 'get': {
method: 'GET', method: 'GET',
isArray: true isArray: true
...@@ -22,7 +22,7 @@ angular.module('myApp').factory('LatestNews', function ($resource) { ...@@ -22,7 +22,7 @@ angular.module('myApp').factory('LatestNews', function ($resource) {
}); });
angular.module('myApp').factory('NewsByCatagori', function ($resource) { angular.module('myApp').factory('NewsByCatagori', function ($resource) {
return $resource('http://localhost:8080/api/catalogi/:id/news', {id: '@catagoriesId'},{ return $resource('http://localhost:8081/api/catalogi/:id/news', {id: '@catagoriesId'},{
'get': { 'get': {
method: 'GET', method: 'GET',
isArray: true isArray: true
......
This diff is collapsed.
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<div> <div>
<tr> <tr>
<!-- <input type="submit" name="submit" value="Duyệt" ui-sref="leaveForm" ng-click="updateStatus(leaveFormDetail.id)"/>--> <!-- <input type="submit" name="submit" value="Duyệt" ui-sref="leaveForm" ng-click="updateStatus(leaveFormDetail.id)"/>-->
<input type="submit" name="submit" value="Quay lại" ui-sref="leaveForm"/> <input type="submit" name="submit" value="Quay lại" ui-sref="leaveform"/>
</tr> </tr>
</div> </div>
<br><br> <br><br>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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