Index: src/main/java/edu/gjoko/schedlr/services/AppointmentsService.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/services/AppointmentsService.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
+++ src/main/java/edu/gjoko/schedlr/services/AppointmentsService.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
@@ -0,0 +1,44 @@
+package edu.gjoko.schedlr.services;
+
+import edu.gjoko.schedlr.entity.Appointment;
+import edu.gjoko.schedlr.entity.Business;
+import edu.gjoko.schedlr.entity.Stakeholder;
+import edu.gjoko.schedlr.exceptions.BlockingTimeException;
+import edu.gjoko.schedlr.repositories.AppointmentRepository;
+import edu.gjoko.schedlr.repositories.ServiceRepository;
+import edu.gjoko.schedlr.repositories.ServiceTypeRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class AppointmentsService {
+
+    private final AppointmentRepository appointmentRepository;
+
+    private final ServiceRepository serviceRepository;
+
+    public void saveAppointment(Appointment appointment) {
+        var service = serviceRepository.findById(appointment.getService().getId()).get();
+        appointment.setEndTime(appointment.getStartTime().plusMinutes(service.getDuration()));
+        List<Appointment> blockingAppointments = appointmentRepository.
+                findBlockingAppointments(
+                        appointment.getBusiness().getId(), appointment.getStartTime(), appointment.getEndTime());
+
+        // check to see if there are blocking exceptions
+        if (blockingAppointments != null && !blockingAppointments.isEmpty()) {
+            throw new BlockingTimeException();
+        }
+        appointmentRepository.save(appointment);
+    }
+
+    public List<Appointment> getAppointmentsByBusiness(Business business) {
+        return appointmentRepository.getAppointmentsByBusiness(business);
+    }
+
+    private List<Appointment> getAppointmentsByCustomer(Stakeholder stakeholder) {
+        return appointmentRepository.getAppointmentsByCustomer(stakeholder);
+    }
+}
Index: src/main/java/edu/gjoko/schedlr/services/BusinessService.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/services/BusinessService.java	(revision 8bcd64c37eba4cd984953069331c9faa3a916671)
+++ src/main/java/edu/gjoko/schedlr/services/BusinessService.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
@@ -1,10 +1,9 @@
 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.entity.*;
 import edu.gjoko.schedlr.repositories.BusinessRepository;
+import edu.gjoko.schedlr.repositories.ServiceRepository;
 import edu.gjoko.schedlr.repositories.ServiceTypeRepository;
+import edu.gjoko.schedlr.repositories.StakeholderRepository;
 import lombok.AllArgsConstructor;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -13,4 +12,5 @@
 import java.util.List;
 
+import static edu.gjoko.schedlr.entity.BusinessStatus.ACTIVE;
 import static edu.gjoko.schedlr.entity.BusinessStatus.NEW;
 
@@ -21,4 +21,7 @@
     private final BusinessRepository businessRepository;
     private final ServiceTypeRepository serviceTypeRepository;
+    private final ServiceRepository serviceRepository;
+
+    private final StakeholderRepository stakeholderRepository;
     private BCryptPasswordEncoder bCryptPasswordEncoder;
 
@@ -51,4 +54,6 @@
                 .stream()
                 .forEach(business -> {
+                    stakeholderRepository.save(business.getOwner());
+                    serviceRepository.saveAll(business.getServices());
                     businessRepository.save(business);
                 });
@@ -60,3 +65,7 @@
         return businessRepository.findBusinessByOwner(owner);
     }
+
+    public List<Business> findByBusinessTypeAndActiveStatus(BusinessType businessType) {
+        return businessRepository.findBusinessesByBusinessTypeAndBusinessStatus(businessType, ACTIVE);
+    }
 }
Index: src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java	(revision 8bcd64c37eba4cd984953069331c9faa3a916671)
+++ src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
@@ -8,5 +8,4 @@
 import edu.gjoko.schedlr.repositories.StakeholderRepository;
 import lombok.RequiredArgsConstructor;
-import org.springframework.security.access.AccessDeniedException;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
@@ -15,5 +14,4 @@
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 
@@ -26,6 +24,4 @@
 
     private final StakeholderRepository stakeholderRepository;
-    private final BCryptPasswordEncoder bCryptPasswordEncoder;
-
     private final BusinessRepository businessRepository;
 
@@ -33,9 +29,9 @@
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
         Stakeholder user = stakeholderRepository.findStakeholderByUsername(username);
-        if(user == null) {
+        if (user == null) {
             throw new UsernameNotFoundException("Non existing user");
         }
 
-        if(user.getStakeholderType() == StakeholderType.BUSINESS_OWNER) {
+        if (user.getStakeholderType() == StakeholderType.BUSINESS_OWNER) {
             Business business = businessRepository.findBusinessByOwner(user);
             if (business.getBusinessStatus() != BusinessStatus.ACTIVE) {
Index: src/main/java/edu/gjoko/schedlr/services/StakeholderService.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/services/StakeholderService.java	(revision 8bcd64c37eba4cd984953069331c9faa3a916671)
+++ src/main/java/edu/gjoko/schedlr/services/StakeholderService.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
@@ -24,3 +24,7 @@
         return stakeholderRepository.save(stakeholder);
     }
+
+    public Stakeholder findById(Long id) {
+        return stakeholderRepository.findById(id).get();
+    }
 }
