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

using BS.Shared;
using BS.Shared.DataContracts;

namespace BeWo.Service.ServiceContracts
{
    [ServiceContract]
    public interface IValueListService
    {
        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        void DeactivateValueListEntries(Dictionary<long, long> pOid2Version);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        void DeactivateValueListEntry(long pOid, long pVersion);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        void DeleteValueListEntries(Dictionary<long, long> pOid2Version);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        void DeleteValueListEntry(long pOid, long pVersion);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
		ValueListEntryDC[] GetAllValueListEntrysByType(ValueListEntryType pType);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
		ValueListEntryDC[] GetAllValueListEntrysByTypes(List<ValueListEntryType> pTypes);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        List<long> InsertNewValueListEntries(List<ValueListEntryDC> pEntries);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        void UpdateValueListEntries(List<ValueListEntryDC> pEntries);

		[FaultContract(typeof(BeWoFault))]
		[OperationContract]
	    ValueListEntryDC[] GetAllValueListEntriesByOidForType(long pOid);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        ValueListEntryDC InsertNewValueListEntry(ValueListEntryDC pEntry);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        ValueListEntryDC GetValueListEntryByOid(long pOid);

        [FaultContract(typeof(BeWoFault))]
        [OperationContract]
        List<ValueListEntryDC> InsertAndLoadNewValueListEntries(IEnumerable<ValueListEntryDC> pEntries);
    }
}