Commit 1e2beb60 authored by Phạm Duy Phi's avatar Phạm Duy Phi

Merge branch 'dinhdam' of https://git.myitsol.com/hieunv/qlns_n01

# 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/access/homepage/repository/CatalogiRepository.java
#	src/main/java/com/itsol/quantrivanphong/access/homepage/repository/NewsRepository.java
#	src/main/java/com/itsol/quantrivanphong/access/login/dto/EmployeeDTO.java
#	src/main/java/com/itsol/quantrivanphong/access/register/bussiness/EmailBussiness.java
#	src/main/java/com/itsol/quantrivanphong/access/register/controller/RegisterController.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/project/dto/ProjectDTO.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/project/repository/ProjectRepository.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/ProjectGroupUtils.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/projectgroup/controller/ProjectGroupController.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/projectgroup/dto/ProjectGroupDTO.java
#	src/main/java/com/itsol/quantrivanphong/manager/project/projectgroup/repository/ProjectGroupRepository.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/Issues.java
#	src/main/java/com/itsol/quantrivanphong/model/LeaveType.java
#	src/main/java/com/itsol/quantrivanphong/model/News.java
#	src/main/java/com/itsol/quantrivanphong/model/Project.java
#	src/main/java/com/itsol/quantrivanphong/report/issue/repository/IssueRepository.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/leaveform/dto/LeaveFormDTO.java
#	src/main/java/com/itsol/quantrivanphong/report/leaveform/repository/LeaveFormRepository.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/dto/TimeSheetDTO.java
#	src/main/java/com/itsol/quantrivanphong/report/timesheet/repository/EProjectRepository.java
#	src/main/java/com/itsol/quantrivanphong/report/timesheet/repository/TimeSheetRepository.java
#	src/main/resources/public/css/style.css
#	src/main/resources/public/index.html
#	src/main/resources/public/js/app.js
#	src/main/resources/public/layout/layout1.html
#	src/main/resources/public/layout/layout2.html
#	src/main/resources/public/pages/employee/createEmployee.html
#	src/main/resources/public/pages/homepage/HomeService.js
#	src/main/resources/public/pages/homepage/newsManagements.html
#	src/main/resources/public/pages/issue/IssueAdd.html
#	src/main/resources/public/pages/issue/IssueController.js
#	src/main/resources/public/pages/issue/IssueDetailViews.html
#	src/main/resources/public/pages/issue/IssueView.html
#	src/main/resources/public/pages/issue/IssuesDetailController.js
#	src/main/resources/public/pages/leaveform/leaveForm.html
#	src/main/resources/public/pages/leaveform/leaveFormController.js
#	src/main/resources/public/pages/leaveform/leaveFormDetail.html
#	src/main/resources/public/pages/leaveform/leaveFormDetailController.js
#	src/main/resources/public/pages/project/groupproject/groupProjectAddView.html
#	src/main/resources/public/pages/project/groupproject/groupProjectEditView.html
#	src/main/resources/public/pages/project/groupproject/groupProjectView.html
#	src/main/resources/public/pages/project/groupproject/groupProjectViewController.js
#	src/main/resources/public/pages/project/project/projectAddViews.html
#	src/main/resources/public/pages/project/project/projectController.js
#	src/main/resources/public/pages/project/project/projectEditViews.html
#	src/main/resources/public/pages/project/project/projectListViews.html
#	src/main/resources/public/pages/project/project/projectViewController.js
#	src/main/resources/public/pages/report/reportController.js
#	src/main/resources/public/pages/timesheet/timeSheetController.js
#	src/main/resources/public/pages/timesheet/timeSheetDetail.html
#	src/main/resources/public/pages/timesheet/timeSheetDetailController.js
#	src/main/resources/public/pages/timesheet/timesheet.html
parents cca03edb a54be6c7
package com.itsol.quantrivanphong.access.homepage.business;
import com.itsol.quantrivanphong.access.homepage.repository.CatalogiRepository;
import com.itsol.quantrivanphong.exception.ResourceNotFoundException;
import com.itsol.quantrivanphong.model.Catalogi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CatalogiBusiness {
@Autowired
private CatalogiRepository catalogiRepository;
public Catalogi findCatalogiById(int id){
return catalogiRepository.findCatalogiById(id);
}
public List<Catalogi> findAllCatalogi(){
return catalogiRepository.findAllCatalogi();
}
public Catalogi save(Catalogi 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";
}
}
package com.itsol.quantrivanphong.access.homepage.business;
import com.itsol.quantrivanphong.access.homepage.repository.NewsRepository;
import com.itsol.quantrivanphong.exception.ResourceNotFoundException;
import com.itsol.quantrivanphong.model.News;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class NewsBusiness {
@Autowired
private NewsRepository newsRepository;
public List<News> findAllNews(){
return newsRepository.findAllNews();
}
// Find News By News Id
public News findNewsById(int newsId){
return newsRepository.findNewsById(newsId);
}
//Find news By Employee Id
public List<News> findByEmployeeId(int employeeId){
return newsRepository.findByEmployeeId(employeeId);
}
// FInd 4 latest news by câtlogiId
public List<News> findLatestNews(int catalogiId){
return newsRepository.getLatestNews(catalogiId);
}
// Find 4 latest news
public List<News> findAllLatestNews(){
return newsRepository.getAllLatestNews();
}
// Find news By Catalogi
public List<News> findByCatalogiId(int catalogiId){
return newsRepository.findByCatalogiId(catalogiId);
}
public News findNewsByIdAndEmployeeId(int id, int employeeId){
return newsRepository.findByIdAndEmployeeId(id,employeeId);
}
public News findNewsByIdAndAndCatalogiId(int id, int catalogiId){
return newsRepository.findByIdAndAndCatalogiId(id,catalogiId);
}
public News save(News news){
return newsRepository.save(news);
}
public News updateNews(int newsId, News newsDetails){
News news = newsRepository.findNewsById(newsId);
news.setTitle(newsDetails.getTitle());
news.setContent(newsDetails.getContent());
news.setSummary(newsDetails.getSummary());
news.setThumbnail(newsDetails.getThumbnail());
News updateNews = newsRepository.save(news);
return updateNews;
}
//
public String deleteNews(int newsId){
News news = newsRepository.findNewsById(newsId);
if(news == null){
throw new ResourceNotFoundException("News" ,"newsId",newsId);
}
newsRepository.delete(news);
return "ok";
}
}
package com.itsol.quantrivanphong.access.homepage.controller;
import com.itsol.quantrivanphong.access.homepage.business.CatalogiBusiness;
import com.itsol.quantrivanphong.exception.ResourceNotFoundException;
import com.itsol.quantrivanphong.model.Catalogi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/api")
public class CatalogiController {
@Autowired
private CatalogiBusiness catalogiBusiness;
@GetMapping("/catalogies")
public ResponseEntity<List<Catalogi>> getAllNews(){
return ResponseEntity.ok( catalogiBusiness.findAllCatalogi());
}
@GetMapping("/catalogies/{catalogiId}")
public Catalogi getCatalogiById(@PathVariable(value = "catalogiId") int catalogiId){
Catalogi catalogi = catalogiBusiness.findCatalogiById(catalogiId);
if(catalogi == null) {
throw new ResourceNotFoundException("Catalogi", "catalogiId", catalogiId);
}
return catalogi;
}
@PostMapping("HR/catalogi")
public Catalogi createCatalogi(@Valid@RequestBody Catalogi 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));
}
}
package com.itsol.quantrivanphong.access.homepage.controller;
import com.itsol.quantrivanphong.access.homepage.business.CatalogiBusiness;
import com.itsol.quantrivanphong.access.homepage.business.NewsBusiness;
import com.itsol.quantrivanphong.exception.ResourceNotFoundException;
import com.itsol.quantrivanphong.manager.employee.business.EmployeeBusiness;
import com.itsol.quantrivanphong.model.Catalogi;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.News;
import com.itsol.quantrivanphong.report.leaveform.controller.Notification;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/api")
public class NewsController {
@Autowired
private NewsBusiness newsBusiness;
@Autowired
private CatalogiBusiness catalogiBusiness;
@Autowired
private EmployeeBusiness employeeBusiness;
// get All news
@GetMapping("/news")
public ResponseEntity<List<News>> getAllNews(){
return ResponseEntity.ok(newsBusiness.findAllNews());
}
@GetMapping("/news/{newsId}")
public News getNewsById(@PathVariable(value = "newsId") int newsId){
return newsBusiness.findNewsById(newsId);
}
// get news by employeeId
@GetMapping("/employees/{employeeId}/news")
public List<News> getAllNewsByEmployeeId(@PathVariable(value = "employeeId") int employeeId) {
return newsBusiness.findByEmployeeId(employeeId);
}
// get News by catalogiId
@GetMapping("/catalogi/{catalogiId}/news")
public List<News> getAllNewsByCatalogiId(@PathVariable(value="catalogiId") int 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
@GetMapping("/catalogi/{catalogiId}/latestNews")
public List<News> getLatestNews(@PathVariable(value="catalogiId") int catalogiId){
return newsBusiness.findLatestNews(catalogiId);
}
//get Latest news
@GetMapping("/catalogi/latestNews")
public List<News> getAllLatestNews(){
return newsBusiness.findAllLatestNews();
}
@GetMapping("/employees/{employeeId}/news/{newsId}")
public News getAllNewsByEmployeeId(@PathVariable(value = "employeeId") int employeeId,
@PathVariable (value = "newsId") int newsId) {
return newsBusiness.findNewsByIdAndEmployeeId(newsId,employeeId);
}
// create news by employeesId, categoriId
@PostMapping("/HR/{employeeId}/catalogies/{catalogiId}/news")
public ResponseEntity createNews(@PathVariable (value = "employeeId") int employeeId,
@PathVariable (value = "catalogiId") int catalogiId,
@Valid @RequestBody News news) {
Employee employee = employeeBusiness.findById(employeeId);
Catalogi catalogi = catalogiBusiness.findCatalogiById(catalogiId);
if(employee == null){
throw new ResourceNotFoundException("Employee" ,"employeeId",employeeId);
}
if(catalogi==null){
throw new ResourceNotFoundException("Catalogi" ,"catalogiId",catalogiId);
}
news.setEmployee(employee);
news.setCatalogi(catalogi);
newsBusiness.save(news);
return ResponseEntity.ok(new Notification(200, "Success"));
}
// Edit news by EmployeeId
@PutMapping("HR/news/{newsId}")
public News updateNews(@PathVariable (value = "newsId") int newsId,
@Valid @RequestBody News newsRequest) {
if (newsBusiness.findNewsById(newsId)== null) {
throw new ResourceNotFoundException("News", "id", newsId);
}
return newsBusiness.updateNews(newsId,newsRequest);
}
//delete news by employeeId and newsId
@DeleteMapping("HR/news/{newsId}")
public ResponseEntity<?> deleteNews(@PathVariable (value = "newsId") int newsId) {
if(newsBusiness.findNewsById(newsId)== null){
throw new ResourceNotFoundException("News","newsId",newsId);
}
return ResponseEntity.ok(newsBusiness.deleteNews(newsId));
}
}
package com.itsol.quantrivanphong.access.homepage.repository;
import com.itsol.quantrivanphong.model.Catalogi;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CatalogiRepository extends JpaRepository<Catalogi, Integer> {
@Query("SELECT u from Catalogi u")
List<Catalogi> findAllCatalogi();
@Query("SELECT u FROM Catalogi u where u.id=:id")
Catalogi findCatalogiById(int id);
}
package com.itsol.quantrivanphong.access.homepage.repository;
import com.itsol.quantrivanphong.model.News;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface NewsRepository extends JpaRepository<News, Integer> {
@Query("SELECT u from News u")
List<News> findAllNews();
@Query("SELECT u FROM News u where u.id=:id")
News findNewsById(int id);
@Query(value="select * from News c where c.catalogi_id = ? ORDER BY c.created_at DESC limit 4",nativeQuery = true)
List<News> getLatestNews(int catalogiId);
@Query(value="select * from News c ORDER BY c.created_at DESC limit 4",nativeQuery = true)
List<News> getAllLatestNews();
List<News> findByEmployeeId(int employeeId);
List<News> findByCatalogiId(int catalogiId);
News findByIdAndEmployeeId(int id,int employeeId);
News findByIdAndAndCatalogiId(int id,int catalogiId);
}
package com.itsol.quantrivanphong.access.login.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EmployeeDTO {
private Integer id;
// tên đăng nhập
private String username;
// mật khẩu truy cập
private String password;
// ảnh đại diện
private String picture;
// họ
private String firstName;
// tên
private String lastName;
// email
private String email;
// số điện thoại
private String phoneNumber;
// tài khoản skype
private String skype;
// tài khoản facebook
private String facebookProfile;
// đối tượng
private String position;
// quê quán
private String homeTown;
// học vấn
private String education;
// trường
private String school;
// khoa
private String department;
// năm tốt nghiệp
private String graduationYear;
// kiểm tra tài khoản
private boolean checked;
// trạng thái kích hoạt
private int status;
}
package com.itsol.quantrivanphong.access.register.bussiness;
import com.itsol.quantrivanphong.access.register.dto.EmailDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
@Component
public class EmailBussiness {
@Autowired
private JavaMailSender sender;
public boolean sendEmail(EmailDTO emailDTO) {
boolean check;
// Recipient's email ID needs to be mentioned.
String to = emailDTO.getRecipientEmail();
// Sender's email ID needs to be mentioned
String from = "hieunv2496@gmail.com";
final String username = "hieunv2496@gmail.com";//change accordingly
final String password = "anhieu1996";//change accordingly
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
// Get the Session object.
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// Create license default MimeMessage object.
Message message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
// Set Subject: header field
message.setSubject(emailDTO.getSubject());
// Send the actual HTML message, as big as you like
message.setContent(
emailDTO.getMessage(),
"text/html");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return true;
}
}
package com.itsol.quantrivanphong.access.register.controller;
import com.itsol.quantrivanphong.access.register.bussiness.RegisterBussiness;
import com.itsol.quantrivanphong.access.register.dto.RegisterDTO;
import com.itsol.quantrivanphong.exception.InputException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.InputMismatchException;
@RestController
@RequestMapping(path = "/user")
public class RegisterController {
@Autowired
private RegisterBussiness registerBussiness;
@PostMapping(path = "/register", consumes = "application/json", produces = "application/json")
public String register(@RequestBody RegisterDTO registerDTO) {
String mess ;
try {
if(registerDTO.getUsername().trim().equals("")) throw new InputException("Username is not null");
if(registerDTO.getUsername().length()< 5 || registerDTO.getUsername().length() > 18) throw new InputException("Username in 5 - 18 characters");
if(registerDTO.getLastName().equals("")) throw new InputException("Last name is not null");
if(registerDTO.getEmailAddress().equals("")) throw new InputException("Email address is not null");
if(registerDTO.getGraduationYear() < 0) throw new InputException("lỗi năm < 0") ;
mess = registerBussiness.register(registerDTO);
}catch (InputException e){
mess = e.getMessage();
}catch (InputMismatchException e){
mess = e.getMessage();
}catch (Exception e){
mess = e.getMessage();
}
return mess;
}
}
package com.itsol.quantrivanphong.manager.project.project.bussiness;
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;
public interface ProjectBussiness {
// Danh sách dự án tất cả các dự án
List<ProjectDTO> findAllProject();
// upload thông tin dự án
WrapperResult updateProject(ProjectDTO dto);
// thêm dự án mới
WrapperResult saveProject(ProjectDTO dto);
// tìm kiếm dự án theo id
ProjectDTO findByProjectId(Integer id);
// xóa một project
WrapperResult deleteProjectById(Integer ids);
AbstractDaoPage<ProjectDTO> getPageProject(int page, int pageSize);
}
package com.itsol.quantrivanphong.manager.project.project.bussiness;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
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.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 java.util.ArrayList;
import java.util.List;
@Service
public class ProjectBussinessImpl implements ProjectBussiness {
private Logger logger = Logger.getLogger(ProjectBussinessImpl.class);
@Autowired
private ProjectRepository projectRepository;
@Override
public List<ProjectDTO> findAllProject() {
try {
return lstDTO(projectRepository.findAll());
} catch (Exception e) {
logger.info("Lỗi findAll " + e.getMessage());
}
return null;
}
@Override
public WrapperResult updateProject(ProjectDTO dto) {
String views = null;
int status = 113;
try {
ProjectDTO projectDTO = findByProjectId(dto.getId());
dto.setStartDate(projectDTO.getStartDate());
dto.setEndDate(projectDTO.getEndDate());
if (dto.getStartDate() == null) {
views = "ngày bắt đầu dự án không được null";
} else if (dto.getEndDate() == null) {
views = "ngày dự kiếm kết thúc dự án không được null";
} else if (projectDTO != null) {
ProjectDTO updateProject = modelparseDto(projectRepository.save(dtoParseModels(dto)));
if (updateProject != null) {
views = "sửa thành công project";
status = 200;
}
} else {
views = "không tìm thấy project phù hợp";
}
} catch (Exception e) {
logger.info("Lỗi update" + e.getMessage());
views = "lỗi update project";
}
return new WrapperResult(status, views);
}
@Override
public WrapperResult saveProject(ProjectDTO dto) {
String views = null;
int status = 113;
if (projectRepository.findByName(dto.getName()) == null) {
try {
if (dto.getStartDate() == null) {
views = "ngày bắt đầu dự án không được null";
} else if (dto.getEndDate() == null) {
views = "ngày dự kiếm kết thúc dự án không được null";
} 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";
}
} else {
views = "Đã tồn tại Dự Án";
}
return new WrapperResult(status, views);
}
@Override
public ProjectDTO findByProjectId(Integer id) {
try {
ProjectDTO projectDTO = modelparseDto(projectRepository.findProjectById(id));
if (projectDTO != null) {
return projectDTO;
}
} catch (Exception e) {
logger.info("( Lỗi tìm kiếm ) " + e.getMessage());
}
return null;
}
@Override
public WrapperResult deleteProjectById(Integer id) {
String views = null;
int status = 113;
logger.info("deleteProjectById");
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 {
views = "dự án không tồn tại không tồn tại";
}
return new WrapperResult(status, views);
}
@Override
public AbstractDaoPage<ProjectDTO> getPageProject(int page, int pageSize) {
AbstractDaoPage<ProjectDTO> abstractDaoPage = new AbstractDaoPage<ProjectDTO>();
List<Project> lstM = getListPage(page,pageSize);
List<ProjectDTO> listDTO = lstDTO(lstM);
abstractDaoPage.setLstResult(listDTO);
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 {
return new ArrayList<Project>();
}
}
public List<ProjectDTO> lstDTO(List<Project> lstModels) {
List<ProjectDTO> lstDTO = new ArrayList<>();
for (Project project : lstModels) {
lstDTO.add(modelparseDto(project));
}
return lstDTO;
}
public ProjectDTO modelparseDto(Project model) {
ProjectDTO dto = new ProjectDTO();
dto.setId(model.getId());
dto.setName(model.getName());
dto.setDescriptions(model.getDescriptions());
dto.setStartDate(model.getStartDate());
dto.setEndDate(model.getEndDate());
dto.setStatus(model.getStatus());
return dto;
}
public Project dtoParseModels(ProjectDTO projectDTO) {
Project project = new Project();
project.setId(projectDTO.getId());
project.setName(projectDTO.getName());
project.setDescriptions(projectDTO.getDescriptions());
project.setStartDate(projectDTO.getStartDate());
project.setEndDate(projectDTO.getEndDate());
project.setStatus(projectDTO.getStatus());
return project;
}
}
package com.itsol.quantrivanphong.manager.project.project.controller;
import com.itsol.quantrivanphong.manager.project.project.bussiness.ProjectBussiness;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/quan-tri")
public class ProjectController {
@Autowired
private ProjectBussiness projectBussiness;
@GetMapping(value = "/danh-sach-du-an")
public ResponseEntity<List<ProjectDTO>> getAllProject(){
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)
public ResponseEntity findProjectId(@PathVariable Integer id){
ProjectDTO projectDTO = projectBussiness.findByProjectId(id);
return ResponseEntity.ok(projectDTO);
}
@PostMapping(value = "/them-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity saveProject(@RequestBody ProjectDTO projectDTO){
WrapperResult wrapperResult = projectBussiness.saveProject(projectDTO);
return ResponseEntity.ok(wrapperResult);
}
@PutMapping(value = "/sua-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity updateProject(@RequestBody ProjectDTO projectDTO){
WrapperResult wrapperResult = projectBussiness.updateProject(projectDTO);
return ResponseEntity.ok(wrapperResult);
}
@DeleteMapping(value = "/xoa-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity deleteProjectById(@RequestBody ProjectDTO projectDTO){
WrapperResult wrapperResult = projectBussiness.deleteProjectById(projectDTO.getId());
return ResponseEntity.ok(wrapperResult);
}
}
package com.itsol.quantrivanphong.manager.project.project.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProjectDTO {
private Integer id;
// tên project
private String name;
//mô tả ngắn
private String descriptions;
//ngày bắt đầu của dự án
private Timestamp startDate;
//ngày kết thúc dự án
private Timestamp endDate;
//trạng thái thêm vào dataBase
private Integer status;
// danh sách id
private Integer[] ids;
}
package com.itsol.quantrivanphong.manager.project.project.repository;
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);
}
package com.itsol.quantrivanphong.manager.project.projectgroup.bussiness;
import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO;
import com.itsol.quantrivanphong.report.issue.common.WrapperResult;
import java.util.List;
public interface ProjectGroupBussiness {
// chi tiết nhóm dự án
List<ProjectGroupDTO> getGroupByProjectId(Integer projectId);
// thêm thành viên vào nhóm dự án
WrapperResult saveEmployeeProject(ProjectGroupDTO dto);
// sửa thông tin nhóm dự án, các thành viên out nhóm
WrapperResult updateEmployeeProject(ProjectGroupDTO dto);
// thành viên out dự án
WrapperResult deleteEmployeeProject(Integer id);
WrapperResult updateEmployeeOutGroup(ProjectGroupDTO dto);
ProjectGroupDTO findEmployeeProjectById(Integer id);
}
package com.itsol.quantrivanphong.manager.project.projectgroup.bussiness;
import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository;
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.dto.ProjectGroupDTO;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.List;
@Service
public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
private Logger logger = Logger.getLogger(ProjectGroupBussinessImpl.class);
@Autowired
private ProjectGroupRepository projectGroupRepository;
@Autowired
private ProjectRepository projectRepository;
@Autowired
private ProjectGroupUtils utils;
@Autowired
private EmployeeProject employeeProject;
@Override
public List<ProjectGroupDTO> getGroupByProjectId(Integer projectId) {
logger.info("getGroupByProjectId");
List<Eproject> lstModels = projectGroupRepository.findByProjectId(projectId);
List<ProjectGroupDTO> lstDTO = utils.getListDTO(lstModels);
return lstDTO;
}
public boolean checkEmployeeInGroupProject(ProjectGroupDTO dto) {
if (dto.getProjectId()!=null) {
List<Eproject> lst = projectGroupRepository.findByProjectId(dto.getProjectId());
for (Eproject eproject : lst) {
if (eproject.getEmployee().getUsername().equals(dto.getUserName())) {
return true;
}
}
}
return false;
}
@Override
public WrapperResult saveEmployeeProject(ProjectGroupDTO dto) {
String views = "";
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 {
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";
status = 200;
} else {
views = "thêm không thành công!";
}
} catch (Exception e) {
logger.info("Lỗi " + e.getMessage());
}
} else {
status = 113;
views = "thành viên đã tồn tại";
}
return new WrapperResult(status, views);
}
@Override
public WrapperResult updateEmployeeProject(ProjectGroupDTO dto) {
String views = "";
int status = 113;
logger.info("updateEmployeeProject");
Eproject eproject = projectGroupRepository.findEprojectById(dto.getId());
if (eproject != null) {
eproject.setPosition(dto.getPosition());
Eproject updateProjectGroup = projectGroupRepository.save(eproject);
if (updateProjectGroup != null) {
views = "cập nhật chức vụ thành viên thành công";
status = 200;
}
} else {
views = "đối tượng không tồn tại";
}
return new WrapperResult(status, views);
}
@Override
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;
}
@Override
public WrapperResult deleteEmployeeProject(Integer id) {
String views = "";
int status = 113;
logger.info("deleteEmployeeProject");
if (projectGroupRepository.findEprojectById(id) != null) {
projectGroupRepository.deleteById(id);
views = "Bạn đã cho thoát ra khỏi nhóm";
status = 200;
} else {
views = "Thành viên không tồn tại trong nhóm";
}
return new WrapperResult(status, views);
}
@Override
public WrapperResult updateEmployeeOutGroup(ProjectGroupDTO dto) {
String views = "";
int status = 113;
logger.info("updateEmployeeOutGroup");
Eproject eproject = projectGroupRepository.findEprojectById(dto.getId());
if (eproject != null) {
eproject.setStatus(2);
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 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.access.login.dto.EmployeeDTO;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import com.itsol.quantrivanphong.manager.project.project.repository.ProjectRepository;
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.Project;
import org.apache.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class ProjectGroupUtils {
private static Logger logger = Logger.getLogger(ProjectGroupUtils.class);
@Autowired
private EmployeeProject employeeRepository;
@Autowired
private ProjectRepository projectRepository;
public Eproject Model(ProjectGroupDTO dto){
Eproject model = new Eproject();
model.setId(dto.getId());
model.setJoinDate(dto.getJoinDate());
model.setOutDate(dto.getOutDate());
model.setPosition(dto.getPosition());
model.setStatus(dto.getStatus());
try{
Employee findEmployee = employeeRepository.findEmployeeById(dto.getUserId());
if(findEmployee!=null){
model.setEmployee(findEmployee);
}
}catch (Exception e){
logger.info("(Lỗi không tìm thấy Employee) "+e.getMessage());
}
try{
Project project = projectRepository.findProjectById(dto.getProjectId());
if(project!=null){
model.setProject(project);
}
}catch (Exception e){
logger.info("(Lỗi không tìm thấy Project) "+e.getMessage());
}
return model;
}
public ProjectGroupDTO DTO(Eproject models) {
ProjectGroupDTO dto = new ProjectGroupDTO();
dto.setId(models.getId());
// set project
ProjectDTO projectDTO = new ProjectDTO();
BeanUtils.copyProperties(models.getProject(),projectDTO);
dto.setProjectDTO(projectDTO);
// set employee
EmployeeDTO employeeDTO = new EmployeeDTO();
employeeDTO.setId(models.getEmployee().getId());
employeeDTO.setUsername(models.getEmployee().getUsername());
employeeDTO.setLastName(models.getEmployee().getLastName());
employeeDTO.setEmail(models.getEmployee().getEmailAddress());
employeeDTO.setFacebookProfile(models.getEmployee().getFacebookProfile());
employeeDTO.setSkype(models.getEmployee().getSkype());
dto.setEmployeeDTO(employeeDTO);
dto.setJoinDate(models.getJoinDate());
dto.setOutDate(models.getOutDate());
dto.setPosition(models.getPosition());
return dto;
}
public List<ProjectGroupDTO> getListDTO(List<Eproject> lstModel){
if(!lstModel.isEmpty()||lstModel.size()!=0){
List<ProjectGroupDTO> lstDTO = new ArrayList<ProjectGroupDTO>();
for (Eproject eproject:lstModel) {
lstDTO.add(DTO(eproject));
}
return lstDTO;
}
return null;
}
}
package com.itsol.quantrivanphong.manager.project.projectgroup.controller;
import com.itsol.quantrivanphong.manager.project.projectgroup.bussiness.ProjectGroupBussiness;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
public class ProjectGroupController {
@Autowired
private ProjectGroupBussiness projectGroupBussiness;
// thông tin của 1 nhóm dư án theo id của dự án
// Team lead,Hr
@GetMapping(value = "/thong-tin-du-an/{id}")
public ResponseEntity getOneProjectGroup(@PathVariable("id") Integer 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
// hr,manager, teamlead thêm thành viên
@PostMapping(value = "/them-thanh-vien")
public ResponseEntity addMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO) {
WrapperResult wrapperResult = projectGroupBussiness.saveEmployeeProject(projectGroupDTO);
return ResponseEntity.ok(wrapperResult);
}
// 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
@PutMapping(value = "/cap-nhat-chuc-vu-thanh-vien")
public ResponseEntity updatePositionProject(@RequestBody ProjectGroupDTO projectGroupDTO) {
WrapperResult wrapperResult = projectGroupBussiness.updateEmployeeProject(projectGroupDTO);
return ResponseEntity.ok(wrapperResult);
}
@PutMapping(value = "/thanh-vien-out-nhom")
public ResponseEntity updateMemberOutProject(@RequestBody ProjectGroupDTO projectGroupDTO) {
WrapperResult wrapperResult = projectGroupBussiness.updateEmployeeOutGroup(projectGroupDTO);
return ResponseEntity.ok(wrapperResult);
}
@DeleteMapping(value = "/xoa-thanh-vien-du-an")
public ResponseEntity deleteMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO){
WrapperResult wrapperResult = projectGroupBussiness.deleteEmployeeProject(projectGroupDTO.getId());
return ResponseEntity.ok(wrapperResult);
}
}
package com.itsol.quantrivanphong.manager.project.projectgroup.dto;
import com.itsol.quantrivanphong.access.login.dto.EmployeeDTO;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProjectGroupDTO {
private int id;
// chức vụ trong project
private String position;
//ngày vào dự án
private Timestamp joinDate;
// ngày ra dự án
private Timestamp outDate;
private int status;
private Integer userId;
private Integer projectId;
private String userName;
private String nameProject;
private EmployeeDTO employeeDTO;
private ProjectDTO projectDTO;
}
package com.itsol.quantrivanphong.manager.project.projectgroup.repository;
import com.itsol.quantrivanphong.model.Eproject;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ProjectGroupRepository extends JpaRepository<Eproject,Integer> {
List<Eproject> findByProjectId(Integer projectId);
Eproject findEprojectById(Integer eProjectId);
}
package com.itsol.quantrivanphong.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "catalogi")
public class Catalogi {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private int id;
@Column(name = "name", length = 128)
private String name;
@Column(name = "descriptions")
private String descriptions;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "catalogi")
private List<News> news = new ArrayList<>();
}
package com.itsol.quantrivanphong.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "eproject")
public class Eproject {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private int id;
// chức vụ trong project
@Column(name = "position", nullable = false)
private String position;
//ngày vào dự án
@Column(name = "join_date",nullable =false)
private Timestamp joinDate;
// ngày ra dự án
@Column(name = "out_date",nullable = true)
private Timestamp outDate;
@Column(name = "status",nullable = false)
private int status;
@ManyToOne(fetch = FetchType.EAGER)
private Employee employee;
@ManyToOne(fetch = FetchType.EAGER)
private Project project;
@JsonIgnore
@OneToMany(mappedBy = "eproject", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<TimeSheet> timeSheetList = new ArrayList<>();
}
package com.itsol.quantrivanphong.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "issues")
public class Issues {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private Integer id;
// tiêu đề liên quan
@Column(name = "title")
private String title;
//nội dung
@Column(name = "content")
private String actionCode;
// trạng thái vấn đề đó trong project
@Column(name = "status")
private int status;
@Column(name = "startdate")
private Timestamp startDate;
@ManyToOne(fetch = FetchType.EAGER)
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;
}
package com.itsol.quantrivanphong.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "leave_type")
@Builder
public class LeaveType {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private int id;
@Column(name = "name")
private String name;
@Column(name = "descriptions")
private String descriptions;
@Column(name = "status")
private boolean status;
@JsonIgnore
@OneToMany(mappedBy = "leaveType", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<LeaveForm> leaveFormList = new ArrayList<>();
}
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.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, allowGetters = true)
@Table(name = "news")
public class News extends DateAudit {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private int id;
@Column(name = "thumbnail", length = 128)
private String thumbnail;
@Column(name = "title")
private String title;
@Column(name = "summary")
private String summary;
@Column(name = "content")
private String content;
@Column(name = "status")
private boolean status;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "catalogi_id", nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private Catalogi catalogi;
@ManyToOne(fetch = FetchType.EAGER)
private Employee employee;
}
package com.itsol.quantrivanphong.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "project")
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private Integer id;
// tên project
@Column(name = "name", nullable = false)
private String name;
//mô tả ngắn
@Column(name = "descriptions")
private String descriptions;
//ngày bắt đầu của dự án
@Column(name = "start_date", nullable = false)
private Timestamp startDate;
//ngày kết thúc dự án
@Column(name = "end_date")
private Timestamp endDate;
//trạng thái
@Column(name = "status",nullable = false)
private Integer status;
@JsonIgnore
@OneToMany(mappedBy = "project", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Eproject> eprojectList = new ArrayList<>();
@JsonIgnore
@OneToMany(mappedBy = "project", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<ProjectReport> projectReportList = new ArrayList<>();
@JsonIgnore
@OneToMany(mappedBy = "project", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Issues> issuesList = new ArrayList<>();
}
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;
public 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.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;
import com.itsol.quantrivanphong.model.Issues;
import org.springframework.data.jpa.repository.JpaRepository;
public interface IssueRepository extends JpaRepository<Issues, Integer> {
Issues findIssuesById(Integer id);
}
package com.itsol.quantrivanphong.report.leaveform.business;
import com.itsol.quantrivanphong.manager.employee.repository.EmployeeRepository;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.LeaveForm;
import com.itsol.quantrivanphong.model.LeaveType;
import com.itsol.quantrivanphong.report.leaveform.dto.LeaveFormDTO;
import com.itsol.quantrivanphong.report.leaveform.repository.LeaveFormRepository;
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 LeaveFormBusiness {
@Autowired
LeaveFormRepository leaveFormRepository;
@Autowired
LeaveTypeRepository leaveTypeRepository;
@Autowired
EmployeeRepository employeeRepository;
public List<LeaveForm> findAll() {
return leaveFormRepository.findAll();
}
public String addLeaveForm(LeaveFormDTO leaveFormDTO) {
String message;
Employee employee = employeeRepository.findEmployeeById(leaveFormDTO.getEmployeeId());
LeaveType leaveType = leaveTypeRepository.findLeaveTypeById(leaveFormDTO.getLeaveTypeId());
if (employee != null) {
if (leaveType != null) {
LeaveForm leaveForm = leaveFormRepository.save(LeaveForm.builder()
.title(leaveFormDTO.getTitle())
.content(leaveFormDTO.getContent())
.status(false)
.employee(employee)
.leaveType(leaveType).build());
if (leaveForm != null) {
message = "Insert leave form success";
} else {
message = "Insert leave form failed";
}
} else {
message = "Leave Type does not exist";
}
} else {
message = "Employee does not exist";
}
return message;
}
@Transactional
public String deleteLeaveForm(int leaveFormId) {
String message;
LeaveForm leaveForm = leaveFormRepository.findLeaveFormById(leaveFormId);
if (leaveForm != null) {
leaveFormRepository.delete(leaveForm);
if (leaveFormRepository.findLeaveFormById(leaveFormId) != null) {
message = "Delete failed!";
} else {
message = "Delete success!";
}
} else {
message = "Leave Form does not exist";
}
return message;
}
@Transactional
public String updateLeaveForm(LeaveFormDTO leaveFormDTO) {
String message;
Employee employee = employeeRepository.findEmployeeById(leaveFormDTO.getEmployeeId());
LeaveType leaveType = leaveTypeRepository.findLeaveTypeById(leaveFormDTO.getLeaveTypeId());
LeaveForm leaveForm = leaveFormRepository.findLeaveFormByEmployeeAndLeaveTypeAndId(employee, leaveType, leaveFormDTO.getId());
if (leaveType != null) {
if (leaveForm != null) {
int i = leaveFormRepository.updateLeaveForm(leaveFormDTO.getTitle(), leaveFormDTO.getContent(), leaveFormDTO.getId());
if (i == 1) {
message = "Update success";
} else {
message = "Update failed";
}
} else {
message = "Leave Type does not exist";
}
} else {
message = "Leave Form does not exist";
}
return message;
}
@Transactional
public String updateLeaveFormStatus(int leaveformId) {
String message;
LeaveForm leaveForm = leaveFormRepository.findLeaveFormById(leaveformId);
if (leaveForm != null) {
if (leaveForm.isStatus()) {
message = "Status can not change";
} else {
int i = leaveFormRepository.updateLeaveFormStatus(leaveformId);
if (i == 1) {
message = "Update status success";
} else {
message = "Update status failed";
}
}
} else {
message = "Leave Form does not exist";
}
return message;
}
public List<LeaveForm> showLeaveFormByEmployeeId(int employeeId) {
Employee employee = employeeRepository.findEmployeeById(employeeId);
if (employee != null) {
if (leaveFormRepository.showLeaveFormById(employee) != null) {
return leaveFormRepository.showLeaveFormById(employee);
} else {
return null;
}
} else {
return null;
}
}
public LeaveForm showLeaveFormById(int id) {
return leaveFormRepository.findLeaveFormById(id);
}
public List<LeaveType> getLeaveTypeList() {
return leaveTypeRepository.findAll();
}
}
package com.itsol.quantrivanphong.report.leaveform.controller;
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.dto.LeaveFormDTO;
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 = "/employee")
public class LeaveFormController {
@Autowired
LeaveFormBusiness leaveFormBusiness;
@GetMapping(path = "/leaveform/show")
public ResponseEntity<List<LeaveForm>> showAllLeaveForm() {
return ResponseEntity.ok(leaveFormBusiness.findAll());
}
@PostMapping(path = "/leaveform/add", consumes = "application/json", produces = "application/json")
public ResponseEntity addLeaveForm(@RequestBody LeaveFormDTO leaveFormDTO) {
String message;
try {
if (leaveFormDTO.getTitle().trim().equals("")) throw new InputException("Tiêu đề không được để trống");
if (leaveFormDTO.getContent().trim().equals("")) throw new InputException("Nội dung không được để trống");
message = leaveFormBusiness.addLeaveForm(leaveFormDTO);
} catch (InputException e) {
message = e.getMessage();
}
return ResponseEntity.ok(new Notification(200, message));
}
@DeleteMapping("/leaveform/delete/{leaveformId}")
public ResponseEntity deleteLeaveForm(@PathVariable int leaveformId) {
return ResponseEntity.ok(new Notification(200, leaveFormBusiness.deleteLeaveForm(leaveformId)));
}
@PostMapping(path = "/leaveform/update", consumes = "application/json", produces = "application/json")
public ResponseEntity updateLeaveForm(@RequestBody LeaveFormDTO leaveFormDTO) {
String message;
try {
if (leaveFormDTO.getTitle().trim().equals("")) throw new InputException("Tiêu đề không được để trống");
if (leaveFormDTO.getContent().trim().equals("")) throw new InputException("Nội dung không được để trống");
message = leaveFormBusiness.updateLeaveForm(leaveFormDTO);
} catch (InputException e) {
message = e.getMessage();
}
return ResponseEntity.ok(new Notification(200, message));
}
@PostMapping(path = "/leaveform/{leaveformId}/status")
public ResponseEntity updateLeaveFormStatus(@PathVariable int leaveformId) {
String message;
message = leaveFormBusiness.updateLeaveFormStatus(leaveformId);
return ResponseEntity.ok(new Notification(200, message));
}
@GetMapping("/leaveform/show/{employeeId}")
public ResponseEntity<List<LeaveForm>> showLeaveFormByEmployeeId(@PathVariable int employeeId) {
if (leaveFormBusiness.showLeaveFormByEmployeeId(employeeId) != null) {
return ResponseEntity.ok(leaveFormBusiness.showLeaveFormByEmployeeId(employeeId));
} else {
return null;
}
}
@GetMapping("/leaveform/{id}")
public ResponseEntity<LeaveForm> showLeaveFormById(@PathVariable int 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.leaveform.controller;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Notification {
private int status;
private String view;
}
package com.itsol.quantrivanphong.report.leaveform.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LeaveFormDTO {
private int id;
private String title;
private String content;
private boolean status;
private int employeeId;
private int leaveTypeId;
}
package com.itsol.quantrivanphong.report.leaveform.repository;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.LeaveForm;
import com.itsol.quantrivanphong.model.LeaveType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface LeaveFormRepository extends JpaRepository<LeaveForm, Integer> {
// @Query("select lf from LeaveForm lf")
// List<LeaveForm> findAll();
LeaveForm findLeaveFormByEmployeeAndId(Employee employee, int id);
LeaveForm findLeaveFormById(int i);
LeaveForm findLeaveFormByEmployeeAndLeaveTypeAndId(Employee employee, LeaveType leaveType, int id);
@Modifying
@Query("update LeaveForm lf set lf.title = ?1, lf.content = ?2 where lf.id = ?3")
int updateLeaveForm(String title, String content, int id);
@Modifying
@Query("update LeaveForm lf set lf.status = true where lf.id = ?1")
int updateLeaveFormStatus(int id);
@Query("select lf from LeaveForm lf where lf.employee = ?1")
List<LeaveForm> showLeaveFormById(Employee employee);
}
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.leavetype.repository;
import com.itsol.quantrivanphong.model.LeaveType;
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> {
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);
}
package com.itsol.quantrivanphong.report.timesheet.business;
import com.itsol.quantrivanphong.manager.employee.repository.EmployeeRepository;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.model.TimeSheet;
import com.itsol.quantrivanphong.report.timesheet.dto.TimeSheetDTO;
import com.itsol.quantrivanphong.report.timesheet.repository.EProjectRepository;
import com.itsol.quantrivanphong.report.timesheet.repository.TimeSheetRepository;
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 TimeSheetBusiness {
@Autowired
TimeSheetRepository timeSheetRepository;
@Autowired
EProjectRepository eProjectRepository;
@Autowired
EmployeeRepository employeeRepository;
public String addTimeSheet(TimeSheetDTO timeSheetDTO) {
String message;
Employee employee = employeeRepository.findEmployeeById(timeSheetDTO.getEmployeeId());
Eproject eproject = eProjectRepository.findEprojectByIdAndEmployee(timeSheetDTO.getEprojectId(), employee);
if (eproject != null) {
// SimpleDateFormat formatter= new SimpleDateFormat("dd-MM-yyyy HH:mm");
// Date date = new Date(System.currentTimeMillis());
TimeSheet timeSheet1 = new TimeSheet();
timeSheet1.setTitle(timeSheetDTO.getTitle());
timeSheet1.setContent(timeSheetDTO.getContent());
timeSheet1.setNote(timeSheetDTO.getNote());
timeSheet1.setEproject(eproject);
timeSheet1.setChecked("unapproved");
timeSheet1.setStatus(true);
TimeSheet timeSheet = timeSheetRepository.save(timeSheet1);
if (timeSheet != null) {
message = "Insert Time Sheet success";
} else {
message = "Insert Time Sheet failed";
}
} else {
message = "Eproject does not exist";
}
return message;
}
public String deleteTimeSheet(int timeSheetId) {
String message;
// Employee employee = employeeRepository.findEmployeeById(employee_Id);
// Eproject eproject = eProjectRepository.findEprojectByEmployee(employee);
TimeSheet timeSheet = timeSheetRepository.findTimeSheetById(timeSheetId);
if (timeSheet != null) {
timeSheetRepository.delete(timeSheet);
if (timeSheetRepository.findTimeSheetById(timeSheetId) == null) {
message = "Delete success";
} else {
message = "Delete failed";
}
} else {
message = "Time Sheet does not exist";
}
return message;
}
public List<TimeSheet> findAll(){
return timeSheetRepository.findAll();
}
@Transactional
public String updateTimeSheet(TimeSheetDTO timeSheetDTO) {
String message;
Employee employee = employeeRepository.findEmployeeById(timeSheetDTO.getEmployeeId());
Eproject eproject = eProjectRepository.findEprojectByEmployee(employee);
TimeSheet timeSheet = timeSheetRepository.findTimeSheetByEprojectAndId(eproject, timeSheetDTO.getId());
if (eproject != null) {
if (timeSheet != null) {
int i = timeSheetRepository.updateTimeSheet(timeSheetDTO.getTitle(), timeSheetDTO.getContent()
, timeSheetDTO.getNote(), timeSheetDTO.getId());
if (i == 1) {
message = "Update success";
} else {
message = "Update failed";
}
} else {
message = "TimeSheet does not exist";
}
} else {
message = "Eproject does not exist";
}
return message;
}
@Transactional
public String updateCheck(TimeSheetDTO timeSheetDTO) {
String message;
int i = timeSheetRepository.updateCheck(timeSheetDTO.getChecked(), timeSheetDTO.getId());
if (i == 1) {
message = "Success";
} else {
message = "Failed";
}
return message;
}
// @Transactional
// public String updateLeaveFormStatus(TimeSheetDTO timeSheetDTO) {
// String message;
// TimeSheet timeSheet = timeSheetRepository.findTimeSheetByEmployeeId(timeSheetDTO.getId());
// if (timeSheet != null) {
// int i = timeSheetRepository.updateTimeSheetStatus(timeSheetDTO.isStatus(), timeSheetDTO.getId());
// if (i == 1) {
// message = "Update status success";
// } else {
// message = "Update status failed";
// }
// } else {
// message = "TimeSheet does not exist";
// }
//
// return message;
// }
public List<TimeSheet> findTimeSheetByEmployeeId(int employeeId) {
Employee employee = employeeRepository.findEmployeeById(employeeId);
Eproject eproject = eProjectRepository.findEprojectByEmployee(employee);
if (employee != null && eproject != null && timeSheetRepository.showTimeSheetByEproject(eproject) != null) {
return timeSheetRepository.showTimeSheetByEproject(eproject);
} else {
return null;
}
}
public TimeSheet findTimeSheetById(int id) {
return timeSheetRepository.findTimeSheetById(id);
}
public List<Eproject> getEprojectList() {
return eProjectRepository.findAll();
}
}
package com.itsol.quantrivanphong.report.timesheet.controller;
import com.itsol.quantrivanphong.exception.InputException;
import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.model.TimeSheet;
import com.itsol.quantrivanphong.report.leaveform.controller.Notification;
import com.itsol.quantrivanphong.report.timesheet.business.TimeSheetBusiness;
import com.itsol.quantrivanphong.report.timesheet.dto.TimeSheetDTO;
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 = "/eproject")
public class TimeSheetController {
@Autowired
TimeSheetBusiness timeSheetBusiness;
@PostMapping(path = "/timesheet/add", consumes = "application/json", produces = "application/json")
public ResponseEntity addTimeSheet(@RequestBody TimeSheetDTO timeSheetDTO) {
String message;
try {
if (timeSheetDTO.getTitle().trim().equals("")) throw new InputException("Tiêu đề không được để trống");
if (timeSheetDTO.getContent().trim().equals("")) throw new InputException("Nội dung không được để trống");
message = timeSheetBusiness.addTimeSheet(timeSheetDTO);
} catch (InputException e) {
message = e.getMessage();
}
return ResponseEntity.ok(new Notification(200, message));
}
// @PostMapping(path = "/timesheet", consumes = "application/json", produces = "application/json")
// public ResponseEntity<String> insertTimeSheet(@RequestBody TimeSheetDTO timeSheetDTO) {
// String message;
// try {
// if (timeSheetDTO.getTitle().trim().equals("")) throw new InputException("Tiêu đề không được để trống");
// if (timeSheetDTO.getContent().trim().equals("")) throw new InputException("Nội dung không được để trống");
// message = timeSheetBusiness.insertTimeSheet(timeSheetDTO);
// } catch (InputException e) {
// message = e.getMessage();
// }
//
// return ResponseEntity.ok(message);
// }
@DeleteMapping("/timesheet/delete/{timesheetId}")
public ResponseEntity deleteTimeSheet(@PathVariable int timesheetId) {
return ResponseEntity.ok(new Notification(200, timeSheetBusiness.deleteTimeSheet(timesheetId)));
}
@GetMapping(path = "/timesheet/show")
public List<TimeSheet> showAllTimeSheet() {
return timeSheetBusiness.findAll();
}
@PostMapping(path = "/timesheet/update", consumes = "application/json", produces = "application/json")
public ResponseEntity updateTimeSheet(@RequestBody TimeSheetDTO timeSheetDTO) {
String message;
try {
if (timeSheetDTO.getTitle().trim().equals("")) throw new InputException("Tiêu đề không được để trống");
if (timeSheetDTO.getContent().trim().equals("")) throw new InputException("Nội dung không được để trống");
message = timeSheetBusiness.updateTimeSheet(timeSheetDTO);
} catch (InputException e) {
message = e.getMessage();
}
return ResponseEntity.ok(new Notification(200, message));
}
// @PostMapping(path = "/update-status", consumes = "application/json", produces = "application/json")
// public ResponseEntity<String> updateLeaveFormStatus(@RequestBody TimeSheetDTO timeSheetDTO) {
// String message;
// message = timeSheetBusiness.updateLeaveFormStatus(timeSheetDTO);
// return ResponseEntity.ok(message);
// }
@GetMapping("/timesheet/show/{employeeId}")
public ResponseEntity<List<TimeSheet>> showTimeSheetByEmployeeId(@PathVariable int employeeId) {
return ResponseEntity.ok(timeSheetBusiness.findTimeSheetByEmployeeId(employeeId));
}
@GetMapping("/timesheet/{id}")
public ResponseEntity<TimeSheet> showTimeSheetById(@PathVariable int id) {
return ResponseEntity.ok(timeSheetBusiness.findTimeSheetById(id));
}
@PostMapping(path = "/timesheet/update/check", consumes = "application/json", produces = "application/json")
public ResponseEntity<String> updateCheck(@RequestBody TimeSheetDTO timeSheetDTO) {
return ResponseEntity.ok(timeSheetBusiness.updateCheck(timeSheetDTO));
}
@GetMapping(path = "/getAll")
public List<Eproject> getAllEproject() {
return timeSheetBusiness.getEprojectList();
}
}
\ No newline at end of file
package com.itsol.quantrivanphong.report.timesheet.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TimeSheetDTO {
private int id;
private int employeeId;
private String title;
private String content;
private String note;
private String checked;
private boolean status;
private int eprojectId;
}
package com.itsol.quantrivanphong.report.timesheet.repository;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.Eproject;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface EProjectRepository extends JpaRepository<Eproject, Integer> {
Eproject findEprojectById(int id);
Eproject findEprojectByEmployee(Employee employee);
Eproject findEprojectByIdAndEmployee(int eProjectId, Employee employee);
//======================================================================================================
// Hieunv
@Query(value = "SELECT * FROM eproject ep JOIN project p on p.id = ep.project_id WHERE p.id = ?1 AND ep.employee_id NOT IN (SELECT e.id FROM employee e JOIN eproject ep ON e.id = ep.employee_id JOIN project p on p.id = ep.project_id JOIN timesheet ts on ts.eproject_id = ep.id WHERE p.id = ?1 AND ts.created_at Like ?2%)", nativeQuery = true)
List<Eproject> listEprojectLack(int projectId, String currentDate);
}
package com.itsol.quantrivanphong.report.timesheet.repository;
import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.model.TimeSheet;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface TimeSheetRepository extends JpaRepository<TimeSheet, Integer> {
TimeSheet findTimeSheetById(int id);
// @Query("select ts from TimeSheet ts order by ts.createdAt desc")
// List<TimeSheet> getAllTimeSheet();
@Modifying
@Query("update TimeSheet ts set ts.title = ?1, ts.content = ?2, ts.note = ?3 where ts.id = ?4")
int updateTimeSheet(String title, String content, String note, int timeSheetId);
@Modifying
@Query("update TimeSheet ts set ts.checked = ?1 where ts.id = ?2")
int updateCheck(String check, int timeSheetId);
// @Modifying
// @Query("update TimeSheet ts set ts.status = ?1 where ts.id = ?2")
// int updateTimeSheetStatus(boolean status, int id);
@Query("select ts from TimeSheet ts where ts.eproject = ?1")
List<TimeSheet> showTimeSheetByEproject(Eproject eproject);
TimeSheet findTimeSheetByEprojectAndId(Eproject eproject, int timeSheetId);
//==================================================================================================================
//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)
List<TimeSheet> findAllTimesheetStatusTrue(int projectId, String currentDate);
@Transactional
@Modifying
@Query(value = "INSERT INTO timesheet(eproject_id, status, created_at, updated_at, checked) VALUES (?1, ?2,current_date(), current_date(),?3)",nativeQuery = true)
void updateLack(int eprojectId, boolean status, String checked);
@Transactional
@Modifying
@Query(value = "update TimeSheet ts set ts.checked = ?1 where ts.id = ?2", nativeQuery = true)
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)
int numberEmployeeLack(int ProjectId, String firstDate, String finalDate);
@Query(value = "SELECT * FROM timesheet ts JOIN eproject ep ON ep.id = ts.eproject_id JOIN employee e ON e.id = ep.employee_id WHERE ts.status = false AND created_at >= ?1 AND created_at <= ?2 AND ep.project_id = ?3 AND e.id = ?4", nativeQuery = true)
List<TimeSheet> listDateOfLack(String firstDate, String finalDate, int projectId, int employeeId);
}
This diff is collapsed.
<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="keywords" content="Glance Design Dashboard Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template,
SmartPhone Compatible web template, free WebDesigns for Nokia, Samsung, LG, SonyEricsson, Motorola web design"/>
<script type="application/x-javascript"> addEventListener("load", function () {
setTimeout(hideURLbar, 0);
}, false);
function hideURLbar() {
window.scrollTo(0, 1);
} </script>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.css" rel='stylesheet' type='text/css'/>
<!-- Custom CSS -->
<link href="css/style.css" rel='stylesheet' type='text/css'/>
<!-- font-awesome icons CSS -->
<link href="css/font-awesome.css" rel="stylesheet">
<link rel="stylesheet" href="css/Footer-with-social-icons.css">
<link href='css/SidebarNav.min.css' media='all' rel='stylesheet' type='text/css'/>
<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/modernizr.custom.js"></script>
<link href="//fonts.googleapis.com/css?family=PT+Sans:400,400i,700,700i&amp;subset=cyrillic,cyrillic-ext,latin-ext"
rel="stylesheet">
<script src="js/Chart.js"></script>
<script src="js/metisMenu.min.js"></script>
<script src="js/custom.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-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-sanitize.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="pages/report/reportController.js"></script>
<script src="pages/employee/employeeController.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/homepage/MyHomeController.js"></script>
<script src="pages/homepage/HomeService.js"></script>
<script src="pages/timesheet/timeSheetController.js"></script>
<script src="pages/timesheet/timeSheetDetailController.js"></script>
<script src="pages/leaveform/leaveFormDetailController.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"
href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"/>
//font-awesome by Phi
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Varela+Round">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- end anguarjs app-->
<link href="css/custom.css" rel="stylesheet">
<style>
#chartdiv {
width: 100%;
height: 295px;
}
</style>
<!--pie-chart --><!-- index page sales reviews visitors pie chart -->
<script src="js/pie-chart.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#demo-pie-1').pieChart({
barColor: '#2dde98',
trackColor: '#eee',
lineCap: 'round',
lineWidth: 8,
onStep: function (from, to, percent) {
$(this.element).find('.pie-value').text(Math.round(percent) + '%');
}
});
$('#demo-pie-2').pieChart({
barColor: '#8e43e7',
trackColor: '#eee',
lineCap: 'butt',
lineWidth: 8,
onStep: function (from, to, percent) {
$(this.element).find('.pie-value').text(Math.round(percent) + '%');
}
});
$('#demo-pie-3').pieChart({
barColor: '#ffc168',
trackColor: '#eee',
lineCap: 'square',
lineWidth: 8,
onStep: function (from, to, percent) {
$(this.element).find('.pie-value').text(Math.round(percent) + '%');
}
});
});
</script>
<link href="css/owl.carousel.css" rel="stylesheet">
<script src="js/owl.carousel.js"></script>
<script>
$(document).ready(function () {
$("#owl-demo").owlCarousel({
items: 3,
lazyLoad: true,
autoPlay: true,
pagination: true,
nav: true
});
});
</script>
</head>
<body class="cbp-spmenu-push" ng-app="myApp">
<div ui-view="layout"></div>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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">
<table class="table">
<form>
<div class="form-row">
<div class="row">
<tr>
<td><label>User Name</label></td>
<td>
<input type="text" maxlength="29" ng-model="emp.username"/>
<span style="color:red" ng-show="myForm.emp.username.$dirty && myForm.emp.username.$invalid">
<span ng-show="myForm.emp.username.$error.required">Username is required.</span>
</span>
</td>
</tr>
<tr>
<td><label>First Name</label></td>
<td>
<input type="text" maxlength="29" ng-model="emp.firstName"/>
</td>
</tr>
<tr>
<td><label>Last Name</label></td>
<td>
<input type="text" maxlength="29" ng-model="emp.lastName"/>
</td>
</tr>
<tr>
<td><label id="email" for="email">Email</label></td>
<td>
<input class="form-check-label" type="email" maxlength="150" ng-model="emp.emailAddress"/>
</td>
</tr>
<tr>
<td><label>Phone</label></td>
<td>
<input type="text" maxlength="10" value="" ng-model="emp.phoneNumber"/>
</td>
</tr>
</div>
<div class="col">
<tr>
<td><label>Education</label></td>
<td>
<input type="text" ng-model="emp.education"/>
</td>
</tr>
<tr>
<td><label>Home town</label></td>
<td><input type="text" ng-model="emp.homeTown"/></td>
</tr>
<tr>
<td><label>Department</label></td>
<td><input type="text" ng-model="emp.department"/></td>
</tr>
<tr>
<td><label>Position</label></td>
<td><input type="text" ng-model="emp.position"/></td>
</tr>
<tr>
</div>
</div>
</form>
<td></td>
<td>
<input class="btn btn-primary" type="submit" name="submit" value="submit" ng-click="save();"/>
<input class="btn btn-primary" type="submit" name="clear" value="clear" ng-click=" emp = null"/>
</td>
</tr>
</table>
</div>
</div>
\ No newline at end of file
angular.module("myApp").factory('News', function ($resource) {
return $resource('http://localhost:8081/api/news/:id', {id: '@myNewsId'},{
'get': {
method: 'GET',
isArray: false
}
});
});
angular.module('myApp').factory('Catagories', function ($resource) {
return $resource('http://localhost:8081/api/catalogies/:id', {id: '@myCatagoriesId'});
});
angular.module('myApp').factory('LatestNews', function ($resource) {
return $resource('http://localhost:8081/api/catalogi/:id/latestNews', {id: '@CatagoriesId'},{
'get': {
method: 'GET',
isArray: true
}
});
});
angular.module('myApp').factory('NewsByCatagori', function ($resource) {
return $resource('http://localhost:8081/api/catalogi/:id/news', {id: '@catagoriesId'},{
'get': {
method: 'GET',
isArray: true
}
});
});
angular.module("myApp").controller('MyHomeController', function ($scope,$http, $state,News, $window,$stateParams,Catagories,LatestNews) {
$scope.catagories = Catagories.query();
$scope.currentPage = 1
,$scope.numPerPage = 6
,$scope.maxSize = 5;
$scope.catagoriDetail = Catagories.get({}, {myCatagoriesId: $stateParams.catagoriId}).$promise.then(
function (value) {
$scope.todos = value.news;
$scope.catagori = value;
$scope.numPages = function () {
return Math.ceil($scope.todos.length / $scope.numPerPage);
};
console.log( $scope.todos.length);
$scope.$watch('currentPage + numPerPage', function () {
var begin = (($scope.currentPage - 1) * $scope.numPerPage)
, end = begin + $scope.numPerPage;
$scope.myNews = $scope.todos.slice(begin, end);
});
},
function (error) {
console.log()
}
);
$scope.newsById = News.get({}, {myNewsId: $stateParams.Id1});
$scope.show = function(id){
$scope.newestNews = LatestNews.get({}, {CatagoriesId: id});
};
$scope.catagoriById = Catagories.get({}, {myCatagoriesId: $stateParams.myCatagoriId});
//Delete News
$scope.deleteNews = function(newsId) {
if (confirm("Delete?")) {
$http({
method: 'DELETE',
url: 'http://localhost:8080/api/HR/news/' + newsId,
headers: {
'Content-Type': 'application/json'
}
}).then(function (response) {
console.log("delete OK");
$state.reload();
}, function (data, status) {
$state.reload();
});
}
};
//Edit news
$scope.newsEditById = News.get({}, {myNewsId: $stateParams.myNewsEditId});
$scope.editNews = function(newsEditById) {
if(confirm("Update?")) {
$http({
method: 'PUT',
url: 'http://localhost:8081/api/HR/news/' + newsEditById.id,
data: angular.toJson(newsEditById),
headers: {
'Content-Type': 'application/json'
}
}).then(function (response) {
console.log("update OK");
$state.go('newsManagement',{myCatagoriId:$stateParams.myCatagoriEditId});
}, function (data, status) {
console.log(status);
});
}
};
//Add News
$scope.createNews = function(newsAdd) {
if(confirm("Add?")) {
$http({
method: 'POST',
url: 'http://localhost:8081/api/HR/'+ $stateParams.employeeId+'/catalogies/' + $stateParams.myCatagoriAddId+'/news',
data: angular.toJson(newsAdd),
headers: {
'Content-Type': 'application/json'
}
}).then(function (response) {
console.log("update OK");
$state.go('newsManagement',{myCatagoriId:$stateParams.myCatagoriAddId});
}, function (data, status) {
console.log(status);
});
}
};
});
\ No newline at end of file
<form name="myForm" novalidate ng-submit="createNews(newsAdd)" >
<table border= 1>
<tr>
<td>Thumbnail</td>
<td><input type="text" data-ng-model="newsAdd.thumbnail" /></td>
</tr>
<tr>
<td>Title</td>
<td><input type="text" ng-model="newsAdd.title" /></td>
</tr>
<tr>
<td>Content</td>
<td><input type="text" data-ng-model="newsAdd.content" /></td>
</tr>
<tr>
<td>Status</td>
<td><input type="text" data-ng-model="newsAdd.status" /></td>
</tr>
<tr>
<td colspan="2">
<input data-ng-disabled="myForm.$invalid" type="submit" value="Submit" class="blue-button" />
</td>
</tr>
</table>
</form>
<div class="container">
<div><a ui-sref="CatagoriManagement" style="padding:20px">Home</a></div>
<div >
<a href="#/management/HR/1/catagori/{{catagoriById.id}}/createNews"> Add News</a>
<div style="margin-top: 25px;">
<table class="table" >
<thead>
<tr>
<tr>
<div ng-if="catagoriById.name == 'Office'">
<a href="#/management/catagori/5" style="float:left"><< Back </a>
</div>
<div ng-if="catagoriById.name == 'Outdoor Activity'">
<a href="#/management/catagori/1" style="float:left"><< Back </a>
</div>
<div ng-if="catagoriById.name == 'Projects'">
<a href="#/management/catagori/2" style="float:left"><< Back</a>
</div>
<div ng-if="catagoriById.name == 'Recruitments'">
<a href="#/management/catagori/4" style="float:left"><< Back </a>
</div>
<div ng-if="catagoriById.name == 'Office'">
<a href="#/management/catagori/2" style="float:right">Next >> </a>
</div>
<div ng-if="catagoriById.name == 'Outdoor Activity'">
<a href="#/management/catagori/4" style="float:right">Next >></a>
</div>
<div ng-if="catagoriById.name == 'Projects'">
<a href="#/management/catagori/5" style="float:right">Next >></a>
</div>
<div ng-if="catagoriById.name == 'Recruitments'">
<a href="#/management/catagori/1" style="float:right">Next >></a>
</div>
<td colspan="12"><h1 style="font-size: 30px;text-align: center">{{catagoriById.name}}</h1></td>
</tr>
<th>STT</th>
<th>News title</th>
<th>Create Date</th>
<th>Content</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
<tr class="vide" ng-repeat="myNews in catagoriById.news">
<td>{{$index + 1}}</td>
<td>{{myNews.title}}</td>
<td>{{myNews.createdAt}}</td>
<td>{{myNews.content}}</td>
<td><a href="#/management/catagori/{{catagoriById.id}}/news/{{myNews.id}}" style="color:green;border: 1px solid black;padding: 10px;" >Edit</a> </td>
<td><button type="button" style="color:red;border: 1px solid black;padding: 10px;" ng-click="deleteNews(myNews.id)">Delete</button> </td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!--<div class="card-header">-->
<!-- <i class="fas fa-table"></i> Thêm mới dự án-->
<!--</div>-->
<!--<div class="card-body">-->
<!-- <form ng-submit="insertIssues(Issues)">-->
<!-- <label>Tên Dự Án</label>-->
<!-- <select ng-model="Issues.projectId" autofocus="autofocus"-->
<!-- required="required">-->
<!-- <option value="">==> Tên Dự Án</option>-->
<!-- <option ng-repeat="project in listProject" value="{{project.id}}">{{project.name}}</option>-->
<!-- </select><br/>-->
<!-- <label>Tiêu đề</label>-->
<!-- <input type="text" ng-model="Issues.title" id="title" placeholder="Tiêu Đề"-->
<!-- required="required"><br/>-->
<!-- <label>Nội Dung</label>-->
<!-- <input type="text" ng-model="Issues.actionCode" id="actionCode" placeholder="Nội dung issues"-->
<!-- required="required"><br/>-->
<!-- <div>-->
<!-- <h1>{{view.message}}</h1>-->
<!-- <input type="submit" value="Save">-->
<!-- <input type="reset" value="Reset">-->
<!-- <button type="button" ui-sref="issues">Back</button>-->
<!-- </div>-->
<!-- </form>-->
<!--</div>-->
<div class="container">
<form ng-submit="insertIssues(Issues)">
<label>Tên Dự Án</label>
<select ng-model="Issues.projectId" autofocus="autofocus"
required="required">
<option value="">==> Tên Dự Án</option>
<option ng-repeat="project in listProject" value="{{project.id}}">{{project.name}}</option>
</select><br/>
<label>Tiêu đề</label>
<input type="text" ng-model="Issues.title" id="title" placeholder="Tiêu Đề"
required="required"><br/>
<label>Nội Dung</label>
<input type="text" ng-model="Issues.actionCode" id="actionCode" placeholder="Nội dung issues"
required="required"><br/>
<div>
<h1>{{view.message}}</h1>
<input type="submit" value="Save">
<input type="reset" value="Reset">
<button type="button" ui-sref="issues">Back</button>
</div>
</form>
</div>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<div class="card card-login mx-auto mt-5">
<div class="card-header">Reset Password</div>
<div class="card-body">
<div class="text-center mb-4">
<h4>Lấy lại mật khẩu bằng Email đăng ký?</h4>
</div>
<form>
<div class="form-group">
<div class="form-label-group">
<input type="email" id="inputEmail" class="form-control" placeholder="Enter email address"
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>
</form>
<div class="text-center">
<a class="d-block small mt-3" ui-sref="register">Đăng ký tài khoản</a>
<a class="d-block small" ui-sref="login">Đăng Nhập</a>
</div>
</div>
</div>
\ No newline at end of file
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.
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