package com.nisum.myteam.service;

import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.ResourceAllocation;
import com.nisum.myteam.model.vo.MyProjectAllocationVO;
import com.nisum.myteam.model.vo.ResourceVO;

import java.util.List;

public interface IResourceAllocationService {


    ResourceAllocation addResourceAllocation(ResourceAllocation resourceAllocation, String loginEmpId) throws MyTeamException;

    public void updateExistedResourceAlloc(ResourceAllocation resourceAlloc) throws MyTeamException;

    public void insertNewResourceAllocWithNewStatus(ResourceAllocation resourceAllocReq, String loginEmpId) throws MyTeamException;

    void deleteResource(ResourceAllocation resource, String loginEmpId);

    List<ResourceAllocation> getAllResourcesForAllActiveProjects();

    List<ResourceAllocation> getResourcesSortByBillingStartDate(String employeeId);

    List<ResourceVO> getActiveResources(String empId);


    public List<ResourceVO> getResourcesForProject(String projectId, String statusFlag);

    public List<ResourceAllocation> getResourcesUnderDeliveryLead(String empId);


    public List<ResourceVO> getBillingsForEmployee(String empId);


    public List<ResourceAllocation> getBillingsForProject(String empId, String projectId);


    public List<MyProjectAllocationVO> getWorkedProjectsForResource(String empId);


    public List<Employee> getUnAssignedEmployees();

    public List<ResourceAllocation> getAllResources();

    public List<ResourceVO> getAllResourcesVO();

    public void deleteResourcesUnderProject(String projectId);

    public ResourceAllocation addResourceToBenchProject(Employee employee, String loginEmpId) throws MyTeamException;


    // List<Resource> getResourcesForShift(String shift);

    // List<Resource> getAllResourcesForProject(String projectId, String status);

    //  List<Resource> getResourcesForEmployee(String empId);

    // List<Resource> getAllResourcesForProject(String projectId);

    // Resource save(Resource resource);

    //  void addResources(Employee employee, String loginEmpId);

    // void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId);

}
