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

namespace PMSUI.Config
{
    [Serializable]
    public class CFormHelpConfig
    {
        public List<CFormHelp> FormHelps = new List<CFormHelp>();

        public string GetFormHelp(string FromName)
        {
            CFormHelp  sformHelp = FormHelps.Find(p => p.FromName == FromName);
            if(sformHelp != null)
            {
                return sformHelp.HelpMessage;
            }
            return "";
        }
    }

    [Serializable]
    public class CFormHelp
    {
        public string FromName = "";
        public string HelpMessage = "";
         
    }

    public class DefaultFormHelp
    {
        static DefaultFormHelp _DefaultFormHelp = new DefaultFormHelp();
        public static List<CFormHelp> FormHelps()
        {
            List<CFormHelp> sform = new List<CFormHelp>();
            CFormHelp shelp;
            _DefaultFormHelp.MenuSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.FormSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.LanguageSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.DisplaySetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.StationIDRelateSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.WarehouseTypeSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.WarehouseSetting(out shelp); sform.Add(shelp);

            _DefaultFormHelp.TaskBookTemplateSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.StepBookTemplateSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.BehaviorSetting(out shelp); sform.Add(shelp);

            _DefaultFormHelp.HistoryOrderDataQuery(out shelp); sform.Add(shelp);
            _DefaultFormHelp.SystemReset(out shelp); sform.Add(shelp);

            _DefaultFormHelp.OrderExceptionHandling(out shelp); sform.Add(shelp);
            _DefaultFormHelp.PermissionSetting(out shelp); sform.Add(shelp);
            _DefaultFormHelp.UserSetting(out shelp); sform.Add(shelp);


            return sform;
        }

        private string MenuSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.MenuSetting.ToString(); 
            sFormHelp.HelpMessage += "1、【查询条件】可以筛选要查询的界面。 \r\n";
            sFormHelp.HelpMessage += "2、【窗体名称】 为菜单设置中的菜单名称，具体对应界面 查看菜单设置->显示名称。 \r\n";
            sFormHelp.HelpMessage += "3、【数据库列名】为数据库中的字段名称，一般不需要配置，如果需要配置，必须确保数据库中有此字段。 \r\n";
            sFormHelp.HelpMessage += "4、【显示名称】 为界面显示时的显示名称。 \r\n";
            sFormHelp.HelpMessage += "5、【是否显示】 为界面显示时此数据是否显示在界面。 \r\n";
            sFormHelp.HelpMessage += "6、【列排序】   为界面显示时此数据显示时 的排列顺序，取值范围1-255，值约小 越靠左显示。 \r\n";
            return sFormHelp.FromName;
        }

        private string FormSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.FormSetting.ToString(); 
            sFormHelp.HelpMessage += "1、【菜单名称】为菜单的真实名称与内存数据对应，不能随意修改。 \r\n";
            sFormHelp.HelpMessage += "2、【显示名称】为菜单中，列的显示名称。 \r\n";
            sFormHelp.HelpMessage += "3、【所属模块】为菜单中，列的显示名称。 \r\n";
            sFormHelp.HelpMessage += "4、【所属模块】为界面显示此才菜单时的上一级目录。 \r\n";
            sFormHelp.HelpMessage += "5、【是否显示】为界面显示时此数据是否显示在界面。 \r\n";
            sFormHelp.HelpMessage += "6、【菜单排序】为同一模块下，菜单的排列顺序，取值范围1-255，值约小 越靠前显示。 \r\n";
            sFormHelp.HelpMessage += "7、【模块排序】为显示时模块排序,取值范围1-255，值约小 越靠前显示。 \r\n";
            return sFormHelp.FromName;
        }

        private string LanguageSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.LanguageSetting.ToString();

            sFormHelp.HelpMessage += "1、语言中的【添加】按钮，会根据语言下拉框中的输入类容，添加一种新的语言。 \r\n";
            sFormHelp.HelpMessage += "2、语言中的【删除】按钮，会根据语言下拉框中的输入类容，删除指定语言，删除之后不能恢复。 \r\n";
            sFormHelp.HelpMessage += "3、关键字中的【删除】按钮，会根据选择的行，删除所有语言中的关键字键值。 \r\n";
            sFormHelp.HelpMessage += "4、内容中的【修改】按钮，会设置内容修改语言翻译。 \r\n";
            sFormHelp.HelpMessage += "5、内容中的【关键字】，为语言翻译的汉语关键字。 \r\n";
            sFormHelp.HelpMessage += "6、内容中的【显示信息】，为关键字对应的界面显示信息。 \r\n";
            sFormHelp.HelpMessage += "7、内容中的【备注】，用户自定义翻译的备注信息，无实际作用。 \r\n";
            sFormHelp.HelpMessage += "8、内容中的【保留1】，保留备用。 \r\n";
            sFormHelp.HelpMessage += "9、内容中的【保留2】，保留备用。 \r\n";
            sFormHelp.HelpMessage += "10、内容中的【保留3】，保留备用。 \r\n";
            return sFormHelp.FromName;
        }

        private string DisplaySetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.DisplaySetting.ToString();
            sFormHelp.HelpMessage += "1、【颜色】框点击 会弹出色彩选择框，选择颜色。\r\n";
            sFormHelp.HelpMessage += "2、设置颜色，点击【预览】，可以预览显示效果。\r\n";
            sFormHelp.HelpMessage += "3、设置颜色，点击【保存】，可以保存显示效果。\r\n";
            sFormHelp.HelpMessage += "4、设置语言，点击【保存】，可以切换语言，需要重新启动才能生效。\r\n";
            return sFormHelp.FromName;
        }

        private string StationIDRelateSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.StationIDRelateSetting.ToString();
            sFormHelp.HelpMessage += "1、配置中的【活动站点】、【关联活动点】、【关联导航点】必须是AGVS地图中存在的点。\r\n";
            sFormHelp.HelpMessage += "2、【备注】用户自定义的备注信息，无实际作用。\r\n";
            return sFormHelp.FromName;
        }

        private string WarehouseTypeSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.WarehouseTypeSetting.ToString();
            sFormHelp.HelpMessage += "1、【库位类型】对应库位设置中的库位类型。\r\n";
            sFormHelp.HelpMessage += "2、【步骤模板编号】对应步骤模板设置中的模板号，必须是先有模板才能在库位类型配置中配置。\r\n";
            sFormHelp.HelpMessage += "3、【任务模板行为】对应任务模板设置中的行为码，配置没有先后顺序，但是要保证对应关系。\r\n";
            sFormHelp.HelpMessage += "4、其余信息都是保留备注作用。\r\n";
            sFormHelp.HelpMessage += "5、配置时，不能保存【库位类型】、【步骤模板编号】、【任务模板行为】 三个数据完全相同的数据。\r\n";
            return sFormHelp.FromName;
        }

        private string WarehouseSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.WarehouseSetting.ToString();
            sFormHelp.HelpMessage += "1、【查看】中的选项是界面数据显示的筛选条件，【活动站点】框中输入数字的时候才有效。\r\n";
            sFormHelp.HelpMessage += "2、修改【活动站点】站点时，注意地图中必需有点才行。\r\n";
            sFormHelp.HelpMessage += "3、【库位类型】对应库位类型配置中的库位类型。\r\n";
            return sFormHelp.FromName;
        }

        private string TaskBookTemplateSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.TaskBookTemplateSetting.ToString();
            sFormHelp.HelpMessage += "1、【模板】中下拉框，可以选择也可以输入，选择则会更新左侧界面中的任务模板显示信息。\r\n";
            sFormHelp.HelpMessage += "2、【模板】中【删除】，会根据下拉框中的内容删除模板数据，删除后不能恢复。\r\n";
            sFormHelp.HelpMessage += "3、【模板】中【添加】，会根据下拉框中的输入内容添加一个空模板，添加再选择后可以配置选择的模板。\r\n";
            sFormHelp.HelpMessage += "4、【步骤】中【步骤号】为步骤ID，与默认下一步骤和特殊下一步骤对应。\r\n";
            sFormHelp.HelpMessage += "5、【步骤】中【行为码】与库位类型配置中的【任务模板行为】对应，配置没有先后顺序，但是要保证对应关系。\r\n";
            sFormHelp.HelpMessage += "6、任务模板配置是用来做任务流程规划的模板。\r\n";
            return sFormHelp.FromName;
        }

        private string StepBookTemplateSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.StepBookTemplateSetting.ToString();
            sFormHelp.HelpMessage += "1、【模板】中下拉框，可以选择也可以输入，选择则会更新左侧界面中的任务模板显示信息。\r\n";
            sFormHelp.HelpMessage += "2、【模板】中【删除】，会根据下拉框中的内容删除模板数据，删除后不能恢复。\r\n";
            sFormHelp.HelpMessage += "3、【模板】中【添加】，会根据下拉框中的输入内容添加一个空模板，添加再选择后可以配置选择的模板。\r\n";
            sFormHelp.HelpMessage += "4、【步骤】中【步骤号】为步骤ID，与默认下一步骤和特殊下一步骤对应。\r\n";
            sFormHelp.HelpMessage += "5、【步骤】中【行为码】为PMS内部任务处理行为码。\r\n";
            sFormHelp.HelpMessage += "6、【步骤】中【AGV行为码】是下发给AGV小车做任务的行为码，与地图中活动站点的行为码对应，地图中必需有才可以配置。\r\n";
            sFormHelp.HelpMessage += "7、【模板】中下拉框框类容与库位类型配置中的【步骤模板编号】对应，必须是先有模板才能在库位类型配置中配置。\r\n";
            sFormHelp.HelpMessage += "8、步骤模板配置是用做任务详细规划的。\r\n";
            return sFormHelp.FromName;
        }

        private string HistoryOrderDataQuery(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.HistoryOrderDataQuery.ToString();
            sFormHelp.HelpMessage += "1、点击查询按钮,可以根据(开始时间,结束时间 )或(订单号) 查询需要查询的任务信息。\r\n";
            sFormHelp.HelpMessage += "2、查询出历史信息后，双击行可以显示详细任务簿信息。\r\n";
            sFormHelp.HelpMessage += "3、查询出任务簿信息后，双击行可以显示详细步骤信息。\r\n";
            return sFormHelp.FromName;
        }

        private string SystemReset(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.SystemReset.ToString();
            sFormHelp.HelpMessage += "1、可以初始化一些系统数据，删除所有中间变量。";
            sFormHelp.HelpMessage += "2、点击初始化后，系统会强制关闭，需要重新启动程序。";
            sFormHelp.HelpMessage += "3、只有出货前，或者现场出现重大故障时才可以使用此按钮初始化数据。";
            return sFormHelp.FromName;
        }

        private string OrderExceptionHandling(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.OrderExceptionHandling.ToString();
            sFormHelp.HelpMessage = "1、可以通过订单号【查询】指定任务。\r\n";
            sFormHelp.HelpMessage += "2、刷新可以刷新界面信息显示。\r\n";
            sFormHelp.HelpMessage += "3、强制删除任务后，任务会转存至历史信息。\r\n";
            sFormHelp.HelpMessage += "4、注意处理任务之前最好先刷新一次。\r\n";
            return sFormHelp.FromName;
        }

        private string PermissionSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.PermissionSetting.ToString();
            sFormHelp.HelpMessage += "1、查看中的【权限 下拉框】可以选择需要查看的权限。\r\n";
            sFormHelp.HelpMessage += "2、操作中的【删除权限】可以删除 查看中【权限 下拉框】选中的一组权限。\r\n";
            sFormHelp.HelpMessage += "3、内容中的【添加】可以添加一个权限 对这个界面的访问权限。\r\n";
            sFormHelp.HelpMessage += "4、内容中的【修改】可以修改一个权限 对这个界面的访问权限。\r\n";
            sFormHelp.HelpMessage += "5、内容中的【删除】可以删除一个权限 对这个界面的访问权限。\r\n";
            sFormHelp.HelpMessage += "6、权限等级分为0:NoPower、1：Read、2：ReadWrite。\r\n";
            sFormHelp.HelpMessage += "7、添加一个组新的权限，在内容中的权限中先输入权限名称，选择指定界面的权限，点击【添加】按钮。\r\n";
            sFormHelp.HelpMessage += "8、添加后重新打开用户配置界面，就可以使用了。\r\n";
            return sFormHelp.FromName;
        }

        private string UserSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.UserSetting.ToString();
            sFormHelp.HelpMessage += "1、【权限】对应权限配置中的权限，一个权限决定了这个用户可以访问哪些界面，每个界面都有什么样的权限。\r\n";
            sFormHelp.HelpMessage += "2、【授权开始时间】代表这个用户的授权开始时间。\r\n";
            sFormHelp.HelpMessage += "3、【授权结束时间】代表这个用户的授权结束时间。\r\n";
            sFormHelp.HelpMessage += "4、非授权时间段内，用户无权访问系统。\r\n";
            sFormHelp.HelpMessage += "5、查看可以查看每个用户的密码。\r\n";
            return sFormHelp.FromName;
        }
        private string BehaviorSetting(out CFormHelp sFormHelp)
        {
            sFormHelp = new CFormHelp();
            sFormHelp.FromName = CasunUILib.EForms.BehaviorSetting.ToString();
            sFormHelp.HelpMessage += "1、行为码--分为两种，一种是下发给AGV小车，让小车执行指定指令的，另外一种是PMS用来做任务规划的，此处只需要配置用来做任务规划的行为码。\r\n";
            sFormHelp.HelpMessage += "2、其余列暂时都没有实际意义。\r\n";
            sFormHelp.HelpMessage += "3、【增加】可以增加一个行为码。\r\n";
            sFormHelp.HelpMessage += "4、【修改】可以修改一个行为码。\r\n";
            sFormHelp.HelpMessage += "5、【删除】可以删除一个行为码。\r\n";
            sFormHelp.HelpMessage += "6、此配置的目的是让现场人员了解到模板配置中的每个行为码的具体作用。\r\n";


            return sFormHelp.FromName;
        }
    }
}
