using System;
using System.Collections.Generic;
using System.ServiceModel;
using MECF.Framework.Common.Equipment;
namespace MECF.Framework.Common.RecipeCenter
{
    [ServiceContract]
    public interface IRecipeService
    {
        [OperationContract]
        string LoadRecipe(ModuleName chamId, string recipeName);
        /// 
        /// 
        /// 
        /// 
        ///  recipeName + recipeContent 
        [OperationContract]
        Tuple LoadRunTimeRecipeInfo(ModuleName chamId);
        [OperationContract]
        IEnumerable GetRecipes(ModuleName chamId, bool includeUsedRecipe);
        [OperationContract]
        string GetXmlRecipeList(ModuleName chamId, bool includeUsedRecipe);
        [OperationContract]
        bool DeleteRecipe(ModuleName chamId, string recipeName);
        [OperationContract]
        bool DeleteFolder(ModuleName chamId, string folderName);
        [OperationContract]
        bool SaveAsRecipe(ModuleName chamId, string recipeName, string recipeContent);
        [OperationContract]
        bool SaveAsRecipe2(ModuleName chamId,string type, string recipeName, string recipeContent);
        [OperationContract]
        bool SaveRecipe(ModuleName chamId, string recipeName, string recipeContent);
        [OperationContract]
        bool CreateFolder(ModuleName chamId, string folderName);
        [OperationContract]
        bool MoveRecipeFile(ModuleName chamId, string folderName, string tragetFolderName);
        [OperationContract]
        bool RenameRecipe(ModuleName chamId, string oldName, string newName);
        [OperationContract]
        bool RenameFolder(ModuleName chamId, string oldName, string newName);
        [OperationContract]
        string GetRecipeFormatXml(ModuleName chamId);
        [OperationContract]
        string GetRecipeTemplate(ModuleName chamId);
        [OperationContract]
        string GetRecipeByBarcode(ModuleName chamId, string barcode);
        #region Sequence
        [OperationContract]
        string GetXmlSequenceList(ModuleName chamId);
        [OperationContract]
        string GetSequence(string sequenceName);
        [OperationContract]
        List GetSequenceNameList();
        [OperationContract]
        bool DeleteSequence(string sequenceName);
        [OperationContract]
        bool SaveSequence(string sequenceName, string sequenceContent);
        [OperationContract]
        bool SaveAsSequence(string sequenceName, string sequenceContent);
        [OperationContract]
        bool RenameSequence(string oldName, string newName);
        [OperationContract]
        string GetSequenceFormatXml();
        [OperationContract]
        bool RenameSequenceFolder(string oldName, string newName);
        [OperationContract]
        bool CreateSequenceFolder(string folderName);
        [OperationContract]
        bool DeleteSequenceFolder(string folderName);
        #endregion
        #region extended recipe interface
        [OperationContract]
        string LoadRecipeByPath(string path);
        [OperationContract]
        Tuple LoadRunTimeRecipeInfoByPath(string pathName);
        [OperationContract]
        IEnumerable GetRecipesByPath(string pathName, bool includeUsedRecipe);
        [OperationContract]
        string GetXmlRecipeListByPath(string pathName, bool includeUsedRecipe);
        [OperationContract]
        bool DeleteRecipeByPath(string pathName, string recipeName);
        [OperationContract]
        bool DeleteFolderByPath(string pathName, string folderName);
        [OperationContract]
        bool SaveAsRecipeByPath(string pathName, string recipeName, string recipeContent);
        [OperationContract]
        bool SaveRecipeByPath(string pathName, string recipeName, string recipeContent);
        [OperationContract]
        bool CreateFolderByPath(string pathName, string folderName);
        [OperationContract]
        bool RenameRecipeByPath(string pathName, string oldName, string newName);
        [OperationContract]
        bool RenameFolderByPath(string pathName, string oldName, string newName);
        [OperationContract]
        string GetRecipeFormatXmlByPath(string pathName);
        [OperationContract]
        string GetRecipeTemplateByPath(string pathName);
        [OperationContract]
        string GetRecipeByBarcodeByPath(string pathName, string barcode);
        #endregion
    }
}