source: src/main/java/edu/gjoko/schedlr/services/ServicesService.java@ f29cd58

Last change on this file since f29cd58 was f29cd58, checked in by gjoko kostadinov <gjokokostadinov@…>, 6 months ago

Add services search functionality.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1package edu.gjoko.schedlr.services;
2
3import edu.gjoko.schedlr.entity.Business;
4import edu.gjoko.schedlr.entity.ServiceStatus;
5import edu.gjoko.schedlr.entity.ServiceType;
6import edu.gjoko.schedlr.repositories.BusinessRepository;
7import edu.gjoko.schedlr.repositories.ServiceRepository;
8import edu.gjoko.schedlr.repositories.ServiceTypeRepository;
9import lombok.AllArgsConstructor;
10import org.springframework.stereotype.Service;
11import org.springframework.util.CollectionUtils;
12
13import javax.transaction.Transactional;
14import java.util.List;
15import java.util.Optional;
16
17@Service
18@AllArgsConstructor
19public class ServicesService {
20
21 private final ServiceRepository serviceRepository;
22 private final ServiceTypeRepository serviceTypeRepository;
23 private final BusinessRepository businessRepository;
24
25 @Transactional
26 public void deleteByIds(List<Long> ids) {
27 ids.forEach(this::deactivateService);
28 }
29
30 public List<edu.gjoko.schedlr.entity.Service> getServicesByKeyword(String keyword) {
31 return serviceRepository.getServicesByKeyword(keyword);
32 }
33
34 public void saveOrUpdateServices(List<edu.gjoko.schedlr.entity.Service> serviceList, Long ownerId) {
35 if (!CollectionUtils.isEmpty(serviceList)) {
36 serviceList.forEach( service -> {
37 Optional<edu.gjoko.schedlr.entity.Service> foundOptional;
38 if (service.getId() != null && (foundOptional = serviceRepository.findById(service.getId())).isPresent()) {
39 var found = foundOptional.get();
40 found.setDuration(service.getDuration());
41 found.setPrice(service.getPrice());
42 found.setServiceStatus(ServiceStatus.ACTIVE);
43 found.setDescription(service.getDescription());
44 serviceRepository.save(found);
45 } else {
46 var business = businessRepository.findBusinessesByOwner_Id(ownerId);
47 service.getServiceType().setBusinessType(business.getBusinessType());
48 service.setServiceStatus(ServiceStatus.ACTIVE);
49 service.setBusiness(business);
50 serviceTypeRepository.save(service.getServiceType());
51 serviceRepository.save(service);
52 }
53 });
54 }
55 }
56
57 public void saveNewServiceTypes(Business business) {
58 business.getServices()
59 .forEach(service -> {
60 if (service.getServiceType().getId() == null) {
61 ServiceType serviceType = service.getServiceType();
62 serviceType.setBusinessType(business.getBusinessType());
63 service.setServiceType(serviceTypeRepository.save(serviceType));
64 }
65 });
66 }
67
68 private void deactivateService(Long id) {
69 Optional<edu.gjoko.schedlr.entity.Service> serviceOptional;
70 if((serviceOptional = serviceRepository.findById(id)).isPresent()) {
71 var service = serviceOptional.get();
72 service.setServiceStatus(ServiceStatus.INACTIVE);
73 serviceRepository.save(service);
74 }
75 }
76}
Note: See TracBrowser for help on using the repository browser.