Skip to content
Snippets Groups Projects
UserServiceImp.java 5.51 KiB
Newer Older
saleem raja's avatar
saleem raja committed
package com.tcs.assignment.springbootassignment.service;

import com.tcs.assignment.springbootassignment.entity.Assignment;
import com.tcs.assignment.springbootassignment.entity.User;
import com.tcs.assignment.springbootassignment.model.AssignmentModel;
import com.tcs.assignment.springbootassignment.model.UserModel;
import com.tcs.assignment.springbootassignment.repository.AssignmentRepository;
import com.tcs.assignment.springbootassignment.repository.UserRepository;
import org.mindrot.jbcrypt.BCrypt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

@Service
public class UserServiceImp implements UserService {

    @Autowired
    private UserRepository userRepository;
    @Autowired
    private AssignmentRepository assignmentRepository;

    @Override
    public void createUser(UserModel userModel) {
        User user = new User();
saleem raja's avatar
saleem raja committed
        System.out.println(userModel);
saleem raja's avatar
saleem raja committed
        user.setUserName(userModel.getFirstname() + " " + userModel.getLastName());
        user.setFirstname(userModel.getFirstname());
        user.setLastName(userModel.getLastName());
        user.setPassword(BCrypt.hashpw(userModel.getPassword(), BCrypt.gensalt()));
        userRepository.save(user);
    }

    @Override
    public void createAssignment(AssignmentModel assignment) throws ParseException {

saleem raja's avatar
saleem raja committed
        System.out.println(assignment);
saleem raja's avatar
saleem raja committed
        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
        Assignment assignment1 = new Assignment();
        assignment1.setTitle(assignment.getTitle());
        assignment1.setType(assignment.getType());
        assignment1.setStartDate(format.format(assignment.getStartDate()));
        assignment1.setDueDate(format.format(assignment.getDueDate()));

//        System.out.println(assignment.getUserList().get(0).getId());
saleem raja's avatar
saleem raja committed
        List<User> users = assignment.getUserList();
saleem raja's avatar
saleem raja committed
        List<Long> jsonUserId = new ArrayList<>();
        System.out.println(users);
        for (Object user : users) {

            User user1 = (User) user;
            jsonUserId.add(user1.getUserId());
            assignment1.addUserList((User) user);
        }

//        System.out.println(jsonUserId);
        Assignment uniqueCheck = assignmentRepository.findByTitleAndType(assignment.getTitle(), assignment.getType());
        if (!Objects.nonNull(uniqueCheck)) {
            assignmentRepository.save(assignment1);
        } else {
            List<Long> user = assignmentRepository.findUsersWithAssignment(uniqueCheck.getAssignmentId());
            Collections.sort(user);
            Collections.sort(jsonUserId);

            if (!user.equals(jsonUserId)) {

                jsonUserId.removeAll(user);
                System.out.println(jsonUserId);
                for (Long id : jsonUserId) {
saleem raja's avatar
saleem raja committed
                    if (userRepository.existsById(id)) {
saleem raja's avatar
saleem raja committed

saleem raja's avatar
saleem raja committed
                        assignmentRepository.updateUserAssignment(uniqueCheck.getAssignmentId(), id);
saleem raja's avatar
saleem raja committed
                    }
                }
            }
saleem raja's avatar
saleem raja committed

saleem raja's avatar
saleem raja committed

        }
    }

    @Override
    public List<Assignment> getAllAssignments() {

        List<Assignment> assignmentList = assignmentRepository.findAll();
        return assignmentList;
    }

    @Override
    public Assignment getAssignmentById(Long id) {
        Optional<Assignment> assignmentList = assignmentRepository.findById(id);
        return assignmentList.get();
    }

    @Override
    public void updateAssignment(Long id, AssignmentModel assignmentModel) {
saleem raja's avatar
saleem raja committed
        System.out.println(assignmentModel);
saleem raja's avatar
saleem raja committed
        // UserModel userModel = new UserModel();
saleem raja's avatar
saleem raja committed
        Assignment assignment = assignmentRepository.findById(id).get();
        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
        if (Objects.nonNull(assignmentModel.getTitle()) && !"".equalsIgnoreCase(assignmentModel.getTitle())) {

            assignment.setTitle(assignmentModel.getTitle());
        }
        if (Objects.nonNull(assignmentModel.getStartDate()) && !"".equalsIgnoreCase(assignmentModel.getStartDate().toString())) {

            assignment.setStartDate(format.format(assignmentModel.getStartDate()));
        }
        if (Objects.nonNull(assignmentModel.getDueDate()) && !"".equalsIgnoreCase(assignmentModel.getDueDate().toString())) {

            assignment.setDueDate(format.format(assignmentModel.getDueDate()));
        }
        if (Objects.nonNull(assignmentModel.getDueDate()) && !"".equalsIgnoreCase(assignmentModel.getDueDate().toString())) {

            assignment.setDueDate(format.format(assignmentModel.getDueDate()));
        }
        if (Objects.nonNull(assignmentModel.getType()) && !"".equalsIgnoreCase(assignmentModel.getType())) {

            assignment.setType(assignmentModel.getType());
        }

        assignmentRepository.save(assignment);
    }

    @Override
    public void deleteAssignment(Long id) {
        assignmentRepository.deleteById(id);
    }

    @Override
saleem raja's avatar
saleem raja committed
    public List<Assignment> getAssignmentOfUser(Long id) {
saleem raja's avatar
saleem raja committed

saleem raja's avatar
saleem raja committed
        User userAssignment = userRepository.getAssignmentOfUserFromDataBase(id);
        List<Assignment> assignmentList = userAssignment.getAssignmentList();
        return assignmentList;
    }

    @Override
    public List<User> getUsers() {
        return userRepository.findAll();
    }

    @Override
    public void deleteUserById(Long id) {
        userRepository.deleteById(id);
    }

    @Override
    public void addUserForAssignment(Long userID, Long assignId) {
        assignmentRepository.updateUserAssignment(assignId, userID);
saleem raja's avatar
saleem raja committed
    }
}