Skip to content

Commit

Permalink
Merge pull request #99 from guma2k2/cart-feature
Browse files Browse the repository at this point in the history
export file feature
  • Loading branch information
guma2k2 authored Dec 18, 2024
2 parents 67a51bb + 0868f36 commit 5247aca
Show file tree
Hide file tree
Showing 20 changed files with 185 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -246,14 +246,7 @@ List<Course> findByMultiQueryWithKeyword(
@Param("categoryName") String categoryName,
@Param("topicId") Integer topicId
);
@Modifying
@Query("""
update
Course s
set s.status = :status, s.reasonRefused = :reason
where s.id = :id
""")
void updateStatusCourse(@Param("status") CourseStatus status, @Param("reason") String reason ,@Param("id") Long courseId);




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -447,9 +447,13 @@ public void delete(Long id) {
}

@Override
@Transactional
public void updateStatusCourse(CourseStatusPostVM courseStatusPostVM, Long courseId) {
courseRepository.updateStatusCourse(courseStatusPostVM.status(), courseStatusPostVM.reason(), courseId);
Course course = courseRepository.findById(courseId).orElseThrow();
if (courseStatusPostVM.status().equals(CourseStatus.UNPUBLISHED) && courseStatusPostVM.reason() != null) {
course.setReasonRefused(courseStatusPostVM.reason());
}
course.setStatus(courseStatusPostVM.status());
courseRepository.saveAndFlush(course);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ public record CourseVM(
List<SectionVM> sections,
UserProfileVM user,
boolean learning,
String breadcrumb
String breadcrumb,
String reason
) {

public static CourseVM fromModel (Course course, List<SectionVM> sections, int ratingCount,
Expand All @@ -60,6 +61,8 @@ public static CourseVM fromModel (Course course, List<SectionVM> sections, int r
DateTimeUtils.convertLocalDateTimeToString(course.getCreatedAt()) : "";
String updatedAt = course.getUpdatedAt() != null ?
DateTimeUtils.convertLocalDateTimeToString(course.getUpdatedAt()) : "";
String reason = course.getReasonRefused() != null ?
course.getReasonRefused() : "";
return new CourseVM(course.getId(), course.getTitle(), course.getHeadline(), course.getSlug(), course.getObjectives(), course.getRequirements(),
course.getTargetAudiences(),
course.getDescription(),level,
Expand All @@ -79,6 +82,7 @@ public static CourseVM fromModel (Course course, List<SectionVM> sections, int r
createdBy,
sections, userProfileVM,
learning,
breadcrumb);
breadcrumb,
reason);
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/backend/elearning/domain/order/Order.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ public class Order {
@Enumerated(EnumType.STRING)
private EOrderStatus status;

private String reasonFailed;


@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
private List<OrderDetail> orderDetails = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ public ResponseEntity<Long> createOrder(@RequestBody OrderPostDto orderPostDto)
return ResponseEntity.ok().body(orderId);
}

@PutMapping("/orders/{orderId}/status/{orderStatus}")
@PutMapping("/orders/{orderId}/status")
public ResponseEntity<Void> createOrder(
@PathVariable("orderId") Long orderId,
@PathVariable("orderStatus") String status
@PathVariable("orderStatus") OrderStatusPostVM status
) {
orderService.updateOrderStatus(orderId, status);
return ResponseEntity.noContent().build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ public interface OrderService {

List<OrderVM> findAllByUserIdAndStatus(EOrderStatus status);

void updateOrderStatus(Long orderId, String orderStatus);
void updateOrderStatus(Long orderId, OrderStatusPostVM orderStatusPostVM);
PageableData<OrderVM> getPageableOrders(int pageNum, int pageSize, Long orderId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.backend.elearning.domain.order;

public record OrderStatusPostVM (
EOrderStatus status,
String reason
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import com.backend.elearning.domain.course.Course;
import com.backend.elearning.domain.course.CourseGetVM;
import com.backend.elearning.domain.course.CourseRepository;
import com.backend.elearning.domain.course.CourseStatus;
import com.backend.elearning.domain.order.*;
import com.backend.elearning.domain.review.Review;
import com.backend.elearning.domain.student.Student;
import com.backend.elearning.domain.student.StudentRepository;
import com.backend.elearning.domain.user.UserRepository;
Expand Down Expand Up @@ -134,14 +136,18 @@ public List<OrderVM> findAllByUserIdAndStatus(EOrderStatus status) {
}

@Override
@Transactional
public void updateOrderStatus(Long orderId, String orderStatus) {
EOrderStatus status = EOrderStatus.valueOf(orderStatus);
orderRepository.updateOrderStatus(orderId, status);
public void updateOrderStatus(Long orderId, OrderStatusPostVM orderStatusPostVM) {
Order order = orderRepository.findById(orderId).orElseThrow();
if (orderStatusPostVM.status().equals(EOrderStatus.FAILURE) && orderStatusPostVM.reason() != null) {
order.setReasonFailed(orderStatusPostVM.reason());
}
order.setStatus(orderStatusPostVM.status());
orderRepository.saveAndFlush(order);
}




@Override
public PageableData<OrderVM> getPageableOrders(int pageNum, int pageSize, Long keyword) {
Pageable pageable = PageRequest.of(pageNum, pageSize);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,27 @@ public ResponseEntity<Void> delete (
}

@GetMapping("/question-lecture/lectures/{lectureId}")

public ResponseEntity<List<QuestionLectureGetVM>> getByLectureId (
@PathVariable("lectureId") Long lectureId
) {
List<QuestionLectureGetVM> response = questionLectureService.getByLectureId(lectureId);
return ResponseEntity.status(HttpStatus.OK).body(response);
}

@GetMapping("/question-lecture/course/{courseId}")
public ResponseEntity<List<QuestionLectureGetVM>> getByCourseId (
@PathVariable("courseId") Long courseId
) {
List<QuestionLectureGetVM> response = questionLectureService.getByCourse(courseId);
return ResponseEntity.status(HttpStatus.OK).body(response);
}

@GetMapping("/question-lecture/section/{sectionId}")
public ResponseEntity<List<QuestionLectureGetVM>> getBySection (
@PathVariable("sectionId") Long sectionId
) {
List<QuestionLectureGetVM> response = questionLectureService.getBySection(sectionId);
return ResponseEntity.status(HttpStatus.OK).body(response);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,27 @@ public interface QuestionLectureRepo extends JpaRepository<QuestionLecture, Long
where l.id = :lectureId
""")
List<QuestionLecture> getByLectureId(@Param("lectureId") Long lectureId);


@Query("""
select ql
from QuestionLecture ql
join ql.lecture l
join ql.student s
join l.section se
join se.course c
where c.id = :courseId
""")
List<QuestionLecture> getByCourse(@Param("courseId") Long courseId);


@Query("""
select ql
from QuestionLecture ql
join ql.lecture l
join ql.student s
join l.section se
where se.id = :sectionId
""")
List<QuestionLecture> getBySection(@Param("sectionId") Long sectionId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,8 @@ public interface QuestionLectureService {

List<QuestionLectureGetVM> getByLectureId(Long lectureId);

List<QuestionLectureGetVM> getByCourse(Long courseId);

List<QuestionLectureGetVM> getBySection(Long sectionId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,52 @@ public List<QuestionLectureGetVM> getByLectureId(Long lectureId) {
List<AnswerLecture> answerLectures = new ArrayList<>();


List<UserAnswer> userAnswers = userAnswerRepo.getByQuestionLectureId(questionLecture.getId());
for (UserAnswer userAnswer : userAnswers) {
answerLectures.add(AnswerLecture.fromModelUser(userAnswer));
}
List<StudentAnswer> studentAnswers = studentAnswerRepo.getByQuestionLectureId(questionLecture.getId());
for (StudentAnswer studentAnswer : studentAnswers) {
answerLectures.add(AnswerLecture.fromModelStudent(studentAnswer));
}
answerLectures.sort(Comparator.comparing(AnswerLecture::createdAt));
return QuestionLectureGetVM.fromModel(questionLecture, answerLectures);
}).toList();
return questionLectureGetVMS;
}

@Override
public List<QuestionLectureGetVM> getByCourse(Long courseId) {
List<QuestionLecture> questionLectures = questionLectureRepo.getByCourse(courseId);

List<QuestionLectureGetVM> questionLectureGetVMS = questionLectures.stream().map(questionLecture -> {

List<AnswerLecture> answerLectures = new ArrayList<>();


List<UserAnswer> userAnswers = userAnswerRepo.getByQuestionLectureId(questionLecture.getId());
for (UserAnswer userAnswer : userAnswers) {
answerLectures.add(AnswerLecture.fromModelUser(userAnswer));
}
List<StudentAnswer> studentAnswers = studentAnswerRepo.getByQuestionLectureId(questionLecture.getId());
for (StudentAnswer studentAnswer : studentAnswers) {
answerLectures.add(AnswerLecture.fromModelStudent(studentAnswer));
}
answerLectures.sort(Comparator.comparing(AnswerLecture::createdAt));
return QuestionLectureGetVM.fromModel(questionLecture, answerLectures);
}).toList();
return questionLectureGetVMS;
}

@Override
public List<QuestionLectureGetVM> getBySection(Long sectionId) {
List<QuestionLecture> questionLectures = questionLectureRepo.getBySection(sectionId);

List<QuestionLectureGetVM> questionLectureGetVMS = questionLectures.stream().map(questionLecture -> {

List<AnswerLecture> answerLectures = new ArrayList<>();


List<UserAnswer> userAnswers = userAnswerRepo.getByQuestionLectureId(questionLecture.getId());
for (UserAnswer userAnswer : userAnswers) {
answerLectures.add(AnswerLecture.fromModelUser(userAnswer));
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/backend/elearning/domain/review/Review.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public class Review {

private int ratingStar;

private String reasonRefused;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "course_id")
private Course course;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ public ResponseEntity<PageableData<ReviewGetListVM>> getPageableCategory (
}


// @PutMapping("/admin/reviews/{id}/status/{status}")
// public ResponseEntity<Void> updateReview(@PathVariable("status") boolean status, @PathVariable("id") Long reviewId){
// reviewService.updateStatusReview(status, reviewId);
// return ResponseEntity.noContent().build();
// }
@PutMapping("/admin/reviews/{id}/status")
public ResponseEntity<Void> updateReview(@RequestBody ReviewStatusPostVM reviewStatusPostVM, @PathVariable("id") Long reviewId){
reviewService.updateStatusReview(reviewStatusPostVM, reviewId);
return ResponseEntity.noContent().build();
}




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ public interface ReviewService {

PageableData<ReviewGetListVM> getPageableReviews(int pageNum, int pageSize, String keyword);

// void updateStatusReview(boolean status, Long reviewId);
void updateStatusReview(ReviewStatusPostVM statusPostVM, Long reviewId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.backend.elearning.domain.common.PageableData;
import com.backend.elearning.domain.course.Course;
import com.backend.elearning.domain.course.CourseRepository;
import com.backend.elearning.domain.course.CourseStatus;
import com.backend.elearning.domain.student.Student;
import com.backend.elearning.domain.student.StudentRepository;
import com.backend.elearning.domain.user.User;
Expand Down Expand Up @@ -147,9 +148,14 @@ public PageableData<ReviewGetListVM> getPageableReviews(int pageNum, int pageSiz
);
}

// @Override
// @Transactional
// public void updateStatusReview(boolean status, Long reviewId) {
// reviewRepository.updateStatusReview(status, reviewId);
// }
@Override
public void updateStatusReview(ReviewStatusPostVM statusPostVM, Long reviewId) {
Review review = reviewRepository.findById(reviewId).orElseThrow();
if (statusPostVM.status().equals(ReviewStatus.UNPUBLISHED) && statusPostVM.reason() != null) {
review.setReasonRefused(statusPostVM.reason());
}
review.setStatus(statusPostVM.status());
reviewRepository.saveAndFlush(review);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.backend.elearning.domain.review;

public record ReviewStatusPostVM(
ReviewStatus status,
String reason
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,18 @@ public ResponseEntity<List<StatisticCourse>> getStatisticProductByTime(
}

@PostMapping("/statistic/time/export")
public ResponseEntity<byte[]> exportData(@RequestParam("year") int year,
@RequestParam(value = "month", required = false) Integer month){
byte[] datas = statisticService.export(year, month);

public ResponseEntity<byte[]> exportByTime(
@RequestBody List<StatisticTime> request
){
byte[] datas = statisticService.export(request);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=statistics.xlsx");
return new ResponseEntity<>(datas, headers, HttpStatus.OK);
}

@PostMapping("/statistic/course/export")
public ResponseEntity<byte[]> exportData(@RequestParam("from") String from,
@RequestParam("to") String to){
byte[] datas = statisticService.exportByCourse(from, to);
public ResponseEntity<byte[]> exportByCourse(@RequestBody List<StatisticCourse> request){
byte[] datas = statisticService.exportByCourse(request);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=statistics.xlsx");
return new ResponseEntity<>(datas, headers, HttpStatus.OK);
Expand Down
Loading

0 comments on commit 5247aca

Please sign in to comment.