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

using EQNetwork.Objects;
using EQNetwork.Utility;

namespace EQNetwork.Interfaces
{
    public partial interface IContentFileService
    {
        EQTask Get(int contentFileId, Action<ContentFile, EQException> onComplete);
        EQTask Get(string filename, Action<ContentFile, EQException> onComplete);

        EQTask Create(ContentFile contentFile, Action<ContentFile, EQException> onComplete);
        EQTask CreateFromUrl(ContentFile contentFile, string url, Action<ContentFile, EQException> onComplete);

        EQTask Update(ContentFile contentFile, Action<ContentFile, EQException> onComplete);
        EQTask UpdateSortBy(int contentFileId, float? sortBy, Action<EQException> onComplete);

        EQTask Delete(ContentFile contentFile, Action<EQException> onComplete);
        EQTask Delete(int contentFileId, Action<EQException> onComplete);

        EQTask ChangeCollection(int contentFileId, int old_CollectionId, int new_CollectionId, Action<EQException> onComplete);
        EQTask FlagAsInappropriate(int contentFileId, Action<EQException> onComplete);

        EQTask ListPosts(string filename, PagingParameters pagingParameters, Action<List<Post>, bool, EQException> onComplete);

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

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