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 org.bson.types.ObjectId;

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

public interface IResourceAllocationService {


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

    void updateResource(ResourceAllocation resourceAllocation, String loginEmpId) throws MyTeamException;

    void deleteResource(ResourceAllocation resource, String loginEmpId);


    List<ResourceAllocation> getAllResourcesForAllActiveProjects();

    // Resource save(Resource resource);

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

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

    List<ResourceAllocation> getResourcesSortByBillingStartDate(String employeeId);

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

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

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

    List<ResourceVO> getActiveResources(String empId);



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

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

    public List<ResourceAllocation> getResourcesUnderDeliveryLead(String empId);


    public List<ResourceAllocation> 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 void deleteResourcesUnderProject(String projectId);


}
