using System;
using System.Collections.Generic;
using System.IO;
using System.ServiceModel;

using BeWo.Service.ServiceContracts;

using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;

namespace ReportingService.ServiceContracts
{
	[ServiceContract]
	public interface IReportService
	{
		[FaultContract(typeof (BeWoFault))]
		[OperationContract]
		MemoryStream CreateKalenderReport(IEnumerable<long> appointmentOids, long? employeeOid, IEnumerable<SchedulerAppointmentDC> serientermine, IEnumerable<DateTime> selectedDates, IEnumerable<SchedulerAppointmentDC> mehrtaegigeTermine);

		[FaultContract(typeof(BeWoFault))]
		[OperationContract]
        MemoryStream CreateKassenbuchReport(DateTime zeitraum, BargeldkassenDC bargeldkasse, long objectOid, TableID objectTid);

		[FaultContract(typeof(BeWoFault))]
		[OperationContract]
        MemoryStream CreateKassenbelegReport(BargeldtransaktionDC transaktion, long objectOid, TableID objectTid);

		[FaultContract(typeof(BeWoFault))]
		[OperationContract]
		Dictionary<CompactEmployeeDC, decimal> GetMitarbeiterverfuegbarkeiten(List<CompactEmployeeDC> employees, DateTime startDate, DateTime endDate);

		[FaultContract(typeof(BeWoFault))]
		[OperationContract]
		MemoryStream CreateServiceRecordListReport(long employeeOid, long customerOid, long supportConceptOid, long costbearer2SupportConceptOid, bool isLimited, DateTimeSpan limitingDateTimeSpan);
	}
}