package com.nisum.mytime.service;

import java.text.ParseException;
import java.util.HashMap;
import java.util.List;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
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.Domain;
import com.nisum.mytime.model.EmpLoginData;
import com.nisum.mytime.model.EmployeeLocationDetails;
import com.nisum.mytime.model.Employee;
import com.nisum.mytime.model.Location;
import com.nisum.mytime.model.MasterData;
import com.nisum.mytime.model.Shift;
import com.nisum.mytime.model.Skill;

@Service
public interface IEmployeeService {

	List<Employee> getManagers()throws MyTimeException;
	
    Boolean fetchEmployeesData(String perticularDate, boolean resynchFlag)
            throws MyTimeException;

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

    List<Employee> getActiveEmployees() throws MyTimeException;

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

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

    List generatePdfReport(long id, String fromDate, String toDate,String fromTime,String toTime)
            throws MyTimeException, ParseException; 
    
    Employee getEmployeeByEmaillId(String emailId);

    void deleteEmployee(String empId);

    Employee updateEmployeeRole(Employee employeeRoles,String empId);

    void updateEmployeeLocationDetails(Employee employeeRoles,
            boolean delete);

    //void saveEmployeeLocationDetails(Employee employeeRoles);

    Employee getEmployeesRoleData(String empId);

    //List<EmployeeLocationDetails> getEmployeeLocationDetails(String empId);

   // List<Shift> getAllShifts() throws MyTimeException;

   // List<Designation> getAllDesignations() throws MyTimeException;

    //List<Skill> getTechnologies() throws MyTimeException;

    public Employee updateProfile(Employee employeeRoles)
            throws MyTimeException;

    public List<Account> getAccounts() throws MyTimeException;

    //List<Location> getLocations() throws MyTimeException;

    Employee getEmployeeRoleDataForSearchCriteria(String searchId,
            String searchAttribute);

    List<String> getEmployeeDetailsForAutocomplete();

    //List<MasterData> getMasterData() throws MyTimeException;

    List<Employee> getEmployeesByFunctionalGrp(String functionalGrp);

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