Commit 73d43ff5 authored by đinh thị đầm's avatar đinh thị đầm

Merge remote-tracking branch 'origin/master' into dinhdam

# Conflicts:
#	pom.xml
#	src/main/java/com/itsol/quantrivanphong/report/employee/Test.java
#	src/main/resources/application.properties
parents 4cd8cb9e ce3006b6
...@@ -2,8 +2,10 @@ package com.itsol.quantrivanphong; ...@@ -2,8 +2,10 @@ package com.itsol.quantrivanphong;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication @SpringBootApplication
@EnableJpaAuditing
public class QuantrivanphongApplication { public class QuantrivanphongApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
package com.itsol.quantrivanphong.access.homepage.business;
import com.itsol.quantrivanphong.access.homepage.repository.CatalogiRepository;
import com.itsol.quantrivanphong.model.Catalogi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class CatalogiBusiness {
@Autowired
private CatalogiRepository catalogiRepository;
public Optional<Catalogi> findById(int id){
return catalogiRepository.findById(id);
}
public List<Catalogi> findAllCatalogi(){
return catalogiRepository.findAllCatalogi();
}
}
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;
import java.util.Optional;
@Service
public class NewsBusiness {
@Autowired
private NewsRepository newsRepository;
public List<News> findAllNews(){
return newsRepository.findAllNews();
}
// Find News By News Id
public Optional<News> findById(int newsId){
return newsRepository.findById(newsId);
}
//Find news By Employee Id
public List<News> findByEmployeeId(int employeeId){
return newsRepository.findByEmployeeId(employeeId);
}
// Find news By Catalogi
public List<News> findByCatalogiId(int catalogiId){
return newsRepository.findByCatalogiId(catalogiId);
}
public Optional<News> findByIdAndEmployeeId(int id, int employeeId){
return newsRepository.findByIdAndEmployeeId(id,employeeId);
}
public Optional<News> findByIdAndAndCatalogiId(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 employeeId,int newsId){
newsRepository.findByIdAndEmployeeId(employeeId,newsId).map(news ->{
newsRepository.delete(news);
return "ok";
}).orElseThrow(() -> new ResourceNotFoundException("News" ,"newsId",newsId));
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.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.Optional;
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){
return catalogiBusiness.findById(catalogiId).orElseThrow(()-> new ResourceNotFoundException("Catalogi","catalogiId",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.business.EmployeeBusiness;
import com.itsol.quantrivanphong.exception.ResourceNotFoundException;
import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.News;
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());
}
// get news by employeeId
@GetMapping("/news/employees/{employeeId}")
public List<News> getAllNewsByEmployeeId(@PathVariable(value = "employeeId") int employeeId) {
return newsBusiness.findByEmployeeId(employeeId);
}
// get News by catalogiId
@GetMapping("/news/catalogi/{catalogiId}")
public List<News> getAllNewsByCatalogiId(@PathVariable(value="catalogiId") int catalogiId){
return newsBusiness.findByCatalogiId(catalogiId);
}
// create news by employeesId
@PostMapping("/news/employees/{employeeId}")
public News createNews(@PathVariable (value = "employeeId") int employeeId,
@Valid @RequestBody News news) {
Employee employee = employeeBusiness.findById(employeeId);
news.setEmployee(employee);
return newsBusiness.save(news);
}
// Edit news by EmployeeId
@PutMapping("/employees/{employeeId}/news/{newsId}")
public News updateNews(@PathVariable (value = "employeeId") int employeeId,
@PathVariable (value = "newsId") int newsId,
@Valid @RequestBody News newsRequest) {
if(employeeBusiness.findById(employeeId) == null) {
throw new ResourceNotFoundException("Employee" ,"employeeId",employeeId);
}
if (!newsBusiness.findById(newsId).isPresent()) {
throw new ResourceNotFoundException("News", "id", newsId);
}
return newsBusiness.updateNews(newsId,newsRequest);
}
//delete news by employeeId and newsId
@DeleteMapping("/employees/{employeeId}/news/{newsId}")
public ResponseEntity<?> deleteNews(@PathVariable (value = "employeeId") int employeeId,
@PathVariable (value = "newsId") int newsId) {
if(!newsBusiness.findByIdAndEmployeeId(employeeId,newsId).isPresent()){
throw new ResourceNotFoundException("News","newsId",newsId);
}
return ResponseEntity.ok(newsBusiness.deleteNews(employeeId,newsId));
}
}
//package com.itsol.quantrivanphong.access.homepage.dto;
//
//import lombok.AllArgsConstructor;
//import lombok.Data;
//import lombok.NoArgsConstructor;
//
//import javax.persistence.Entity;
//
//@Entity
//@Data
//@NoArgsConstructor
//@AllArgsConstructor
//public class NewsDTO {
// private int employeeId;
// private int catalogiId;
// private int id;
// private String title;
// private String thumbnail;
// private String summary;
// private String content;
// private boolean status;
//}
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;
import java.util.Optional;
@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);
List<News> findByEmployeeId(int employeeId);
List<News> findByCatalogiId(int catalogiId);
Optional<News> findByIdAndEmployeeId(int id,int employeeId);
Optional<News> findByIdAndAndCatalogiId(int id,int catalogiId);
}
package com.itsol.quantrivanphong.audit;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
import java.time.Instant;
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(
value = {"createdAt", "updatedAt"},
allowGetters = true
)
public abstract class DateAudit implements Serializable {
@CreatedDate
@Column(nullable = false, updatable = false)
private Instant createdAt;
@LastModifiedDate
@Column(nullable = false)
private Instant updatedAt;
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
}
package com.itsol.quantrivanphong.exception;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
private String resourceName;
private String fieldName;
private Object fieldValue;
public ResourceNotFoundException(String resourceName, String fieldName, Object fieldValue) {
super(String.format("%s not found with %s : '%s'", resourceName, fieldName, fieldValue));
this.resourceName = resourceName;
this.fieldName = fieldName;
this.fieldValue = fieldValue;
}
public String getResourceName() {
return resourceName;
}
public String getFieldName() {
return fieldName;
}
public Object getFieldValue() {
return fieldValue;
}
}
package com.itsol.quantrivanphong.manage.leaveform; package com.itsol.quantrivanphong.manager.employee;
public class test { public class test {
} }
package com.itsol.quantrivanphong.manage.issue; package com.itsol.quantrivanphong.manager.news;
public class test { public class test {
} }
package com.itsol.quantrivanphong.report.project; package com.itsol.quantrivanphong.manager.project;
public class test { public class test {
} }
package com.itsol.quantrivanphong.manager.reportdetail;
public class test {
}
package com.itsol.quantrivanphong.model; package com.itsol.quantrivanphong.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.itsol.quantrivanphong.audit.DateAudit;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*; import javax.persistence.*;
...@@ -10,8 +13,11 @@ import javax.persistence.*; ...@@ -10,8 +13,11 @@ import javax.persistence.*;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"createdAt", "updatedAt"},
allowGetters = true)
@Table(name = "news") @Table(name = "news")
public class News { public class News extends DateAudit {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
......
package com.itsol.quantrivanphong.report.news; package com.itsol.quantrivanphong.report.issue;
public class test { public class test {
} }
package com.itsol.quantrivanphong.manage.timesheet; package com.itsol.quantrivanphong.report.leaveform;
public class test { public class test {
} }
package com.itsol.quantrivanphong.report.reportdetail;
public class test {
}
package com.itsol.quantrivanphong.report.timesheet;
public class test {
}
This diff is collapsed.
This diff is collapsed.
<!--
Author: W3layouts
Author URL: http://w3layouts.com
License: Creative Commons Attribution 3.0 Unported
License URL: http://creativecommons.org/licenses/by/3.0/
-->
<!DOCTYPE HTML> <!DOCTYPE HTML>
<html> <html>
<head> <head>
...@@ -31,130 +26,17 @@ Smartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, Sony ...@@ -31,130 +26,17 @@ Smartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, Sony
<!--End khai báo các file js--> <!--End khai báo các file js-->
<!-- khai báo các controllers --> <!-- khai báo các controllers -->
<!--<script src="pages/tuyendung/tuyendungController.js"></script>--> <script src="pages/employee/employeeController.js"></script>
<script src="pages/tintuc/tintucController.js"></script>
<!--<script src="pages/lienhe/lienheController.js"></script>-->
<script src="pages/gioithieu/gioithieuController.js"></script>
<script src="pages/index/indexController.js"></script>
<!--End khai báo controllers--> <!--End khai báo controllers-->
</head> </head>
<body ng-app="myApp"> <body ng-app="myApp">
<!--start-main--> <!--start-main-->
<div class="header">
<div class="header-top">
<div class="container">
<div class="logo">
<a href="index.html"><h1>SMART WEB</h1></a>
</div>
<div class="search">
<form>
<input type="text" value="Search" onfocus="this.value = '';"
onblur="if (this.value == '') {this.value = 'Search';}">
<input type="submit" value="">
</form>
</div>
<div class="social">
<ul>
<li><a href="#" class="facebook"> </a></li>
<li><a href="#" class="facebook twitter"> </a></li>
<li><a href="#" class="facebook chrome"> </a></li>
<li><a href="#" class="facebook in"> </a></li>
<li><a href="#" class="facebook beh"> </a></li>
<li><a href="#" class="facebook vem"> </a></li>
<li><a href="#" class="facebook yout"> </a></li>
</ul>
</div>
<div class="clearfix"></div>
</div>
</div>
<!--head-bottom-->
<div class="head-bottom">
<div class="container"> <div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#navbar" aria-expanded="false"
aria-controls="navbar">
<span class="sr-only">Toggle navigation</span> <span
class="icon-bar"></span> <span class="icon-bar"></span> <span
class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a ui-sref="index">Home</a></li>
<li><a ui-sref="tintuc">Tin tức</a></li>
<li><a ui-sref="tuyendung">Tuyển dụng</a></li>
<li><a ui-sref="gioithieu">Giới thiệu</a></li>
<li><a ui-sref="lienhe">Liên hệ</a></li>
<li class="dropdown"><a href="#" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">Quản lý<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="singlepage.html">User</a></li>
<li><a href="tuyendung_quanly.html">Tuyển dụng</a></li>
<li><a href="singlepage.html">Tin tức</a></li>
</ul></li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
<!--head-bottom-->
</div>
<!-- banner -->
<div ui-view="banner"></div> <!-- dành cho trang chủ -->
<!-- technology -->
<div ui-view="index"></div> <!-- dành cho trang chủ -->
<div ui-view="main_layout"> <!-- dành cho các trang còn lại -->
</div>
<!-- technology -->
<!-- footer -->
<div class="footer">
<div class="container">
<div class="col-md-4 footer-left">
<h6>THIS LOOKS GREAT</h6>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
do eiusmod tempor incididunt</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
do eiusmod tempor incididunt consectetur adipisicing elit,</p>
</div>
<div class="col-md-4 footer-middle">
<h4>Twitter Feed</h4>
<div class="mid-btm">
<p>Consectetur adipisicing</p>
<p>Sed do eiusmod tempor</p>
<a href="https://w3layouts.com/">https://w3layouts.com/</a>
</div>
<p>Consectetur adipisicing</p>
<p>Sed do eiusmod tempor</p>
<a href="https://w3layouts.com/">https://w3layouts.com/</a>
</div> </div>
<div class="col-md-4 footer-right">
<h4>Quick Links</h4>
<li><a href="#">Eiusmod tempor</a></li>
<li><a href="#">Consectetur </a></li>
<li><a href="#">Adipisicing elit</a></li>
<li><a href="#">Eiusmod tempor</a></li>
<li><a href="#">Consectetur </a></li>
<li><a href="#">Adipisicing elit</a></li>
</div>
<div class="clearfix"></div>
</div>
</div>
<!-- footer -->
<!-- footer-bottom -->
<!-- footer-bottom -->
<div class="copyright">
<div class="container">
<p>
© 2016 Business_Blog. All rights reserved | Template by <a
href="http://w3layouts.com/">W3layouts</a>
</p>
</div>
</div>
</body> </body>
......
<!DOCTYPE html>
<div class="business"> <html lang="en">
<head>
<meta charset="UTF-8">
<!-- <div class="vide" ng-repeat="emp in employess">--> <title>Title</title>
<!-- <h3>--> </head>
<!-- <a href="tintuc_chitiet.html">{{emp.emailAddress}}</a>--> <body>
<!-- </h3>-->
<!-- <p>{{emp.username}}</p>-->
<!-- <p>Ut enim ad minim veniam, quis nostrud eiusmod tempor-->
<!-- incididunt ut labore et dolore magna aliqua exercitation ullamco-->
<!-- laboris nisi ut aliquip ex ea commodo consequat.</p>-->
<!-- <div class="blog-poast-info">-->
<!-- <ul>-->
<!-- <li><i class="glyphicon glyphicon-user"> </i><a-->
<!-- class="admin" href="#"> Admin </a></li>-->
<!-- <li><i class="glyphicon glyphicon-calendar"> </i>30-12-2015</li>-->
<!-- <li><i class="glyphicon glyphicon-comment"> </i><a-->
<!-- class="p-blog" href="#">3 Comments </a></li>-->
<!-- <li><i class="glyphicon glyphicon-heart"> </i><a-->
<!-- class="admin" href="#">5 favourites </a></li>-->
<!-- <li><i class="glyphicon glyphicon-eye-open"> </i>1.128 views</li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </div>-->
</div>
<!-- <td>username:</td>-->
<!-- <td><input type="text" ng-model="emp.username"/></td>-->
<!-- <td>firstname</td>-->
<!-- <td><input type="text" ng-model="emp.firstName"/></td>-->
<!-- <td>lastname:</td>-->
<!-- <td><input type="text" ng-model="emp.lastName"/></td>-->
<!-- <td>password:</td>-->
<!-- <td><input type="text" ng-model="emp.password"/></td>-->
<!-- <td>email:</td>-->
<!-- <td><input type="text" ng-model="emp.emailAddress"/></td>-->
<!-- <td>phone:</td>-->
<!-- <td><input type="text" ng-model="emp.phoneNumber"/></td>-->
<!-- <td>education:</td>-->
<!-- <td><input ng-model="emp.education"/></td>-->
<!-- <td>home town:</td>-->
<!-- <td> <input type="text" ng-model="emp.homeTown"/></td>-->
<!-- <td><button ng-click="save()" value="Save Data">Save</button></td>-->
<!-- <td><button ng-click="update()" value="Update Data">Update</button></td>-->
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-8"> <div class="col-md-8">
...@@ -115,7 +62,6 @@ ...@@ -115,7 +62,6 @@
</table> </table>
</div> </div>
<!-- {{emp}}-->
<div> <div>
<table class="table"> <table class="table">
<thead> <thead>
...@@ -152,3 +98,5 @@ ...@@ -152,3 +98,5 @@
</div> </div>
</div> </div>
</div> </div>
</body>
</html>
\ No newline at end of file
...@@ -33,10 +33,13 @@ angular.module("myApp",[]).controller("tintucController", function($scope, $http ...@@ -33,10 +33,13 @@ angular.module("myApp",[]).controller("tintucController", function($scope, $http
}); });
} }
$scope.update = update; $scope.update = update;
function update(emp){ function update(employee){
$scope.emp = emp; $scope.employee = employee;
list_employee(); list_employee();
} }
$scope.deleteEmployee = function (employee) {
}
$http({ $http({
......
<div class="business">
<div class="vide">
<h3>
<a href="tintuc_chitiet.html"> Giới thiệu</a>
</h3>
<href scr="tintuc.htm"></href>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud eiusmod tempor incididunt ut
labore et dolore magna aliqua exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat.</p>
<p>Ut enim ad minim veniam, quis nostrud eiusmod tempor
incididunt ut labore et dolore magna aliqua exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
\ No newline at end of file
/**
*
*/
angular.module("myApp").controller("gioithieuController", function($scope, $http) {
console.log("Giới thiệu controller");
});
\ No newline at end of file
<!-- banner -->
<div class="banner">
<div class="container">
<h2>Contrary to popular belief, Lorem Ipsum simply</h2>
<p>Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
<a href="#">READ ARTICLE</a>
</div>
</div>
\ No newline at end of file
This diff is collapsed.
/**
*
*/
angular.module("myApp").controller("indexController", function($scope, $http) {
console.log("Index controller");
});
\ No newline at end of file
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