Skip to content

Commit 36847a1

Browse files
committed
Faq CRUD is done.
1 parent 942ccff commit 36847a1

File tree

4 files changed

+145
-0
lines changed

4 files changed

+145
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.manir.springbootecommercerestapi.controller;
2+
3+
import com.manir.springbootecommercerestapi.dto.FaqDto;
4+
import com.manir.springbootecommercerestapi.service.FaqService;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.http.HttpStatus;
7+
import org.springframework.http.ResponseEntity;
8+
import org.springframework.security.access.prepost.PreAuthorize;
9+
import org.springframework.web.bind.annotation.*;
10+
11+
import java.util.List;
12+
13+
@RestController
14+
@RequestMapping("api/v1/faq")
15+
public class FaqController {
16+
@Autowired
17+
private FaqService faqService;
18+
19+
//add faq api
20+
@PreAuthorize("hasRole('ADMIN')")
21+
@PostMapping("/addFaq")
22+
public ResponseEntity<FaqDto> addFaq(@RequestBody FaqDto faqDto){
23+
FaqDto addedFaq = faqService.addFaq(faqDto);
24+
return new ResponseEntity<>(addedFaq, HttpStatus.CREATED);
25+
}
26+
//list all faqs api
27+
@PreAuthorize("hasRole('ADMIN')")
28+
@GetMapping("/getAllFaqs")
29+
public List<FaqDto> listAllFaqs(){
30+
List<FaqDto> faqs = faqService.listAllFaqs();
31+
return faqs;
32+
}
33+
34+
//get faq by id api
35+
@PreAuthorize("hasRole('ADMIN')")
36+
@GetMapping("/{id}")
37+
public ResponseEntity<FaqDto> getFaqById(@PathVariable Long id){
38+
FaqDto faq = faqService.getFaqById(id);
39+
return new ResponseEntity<>(faq, HttpStatus.OK);
40+
}
41+
42+
//update faq api
43+
@PreAuthorize("hasRole('ADMIN')")
44+
@PutMapping("/updateFaq/{id}")
45+
public ResponseEntity<FaqDto> updateFaq(@RequestBody FaqDto faqDto, @PathVariable Long id){
46+
FaqDto updatedFaq = faqService.updateFaq(faqDto, id);
47+
return new ResponseEntity<>(updatedFaq, HttpStatus.OK);
48+
}
49+
50+
//delete faq api
51+
@PreAuthorize("hasRole('ADMIN')")
52+
@DeleteMapping("/deleteFaq/{id}")
53+
public ResponseEntity<String> deleteFaq(@PathVariable Long id){
54+
faqService.deleteFaq(id);
55+
return new ResponseEntity<>("Faq with id: "+id+ " is deleted successfully", HttpStatus.OK);
56+
}
57+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.manir.springbootecommercerestapi.repository;
2+
3+
import com.manir.springbootecommercerestapi.model.Faq;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface FaqRepository extends JpaRepository<Faq, Long> {
7+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.manir.springbootecommercerestapi.service;
2+
3+
import com.manir.springbootecommercerestapi.dto.FaqDto;
4+
5+
import java.util.List;
6+
7+
public interface FaqService {
8+
FaqDto addFaq(FaqDto faqDto);
9+
List<FaqDto> listAllFaqs();
10+
FaqDto getFaqById(Long id);
11+
FaqDto updateFaq(FaqDto faqDto, Long id);
12+
void deleteFaq(Long id);
13+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.manir.springbootecommercerestapi.service.Impl;
2+
3+
import com.manir.springbootecommercerestapi.dto.FaqDto;
4+
import com.manir.springbootecommercerestapi.exception.ResourceNotFoundException;
5+
import com.manir.springbootecommercerestapi.model.Faq;
6+
import com.manir.springbootecommercerestapi.repository.FaqRepository;
7+
import com.manir.springbootecommercerestapi.service.FaqService;
8+
import lombok.AllArgsConstructor;
9+
import org.modelmapper.ModelMapper;
10+
import org.springframework.stereotype.Service;
11+
12+
import javax.annotation.Resource;
13+
import java.util.List;
14+
import java.util.stream.Collectors;
15+
16+
@Service
17+
@AllArgsConstructor
18+
public class FaqServiceImpl implements FaqService {
19+
@Resource(name = "faqRepository")
20+
private final FaqRepository faqRepository;
21+
@Resource(name = "modelMapper")
22+
private final ModelMapper modelMapper;
23+
24+
@Override
25+
public FaqDto addFaq(FaqDto faqDto) {
26+
Faq faq = mapToEntity(faqDto);
27+
Faq addedFaq = faqRepository.save(faq);
28+
29+
return mapToDto(addedFaq);
30+
}
31+
32+
@Override
33+
public List<FaqDto> listAllFaqs() {
34+
List<Faq> faqs = faqRepository.findAll();
35+
return faqs.stream().map(faq -> mapToDto(faq)).collect(Collectors.toList());
36+
}
37+
38+
@Override
39+
public FaqDto getFaqById(Long id) {
40+
Faq faq = faqRepository.findById(id).orElseThrow(()->new ResourceNotFoundException("Faq", id));
41+
return mapToDto(faq);
42+
}
43+
44+
@Override
45+
public FaqDto updateFaq(FaqDto faqDto, Long id) {
46+
Faq faq = faqRepository.findById(id).orElseThrow(()->new ResourceNotFoundException("Faq", id));
47+
faq.setQuestion(faqDto.getQuestion());
48+
faq.setAnswer(faqDto.getAnswer());
49+
Faq updatedFaq = faqRepository.save(faq);
50+
return mapToDto(updatedFaq);
51+
}
52+
53+
@Override
54+
public void deleteFaq(Long id) {
55+
Faq faq = faqRepository.findById(id).orElseThrow(()->new ResourceNotFoundException("Faq", id));
56+
faqRepository.delete(faq);
57+
}
58+
59+
private FaqDto mapToDto(Faq faq){
60+
FaqDto faqDto = modelMapper.map(faq, FaqDto.class);
61+
return faqDto;
62+
}
63+
//map to entity
64+
private Faq mapToEntity(FaqDto faqDto){
65+
Faq faq = modelMapper.map(faqDto, Faq.class);
66+
return faq;
67+
}
68+
}

0 commit comments

Comments
 (0)