/**
 * GUISearchHelper.java
 * Created on Jun 27, 2008
 * (C) Copyright TANDBERG Television Ltd.
 */
package com.tandbergtv.watchpoint.pmm.web.util;

import static com.tandbergtv.watchpoint.pmm.schedule.search.ScheduleSearchKey.ACTIVE;
import static com.tandbergtv.watchpoint.pmm.schedule.search.ScheduleSearchKey.CONTEXT;
import static com.tandbergtv.watchpoint.pmm.schedule.search.ScheduleSearchKey.PITCH_DATE;
import static com.tandbergtv.workflow.driver.search.SearchType.DATE;
import static com.tandbergtv.workflow.driver.search.SearchType.NUMERIC;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;

import com.tandbergtv.watchpoint.pmm.entities.DistributionSchedule;
import com.tandbergtv.watchpoint.pmm.entities.Planner;
import com.tandbergtv.watchpoint.pmm.entities.Schedule;
import com.tandbergtv.watchpoint.pmm.schedule.search.IScheduleSearchService;
import com.tandbergtv.watchpoint.search.Entity;
import com.tandbergtv.workflow.core.service.ServiceRegistry;
import com.tandbergtv.workflow.driver.search.RangeParameter;
import com.tandbergtv.workflow.driver.search.SearchType;
import com.tandbergtv.workflow.driver.search.SortParameter;
import com.tandbergtv.workflow.driver.search.ValueParameter;
import com.tandbergtv.workflow.util.SearchCriteria;
import com.tandbergtv.workflow.util.SortingOrder;

/**
 * @author Vlada Jakobac
 * 
 */
public class GUISearchHelper {

	private static final int FIVE_RECORDS = 5;

	public static Collection<Schedule> getCurrentPitchSchedules(Long contextId) {
		SearchCriteria criteria = new SearchCriteria();
		Entity e = new Entity("pitch", DistributionSchedule.class, "d");

		e.addParameter(new ValueParameter(ACTIVE.toString(), NUMERIC, 1));
		e.addParameter(new ValueParameter(CONTEXT.toString(), NUMERIC,
				contextId));

		Date today = new Date();
		RangeParameter range = new RangeParameter(PITCH_DATE.toString(),
				SearchType.DATE, new SimpleDateFormat("yyyy-MM-dd")
						.format(today));
		e.addParameter(range);

		e.addParameter(new SortParameter(PITCH_DATE.toString(),
				SortingOrder.ASCENDING));

		criteria.addParameter(e);
		criteria.setRecordsCount(FIVE_RECORDS);
		IScheduleSearchService searchService = ServiceRegistry.getDefault()
				.lookup(IScheduleSearchService.class);

		Collection<Schedule> lsSchedules = searchService.search(criteria);
		return lsSchedules;
	}

	public static Collection<Schedule> getCurrentPlanners(Long partnerId) {
		SearchCriteria criteria = new SearchCriteria();
		Entity e = new Entity("planner", Planner.class, "p");

		e.addParameter(new ValueParameter(ACTIVE.toString(), NUMERIC, 1));
		e
				.addParameter(new ValueParameter("sourcePartnerID", NUMERIC,
						partnerId));

		Date today = new Date();
		RangeParameter range = new RangeParameter("date", DATE,
				new SimpleDateFormat("yyyy-MM-dd").format(today));
		e.addParameter(range);

		e.addParameter(new SortParameter("date", SortingOrder.ASCENDING));

		criteria.addParameter(e);
		criteria.setRecordsCount(FIVE_RECORDS);
		IScheduleSearchService searchService = ServiceRegistry.getDefault()
				.lookup(IScheduleSearchService.class);

		Collection<Schedule> lsSchedules = searchService.search(criteria);
		return lsSchedules;
	}

}
