package com.nisum.mytime.service;

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

import org.springframework.web.multipart.MultipartFile;

import com.nisum.mytime.exception.handler.MyTimeException;
import com.nisum.mytime.model.Account;
import com.nisum.mytime.model.AccountInfo;
import com.nisum.mytime.model.Designation;
import com.nisum.mytime.model.Domains;
import com.nisum.mytime.model.EmpLoginData;
import com.nisum.mytime.model.EmployeeLocationDetails;
import com.nisum.mytime.model.EmployeeRoles;
import com.nisum.mytime.model.Location;
import com.nisum.mytime.model.MasterData;
import com.nisum.mytime.model.Shift;
import com.nisum.mytime.model.Skill;

public interface UserService {

    Boolean fetchEmployeesData(String perticularDate, boolean resynchFlag)
            throws MyTimeException;

    List<EmpLoginData> employeeLoginsBasedOnDate(long id, String fromDate,
            String toDate) throws MyTimeException;

    List<EmployeeRoles> getEmployeeRoles() throws MyTimeException;

    EmployeeRoles assigingEmployeeRole(EmployeeRoles employeeRoles, String empId)
            throws MyTimeException;

    String generatePdfReport(long id, String fromDate, String toDate)
            throws MyTimeException;

    EmployeeRoles getEmployeesRole(String emailId);

    void deleteEmployee(String empId);

    EmployeeRoles updateEmployeeRole(EmployeeRoles employeeRoles,String empId);

    void updateEmployeeLocationDetails(EmployeeRoles employeeRoles,
            boolean delete);

    void saveEmployeeLocationDetails(EmployeeRoles employeeRoles);

    EmployeeRoles getEmployeesRoleData(String empId);

    List<EmployeeLocationDetails> getEmployeeLocationDetails(String empId);

    List<Shift> getAllShifts() throws MyTimeException;

    List<Designation> getAllDesignations() throws MyTimeException;

    List<Skill> getTechnologies() throws MyTimeException;

    public EmployeeRoles updateProfile(EmployeeRoles employeeRoles)
            throws MyTimeException;

    public List<Account> getAccounts() throws MyTimeException;

    List<Location> getLocations() throws MyTimeException;

    EmployeeRoles getEmployeeRoleDataForSearchCriteria(String searchId,
            String searchAttribute);

    List<String> getEmployeeDetailsForAutocomplete();

    List<MasterData> getMasterData() throws MyTimeException;

    List<EmployeeRoles> getEmployeesByFunctionalGrp(String functionalGrp);

    List<EmployeeRoles> getEmployeesByStatus(String status);
    
    List<HashMap<String, String>> getDeliveryLeads(String domainId);
    
    public List<AccountInfo> getAccountsInfo() throws MyTimeException;
    
    public List<Domains> getDomains(String accountId)throws MyTimeException;
    
    public boolean verifyRole(String empId, String roleName);
    
    String exportDataFromExcelFile(MultipartFile file, String empId) throws MyTimeException;
}
