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
    {
        Collection Get(int collectionId);
        Collection Get(Guid collectionGuid);

        void Create(ref Collection collection);

        void Update(ref Collection collection);

        void UploadIcon(int collectionId, string path);
        void UploadIcon(int collectionId, FileUploadSpec fileUploadSpec);
        void DeleteIcon(int collectionId);

        void Delete(Collection collection);
        void Delete(int collectionId);

        List<ContentFile> ListContentFiles(int collectionId, 
            ListContentFilesContext listContentFilesContext, 
            PagingParameters pagingParameters);

        void AddRelationship(int collectionId, Db.User_CollectionType user_CollectionType);
        void AddRelationship(int collectionId, Db.User_CollectionType user_CollectionType,
            int? collectionTriggerId, bool? silent);

        void SocialAdd(int collectionId, string action, Db.SocialService? exclude, bool? force);
        void SocialRemove(int collectionId, string action, bool? force);

        void MarkAsViewed(int collectionId);
    }
}
