/*
 * 
 */
package com.bankaudit.service;

import java.util.Date;
import java.util.List;

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.model.MaintHoliday;
import com.bankaudit.util.ServiceStatus;


/**
 * The Interface {@link MaintHolidayService} define the methods that can be
 * exposed to controller layer in order to implements rest end-points and define
 * the business logic.
 *
 * @author amit.patel
 * @version 1.0
 */
public interface MaintHolidayService {

	/**
	 * This method is use to Creates the maint holiday.
	 *
	 * @param maintHoliday
	 *            specify the maint holiday
	 * @throws Exception
	 *             the exception
	 */
	void createMaintHoliday(MaintHoliday maintHoliday) throws Exception;

	/**
	 * This method is use to Update maint holiday.
	 *
	 * @param maintHoliday
	 *            specify the maint holiday
	 */
	void updateMaintHoliday(MaintHoliday maintHoliday);

	
	/**
	 * This method is use to Gets the maint holidays.
	 *
	 * @param legalEntityCodeStr
	 *            specify the legal entity code str
	 * @param search
	 *            specify the search
	 * @param orderColumn
	 *            specify the order column
	 * @param orderDirection
	 *            specify the order direction
	 * @param page
	 *            specify the page
	 * @param size
	 *            specify the size
	 * @return the data table response .
	 */
	DataTableResponse getMaintHolidays(Integer legalEntityCodeStr,String search, Integer orderColumn, String orderDirection, Integer page,
			Integer size);

	/**
	 * This method is use to Gets the maint holiday.
	 *
	 * @param id
	 *            specify the id
	 * @param status
	 *            specify the status
	 * @return the maint holiday .
	 */
	MaintHoliday getMaintHoliday(Integer id,String status);
	
	/**
	 * This method is use to Validate holiday.
	 *
	 * @param maintHoliday
	 *            specify the maint holiday
	 * @return the service status .
	 */
	ServiceStatus validateHoliday(MaintHoliday maintHoliday);
	
	void deleteHolidayByID(Integer legalEntityCode, Integer id, String userId);
	
	Integer getNumberOfBusinessDaysBetweenDates(Integer legalEntityCode,String unitCode,Date StDate,Date EnDate);

}
