using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using EQNetwork.Objects;
using EQNetwork.Utility;

namespace EQNetwork.Interfaces
{
    public partial interface ICollectionService
    {
        EQTask Get(int collectionId, Action<Collection, EQException> onComplete);
        EQTask Get(Guid collectionGuid, Action<Collection, EQException> onComplete);

        EQTask Create(Collection collection, Action<Collection, EQException> onComplete);

        EQTask Update(Collection collection, Action<Collection, EQException> onComplete);

        EQTask UploadIcon(int collectionId, string path, Action<Collection, EQException> onComplete);
        EQTask UploadIcon(int collectionId, FileUploadSpec fileUploadSpec, Action<Collection, EQException> onComplete);
        EQTask DeleteIcon(int collectionId, Action<Collection, EQException> onComplete);

        EQTask Delete(Collection collection, Action<EQException> onComplete);
        EQTask Delete(int collectionId, Action<EQException> onComplete);

        EQTask ListContentFiles(int collectionId,
            ListContentFilesContext listContentFilesContext,
            PagingParameters pagingParameters,
            Action<List<ContentFile>, bool, EQException> onComplete);

        EQTask AddRelationship(int collectionId, Db.User_CollectionType user_CollectionType, Action<EQException> onComplete);
        EQTask AddRelationship(int collectionId, Db.User_CollectionType user_CollectionType,
            int? collectionTriggerId, bool? silent, Action<EQException> onComplete);

        EQTask SocialAdd(int collectionId, string action, Db.SocialService? exclude, bool? force, Action<EQException> onComplete);
        EQTask SocialRemove(int collectionId, string action, bool? force, Action<EQException> onComplete);

        EQTask MarkAsViewed(int collectionId, Action<EQException> onComplete);
    }
}
