Index: src/main/java/it/finki/tinki/controller/RegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/controller/RegisterController.java	(revision 721cb87737b3d6d8f2ba84c1f9091d41137cb8d4)
+++ src/main/java/it/finki/tinki/controller/RegisterController.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
@@ -1,11 +1,16 @@
 package it.finki.tinki.controller;
 
-import it.finki.tinki.repository.AddressRepository;
-import it.finki.tinki.repository.CompanyRepository;
-import it.finki.tinki.repository.TeamRepository;
-import it.finki.tinki.repository.UserRepository;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.model.Users.Account;
+import it.finki.tinki.model.Users.User;
+import it.finki.tinki.service.AccountService;
+import it.finki.tinki.service.SkillService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @RestController
@@ -14,5 +19,35 @@
 public class RegisterController {
 
+    AccountService accountService;
+    SkillService skillService;
 
+    public RegisterController(AccountService accountService, SkillService skillService) {
+        this.accountService = accountService;
+        this.skillService = skillService;
+    }
+
+    @RequestMapping(path = "/user", method = RequestMethod.POST)
+    private Map<String, String> registerUser(@RequestParam String email,
+                                                @RequestParam String password,
+                                                @RequestParam String name,
+                                                @RequestParam String surname,
+                                                @RequestParam List<Integer> retainedSkills,
+                                                @RequestParam List<Integer> skillsToLearn){
+
+        List<Skill> retained = this.skillService.returnSkillsBasedOnId(retainedSkills);
+        List<Skill> toLearn = this.skillService.returnSkillsBasedOnId(skillsToLearn);
+
+        Account k = this.accountService.registerUser(email, password, name, surname, retained, toLearn);
+
+        Map<String, String> response = new HashMap<>();
+
+        if(k!=null){
+            response.put("error", "There was an error when trying to register user.");
+        }else{
+            response.put("success", "Registration completed successfully.");
+        }
+
+        return response;
+    }
 
 
Index: src/main/java/it/finki/tinki/model/exception/SkillNotFoundException.java
===================================================================
--- src/main/java/it/finki/tinki/model/exception/SkillNotFoundException.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
+++ src/main/java/it/finki/tinki/model/exception/SkillNotFoundException.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
@@ -0,0 +1,7 @@
+package it.finki.tinki.model.exception;
+
+public class SkillNotFoundException extends RuntimeException{
+    public SkillNotFoundException(Long id){
+        super(String.format("Skill with id: %d was not found!", id));
+    }
+}
Index: src/main/java/it/finki/tinki/repository/SkillRepository.java
===================================================================
--- src/main/java/it/finki/tinki/repository/SkillRepository.java	(revision 721cb87737b3d6d8f2ba84c1f9091d41137cb8d4)
+++ src/main/java/it/finki/tinki/repository/SkillRepository.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
@@ -5,5 +5,8 @@
 import org.springframework.stereotype.Repository;
 
+import java.util.Optional;
+
 @Repository
 public interface SkillRepository extends JpaRepository<Skill, Long> {
+    Optional<Skill> findById(Long id);
 }
Index: src/main/java/it/finki/tinki/service/SkillService.java
===================================================================
--- src/main/java/it/finki/tinki/service/SkillService.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
+++ src/main/java/it/finki/tinki/service/SkillService.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
@@ -0,0 +1,9 @@
+package it.finki.tinki.service;
+
+import it.finki.tinki.model.Skill;
+
+import java.util.List;
+
+public interface SkillService {
+    List<Skill> returnSkillsBasedOnId(List<Integer> skillIds);
+}
Index: src/main/java/it/finki/tinki/service/impl/AccountServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/AccountServiceImpl.java	(revision 721cb87737b3d6d8f2ba84c1f9091d41137cb8d4)
+++ src/main/java/it/finki/tinki/service/impl/AccountServiceImpl.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
@@ -40,13 +40,13 @@
 
         if(type.equals(AccountType.USER)){
-            User u1 = userRepository.findByEmailAndPassword(email, password);
+            User u1 = this.userRepository.findByEmailAndPassword(email, password);
             return u1;
         }
         else if(type.equals(AccountType.TEAM)){
-            Team t1 = teamRepository.findByEmailAndPassword(email, password);
+            Team t1 = this.teamRepository.findByEmailAndPassword(email, password);
             return t1;
         }
         else if(type.equals(AccountType.COMPANY)){
-            Company c1 = companyRepository.findByEmailAndPassword(email, password);
+            Company c1 = this.companyRepository.findByEmailAndPassword(email, password);
             return c1;
         }
Index: src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
+++ src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java	(revision 4a15c9c4b01a12cd4a7cb247e5225adafc57e80a)
@@ -0,0 +1,32 @@
+package it.finki.tinki.service.impl;
+
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.model.exception.SkillNotFoundException;
+import it.finki.tinki.repository.SkillRepository;
+import it.finki.tinki.service.SkillService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class SkillServiceImpl implements SkillService {
+
+    SkillRepository skillRepository;
+
+    public SkillServiceImpl(SkillRepository skillRepository) {
+        this.skillRepository = skillRepository;
+    }
+
+    @Override
+    public List<Skill> returnSkillsBasedOnId(List<Integer> skillIds) {
+
+        List<Skill> list = new ArrayList<>();
+
+        skillIds.forEach(skill -> {
+            this.skillRepository.findById(Long.valueOf(skill)).ifPresent(list::add);
+        });
+
+        return list;
+    }
+}
