source: src/main/java/edu/gjoko/schedlr/services/BusinessService.java@ 950fa0d

Last change on this file since 950fa0d was 950fa0d, checked in by Gjoko Kostadinov <gjoko.kostadinov@…>, 13 months ago

Periodic update

  • Property mode set to 100644
File size: 2.6 KB
Line 
1package edu.gjoko.schedlr.services;
2
3import edu.gjoko.schedlr.entity.*;
4import edu.gjoko.schedlr.repositories.BusinessRepository;
5import edu.gjoko.schedlr.repositories.ServiceRepository;
6import edu.gjoko.schedlr.repositories.ServiceTypeRepository;
7import edu.gjoko.schedlr.repositories.StakeholderRepository;
8import lombok.AllArgsConstructor;
9import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
10import org.springframework.stereotype.Service;
11
12import java.util.List;
13
14import static edu.gjoko.schedlr.entity.BusinessStatus.ACTIVE;
15import static edu.gjoko.schedlr.entity.BusinessStatus.NEW;
16
17@Service
18@AllArgsConstructor
19public class BusinessService {
20
21 private final BusinessRepository businessRepository;
22 private final ServiceTypeRepository serviceTypeRepository;
23 private final ServiceRepository serviceRepository;
24
25 private final StakeholderRepository stakeholderRepository;
26 private BCryptPasswordEncoder bCryptPasswordEncoder;
27
28 public void saveBusiness(Business business) {
29 saveNewServiceTypes(business);
30 business.getOwner().setStakeholderType(StakeholderType.BUSINESS_OWNER);
31 business.getOwner().setPassword(bCryptPasswordEncoder.encode(business.getOwner().getPassword()));
32 business.setBusinessStatus(NEW);
33 businessRepository.save(business);
34 }
35
36 public void saveNewServiceTypes(Business business) {
37 business.getServices()
38 .stream()
39 .forEach(service -> {
40 if (service.getServiceType().getId() == null) {
41 ServiceType serviceType = service.getServiceType();
42 serviceType.setBusinessType(business.getBusinessType());
43 service.setServiceType(serviceTypeRepository.save(serviceType));
44 }
45 });
46 }
47
48 public List<Business> findAll() {
49 return businessRepository.findAll();
50 }
51
52 public void updateBusinesses(List<Business> businessList) {
53 businessList
54 .stream()
55 .forEach(business -> {
56 stakeholderRepository.save(business.getOwner());
57 serviceRepository.saveAll(business.getServices());
58 businessRepository.save(business);
59 });
60 }
61
62 public Business findByOwner(Long ownerId) {
63 var owner = new Stakeholder();
64 owner.setId(ownerId);
65 return businessRepository.findBusinessByOwner(owner);
66 }
67
68 public List<Business> findByBusinessTypeAndActiveStatus(BusinessType businessType) {
69 return businessRepository.findBusinessesByBusinessTypeAndBusinessStatus(businessType, ACTIVE);
70 }
71}
Note: See TracBrowser for help on using the repository browser.