package edu.gjoko.schedlr.services; import edu.gjoko.schedlr.entity.Business; import edu.gjoko.schedlr.entity.ServiceType; import edu.gjoko.schedlr.entity.Stakeholder; import edu.gjoko.schedlr.entity.StakeholderType; import edu.gjoko.schedlr.repositories.BusinessRepository; import edu.gjoko.schedlr.repositories.ServiceTypeRepository; import lombok.AllArgsConstructor; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import java.util.List; import static edu.gjoko.schedlr.entity.BusinessStatus.NEW; @Service @AllArgsConstructor public class BusinessService { private final BusinessRepository businessRepository; private final ServiceTypeRepository serviceTypeRepository; private BCryptPasswordEncoder bCryptPasswordEncoder; public void saveBusiness(Business business) { saveNewServiceTypes(business); business.getOwner().setStakeholderType(StakeholderType.BUSINESS_OWNER); business.getOwner().setPassword(bCryptPasswordEncoder.encode(business.getOwner().getPassword())); business.setBusinessStatus(NEW); businessRepository.save(business); } public void saveNewServiceTypes(Business business) { business.getServices() .stream() .forEach(service -> { if (service.getServiceType().getId() == null) { ServiceType serviceType = service.getServiceType(); serviceType.setBusinessType(business.getBusinessType()); service.setServiceType(serviceTypeRepository.save(serviceType)); } }); } public List findAll() { return businessRepository.findAll(); } public void updateBusinesses(List businessList) { businessList .stream() .forEach(business -> { businessRepository.save(business); }); } public Business findByOwner(Long ownerId) { var owner = new Stakeholder(); owner.setId(ownerId); return businessRepository.findBusinessByOwner(owner); } }