package com.nisum.myteam.service;

import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.Account;
import com.nisum.myteam.model.dao.Employee;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Set;

@Service
public interface IEmployeeService {

    boolean isEmployeeExistsById(String employeeId);

    Employee createEmployee(Employee employeeRoles, String empId) throws MyTeamException;

    Employee updateEmployee(Employee employeeRoles, String empId);

    Employee deleteEmployee(String empId);

    Employee updateProfile(Employee employeeRoles) throws MyTeamException;

    Employee getEmployeeById(String empId);

    Employee getEmployeeByEmaillId(String emailId);

    List<Employee> getManagers() throws MyTeamException;

    List<Employee> getActiveEmployees() throws MyTeamException;

    List<Employee> getEmployeesByStatus(String status);

    List<Account> getAccounts() throws MyTeamException;

    Employee getEmployeeRoleDataForSearchCriteria(String searchId, String searchAttribute);

    List<String> getEmployeeDetailsForAutocomplete();

    List<HashMap<String, String>> getDeliveryLeads(String domainId);

    List<Employee> getEmployeesByFunctionalGrp(String functionalGrp);

    boolean verifyEmployeeRole(String empId, String roleName);

    List<Employee> getEmployeesFromList(Set<String> empIdsSet);

    List<HashMap<String, String>> getDeliveryManagerMap(List deliveryManagerIdsList);

    public List<Employee> getAllEmployees();

}
