using System;
using System.Data;
using System.Configuration;
using System.Text;
using TABS.MailCarrier.WebSDK.Filebox;

/// <summary>
/// 파일박스 부분에서 사용되는 유틸리티 메서드 제공
/// </summary>
public class FileboxUtil
{
    public const string PrivateID = "e6b50b7a-8198-436b-b154-84069918f027";
    public const string ShareID = "05cc01cf-bb67-4044-a35c-9892fee27f50";
    public const string GuestID = "d5e9f428-2912-4664-a051-2e88141eaef9";

    [Flags]
    public enum FolderFlag
    {
        None = 0x00000000,
        Root = 0x00000001,
        Sub = 0x00000002
    }

    [Flags]
    public enum FolderType
    {
        Private = 0x00000000,
        Share = 0x00000001,
        Guest = 0x00000002
    }

    public FileboxUtil()
    {
    }

    public static string GetMyFileboxImageName(FolderFlag flag)
    {
        if ((flag & FolderFlag.Root) > 0)
        {
            return "my_filebox_16.gif";
        }
        else
        {
            return "my_folder_16.gif";
        }
    }

    public static string GetShareFileboxImageName(FolderFlag flag)
    {
        if ((flag & FolderFlag.Root) > 0)
        {
            return "share_filebox_16.gif";
        }
        else
        {
            return "share_folder_16.gif";
        }
    }

    public static string GetGuestFileboxImageName(FolderFlag flag)
    {
        if ((flag & FolderFlag.Root) > 0)
        {
            return "guest_filebox_16.gif";
        }
        else
        {
            return "guest_folder_16.gif";
        }
    }

    /// <summary>
    /// 폴더에 대한 접근 권한을 반환한다.
    ///  - Guest 파일함에 대한 권한도 함께 추출한다.
    /// </summary>
    /// <param name="folderId"></param>
    /// <returns></returns>
    public static Filebox.RsAccessFlag GetFolderAccessFlag(Guid folderId)
    {
        FileboxFolder folder = new FileboxFolder(folderId);
        Filebox.RsAccessFlag accessFlag = Filebox.GetAccessFlag(WebUser.CurrentUser.DomainUserID, folder.FileboxID);

        if (accessFlag == Filebox.RsAccessFlag.None)
        {
            Filebox filebox = new Filebox(folder.FileboxID);
            UserFilebox userFilbox = new UserFilebox(WebUser.CurrentUser.DomainUserID);
            foreach (GuestSubscribe guest in userFilbox.GuestSubscribe)
            {
                if (guest.FileboxID == folder.FileboxID)
                {
                    if (filebox.Guest.AllowAccess && guest.Password == filebox.Guest.Password)
                    {
                        accessFlag = (Filebox.RsAccessFlag)filebox.Guest.AccessFlag;
                    }
                }
            }
        }
        return accessFlag;
    }
}
