package com.nisum.myteam.service;

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

import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.*;

public interface IProjectService {

	Project createProject(Project project, String loginEmpId) throws MyTeamException;

	Project updateProject(Project project, String loginEmpId) throws MyTeamException;

	void deleteProject(String projectId);

	List<Project> getProjectsUnderDomain(String domainId);

	List<HashMap<Object, Object>> getProjects() throws MyTeamException;

	List<Project> getProjectsUnderDeliveryLead(String managerId) throws MyTeamException;

	public Resource addNewBeanchAllocation(Employee employee, String loginEmpId);

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

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

	List<Resource> getResourcesUnderProject(String empId);

	List<Employee> getUnAssignedEmployees();

	public List<EmployeeDashboardVO> getEmployeesDashBoard();

	public String addProjectTeamMateWithCheck(Resource projectTeamMate, String loginEmpId) throws MyTeamException;

	public List<HashMap<Object, Object>> getProjectsForEmployee(String empId);

	public Set<String> accountsAssignedToDl(String empId);

	public List<HashMap<Object, Object>> deliveryLeadProjects(String empId) throws MyTeamException;

	public List<Project> getAllProjects();

	public boolean isProjectExists(String projectName);

	public boolean isProjectExistsById(String projectId);

	public long getProjectsCount();

	public Account getProjectAccount(String accountId);

	public Account updateProjSeqinAccount(Account account) throws MyTeamException;


	public List<HashMap<Object, Object>> getRoleBasedProjects(String empId) throws MyTeamException;
	public List<HashMap<Object, Object>> getProjectsInsteadOfRole() throws MyTeamException;
}
