예제 #1
0
    public void RaisePostBackEvent(string eventArgument)
    {
        var action = eventArgument.Split('|')[0];
        var argument = eventArgument.Split('|')[1];

        var service = new MessagesService();

        switch(action)
        {
            case "viewmessage":
                service.UpdateEmailsStatus(new int[] {Convert.ToInt32(argument)}, MailStatusType.Read);
                Response.Redirect("ViewMessage.aspx?id=" + argument);
                break;

            case "markallasread":
                var allIDs = service.GetAllEmailIDs(MailStatusType.New, FolderID).ToArray();
                service.UpdateEmailsStatus(allIDs, MailStatusType.Read);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "markselectedasread":
                if(string.IsNullOrEmpty(argument)) return;

                var idsToBeMarkedAsRead = Array.ConvertAll(argument.Split(','), s => int.Parse(s));
                service.UpdateEmailsStatus(idsToBeMarkedAsRead, MailStatusType.Read);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "markselectedasunread":
                if(string.IsNullOrEmpty(argument)) return;

                var idsToBeMarkedAsUnread = Array.ConvertAll(argument.Split(','), s => int.Parse(s));
                service.UpdateEmailsStatus(idsToBeMarkedAsUnread, MailStatusType.New);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "movetodeleted":
                if(string.IsNullOrEmpty(argument)) return;

                var idsToMoveToDeleted = Array.ConvertAll(argument.Split(','), s => int.Parse(s));
                service.MoveEmails(idsToMoveToDeleted, 4);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "deletedrafts":
                if(string.IsNullOrEmpty(argument)) return;

                var draftsToPermanentlyDelete = Array.ConvertAll(argument.Split(','), s => int.Parse(s));
                service.PermanentlyDeleteEmails(draftsToPermanentlyDelete);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "deleteemails":
                if(string.IsNullOrEmpty(argument)) return;

                var idsToPermanentlyDelete = Array.ConvertAll(argument.Split(','), s => int.Parse(s));
                service.PermanentlyDeleteEmails(idsToPermanentlyDelete);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "emptytrash":
                var allTrashIDs = service.GetAllEmailIDs(FolderID).ToArray();
                service.PermanentlyDeleteEmails(allTrashIDs);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "movetofolder":
                var moveToFolderID = Convert.ToInt32(argument);
                var idsToMove = Array.ConvertAll(eventArgument.Split('|')[2].Split(','), s => int.Parse(s));

                service.MoveEmails(idsToMove, moveToFolderID);
                Response.Redirect(Request.Url.AbsoluteUri);
                break;

            case "movetonewfolder":
                var newFolderDescription = argument;
                var idsToMoveToNewFolder = Array.ConvertAll(eventArgument.Split('|')[2].Split(','), s => int.Parse(s));

                // First, create the new folder.
                var newFolderID = service.CreatePersonalEmailFolder(newFolderDescription);

                // Next, move the selected emails to the new folder.
                service.MoveEmails(idsToMoveToNewFolder, newFolderID);

                Response.Redirect(Request.Url.AbsoluteUri);
                break;
        }
    }