using CollaborativePlatformMain.DFEntity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace CollaborativePlatformMain.Form
{
    /// <summary>
    /// StandardizedAssistantForm.xaml 的交互逻辑
    /// </summary>
    public partial class StandardizedAssistantForm : Window
    {
        /// <summary>
        /// 父级窗体
        /// </summary>
        public HomepageForm HomepageForm;

        /// <summary>
        /// 规范数据
        /// </summary>
        public static List<StandardizedEntity> StandardizedEntities = new List<StandardizedEntity>();

        /// <summary>
        /// 青蓝规范小助手
        /// </summary>
        /// <param name="homepageForm"></param>
        public StandardizedAssistantForm(HomepageForm homepageForm)
        {
            InitializeComponent();
            HomepageForm = homepageForm;
        }

        /// <summary>
        /// 窗体初始化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            StandardizedEntity standardizedEntity1 = new StandardizedEntity("4.1 一般规定", "4.1.1 建筑的平面布置应便于建筑发生火灾时的人员疏散和避难，有利于减小火灾危害、控制火势和烟气蔓延。" +
                                                                                            "同一建筑内的不同使用功能区域之间应进行防火分隔。\r\n4.1.2 工业与民用建筑、地铁车站、" +
                                                                                            "平时使用的人民防空工程应综合其高度（埋深）、使用功能和火灾危险性等因素，根据有利于消防救援、" +
                                                                                            "控制火灾及降低火灾危害的原则划分防火分区。防火分区的划分应符合下列规定：\r\n    " +
                                                                                            "1 建筑内横向应采用防火墙等划分防火分区，且防火分隔应保证火灾不会蔓延至相邻防火分区；\r\n    " +
                                                                                            "2 建筑内竖向按自然楼层划分防火分区时，除允许设置敞开楼梯间的建筑外，" +
                                                                                            "防火分区的建筑面积应按上、下楼层中在火灾时未封闭的开口所连通区域的建筑面积之和计算；\r\n    " +
                                                                                            "3 高层建筑主体与裙房之间未采用防火墙和甲级防火门分隔时，裙房的防火分区应按高层建筑主体的相应要求划分；\r\n  " +
                                                                                            "  4 除建筑内游泳池、消防水池等的水面、冰面或雪面面积，射击场的靶道面积，污水沉降池面积，" +
                                                                                            "开敞式的外走廊或阳台面积等可不计入防火分区的建筑面积外，其他建筑面积均应计入所在防火分区的建筑面积。" +
                                                                                            "\r\n4.1.3 下列场所应采用防火门、防火窗、耐火极限不低于2.00h的防火隔墙和耐火极限不低于1.00h的楼板与其他区域" +
                                                                                            "分隔：\r\n    1 住宅建筑中的汽车库和锅炉房；\r\n    2 除居住建筑中的套内自用厨房可不分隔外，建筑内的" +
                                                                                            "厨房；\r\n    3 医疗建筑中的手术室或手术部、产房、重症监护室、贵重精密医疗装备用房、储藏间、实验" +
                                                                                            "室、胶片室等；\r\n    4 建筑中的儿童活动场所、老年人照料设施；\r\n    5 除消防水泵房的防火分隔应" +
                                                                                            "符合本规范第4.1.7条的规定，消防控制室的防火分隔应符合本规范第4.1.8条的规定外，其他消防设备或器材用房。");

            StandardizedEntity standardizedEntity2 = new StandardizedEntity("4.2 工业建筑", "4.2.1 除特殊工艺要求外，下列场所不应设置在地下或半地下：\r\n    " +
                                                                                            "1 甲、乙类生产场所；\r\n    2 甲、乙类仓库；\r\n    3 有粉尘爆炸危险的生产场所、滤尘设备间；\r\n    " +
                                                                                            "4 邮袋库、丝麻棉毛类物质库。\r\n4.2.2 厂房内不应设置宿舍。直接服务于生产的办公室、休息室等辅助用房的设置，" +
                                                                                            "应符合下列规定：\r\n    1 不应设置在甲、乙类厂房内；\r\n    2 与甲、乙类厂房贴邻的辅助用房的耐火等级不应" +
                                                                                            "低于二级，并应采用耐火极限不低于3.00h的抗爆墙与厂房中有爆炸危险的区域分隔，安全出口应独立设置；\r\n    " +
                                                                                            "3 设置在丙类厂房内的辅助用房应采用防火门、防火窗、耐火极限不低于2.00h的防火隔墙和耐火极限不低于1.00h的" +
                                                                                            "楼板与厂房内的其他部位分隔，并应设置至少1个独立的安全出口。\r\n4.2.3 设置在厂房内的甲、乙、丙类中间仓" +
                                                                                            "库，应采用防火墙和耐火极限不低于1.50h的不燃性楼板与其他部位分隔。\r\n4.2.4 与甲、乙类厂房贴邻并供该甲" +
                                                                                            "、乙类厂房专用的10kV及以下的变（配）电站，应采用无开口的防火墙或抗爆墙一面贴邻，与乙类厂房贴邻的防火墙" +
                                                                                            "上的开口应为甲级防火窗。其他变（配）电站应设置在甲、乙类厂房以及爆炸危险性区域外，不应与甲、乙类厂房贴" +
                                                                                            "邻。\r\n4.2.5 甲、乙类仓库和储存丙类可燃液体的仓库应为单、多层建筑。\r\n4.2.6 仓库内的防火分区或库房之" +
                                                                                            "间应采用防火墙分隔，甲、乙类库房内的防火分区或库房之间应采用无任何开口的防火墙分隔。\r\n4.2.7 仓库内不" +
                                                                                            "应设置员工宿舍及与库房运行、管理无直接关系的其他用房。甲、乙类仓库内不应设置办公室、休息室等辅助用房，" +
                                                                                            "不应与办公室、休息室等辅助用房及其他场所贴邻。丙、丁类仓库内的办公室、休息室等辅助用房，应采用防火门、" +
                                                                                            "防火窗、耐火极限不低于2.00h的防火隔墙和耐火极限不低于1.00h的楼板与其他部位分隔，并应设置独立的安全出口。" +
                                                                                            "\r\n4.2.8 使用和生产甲、乙、丙类液体的场所中，管、沟不应与相邻建筑或场所的管、沟相通，下水道应采取防止含" +
                                                                                            "可燃液体的污水流入的措施。");

            StandardizedEntity standardizedEntity3 = new StandardizedEntity("4.3 民用建筑", "4.3.1 民用建筑内不应设置经营、存放或使用甲、乙类火灾危险性物品的商店、作" +
                                                                                            "坊或储藏间等。民用建筑内除可设置为满足建筑使用功能的附属库房外，不应设置生产场所或其他库房，" +
                                                                                            "不应与工业建筑组合建造。\r\n4.3.2 住宅与非住宅功能合建的建筑应符合下列规定：\r\n   " +
                                                                                            " 1 除汽车库的疏散出口外，住宅部分与非住宅部分之间应采用耐火极限不低于2.00h，且无开口" +
                                                                                            "的防火隔墙和耐火极限不低于2.00h的不燃性楼板完全分隔。\r\n    2 住宅部分与非住宅部分的" +
                                                                                            "安全出口和疏散楼梯应分别独立设置。\r\n    3 为住宅服务的地上车库应设置独立的安全出口或" +
                                                                                            "疏散楼梯，地下车库的疏散楼梯间应按本规范第7.1.10条的规定分隔。\r\n    4 住宅与商业设施" +
                                                                                            "合建的建筑按照住宅建筑的防火要求建造的，应符合下列规定：\r\n       1）商业设施中每个独" +
                                                                                            "立单元之间应采用耐火极限不低于2.00h且无开口的防火隔墙分隔；\r\n       2）每个独立单元" +
                                                                                            "的层数不应大于2层，且2层的总建筑面积不应大于300㎡；\r\n       3）每个独立单元中建筑面" +
                                                                                            "积大于200㎡的任一楼层均应设置至少2个疏散出口。\r\n4.3.3 商店营业厅、公共展览厅等的布置" +
                                                                                            "应符合下列规定：\r\n    1 对于一、二级耐火等级建筑，应布置在地下二层及以上的楼层；\r\n  " +
                                                                                            "  2 对于三级耐火等级建筑，应布置在首层或二层；\r\n    3 对于四级耐火等级建筑，应布置在首" +
                                                                                            "层。\r\n4.3.4 儿童活动场所的布置应符合下列规定：\r\n    1 不应布置在地下或半地下；\r\n   " +
                                                                                            " 2 对于一、二级耐火等级建筑，应布置在首层、二层或三层；\r\n    3 对于三级耐火等级建筑，应" +
                                                                                            "布置在首层或二层；\r\n    4 对于四级耐火等级建筑，应布置在首层。\r\n4.3.5 老年人照料设施的" +
                                                                                            "布置应符合下列规定：\r\n    1 对于一、二级耐火等级建筑，不应布置在楼地面设计标高大于54m的" +
                                                                                            "楼层上；\r\n    2 对于三级耐火等级建筑，应布置在首层或二层；\r\n    3 居室和休息室不应布置" +
                                                                                            "在地下或半地下；\r\n    4 老年人公共活动用房、康复与医疗用房，应布置在地下一层及以上楼层，当" +
                                                                                            "布置在半地下或地下一层、地上四层及以上楼层时，每个房间的建筑面积不应大于200㎡且使用人数不应" +
                                                                                            "大于30人。\r\n4.3.6 医疗建筑中住院病房的布置和分隔应符合下列规定：\r\n    1 不应布置在地下" +
                                                                                            "或半地下；\r\n    2 对于三级耐火等级建筑，应布置在首层或二层；\r\n    3 建筑内相邻护理单元" +
                                                                                            "之间应采用耐火极限不低于2.00h的防火隔墙和甲级防火门分隔。\r\n4.3.7 歌舞娱乐放映游艺场所" +
                                                                                            "的布置和分隔应符合下列规定：\r\n    1 应布置在地下一层及以上且埋深不大于10m的楼层；\r\n    2 " +
                                                                                            "当布置在地下一层或地上四层及以上楼层时，每个房间的建筑面积不应大于200㎡；\r\n    3 房间之间应" +
                                                                                            "采用耐火极限不低于2.00h的防火隔墙分隔；\r\n    4 与建筑的其他部位之间应采用防火门、耐火极限" +
                                                                                            "不低于2.00h的防火隔墙和耐火极限不低于1.00h的不燃性楼板分隔。");


            StandardizedEntity standardized1 = new StandardizedEntity("4 建筑平面布置与防火分隔", new List<StandardizedEntity>() { standardizedEntity1, standardizedEntity2, standardizedEntity3 });
            StandardizedEntity standardized2 = new StandardizedEntity("5 建筑结构耐火", new List<StandardizedEntity>() { standardizedEntity1, standardizedEntity2, standardizedEntity3 });
            StandardizedEntity standardized3 = new StandardizedEntity("6 建筑构造与装修", new List<StandardizedEntity>() { standardizedEntity1, standardizedEntity2, standardizedEntity3 });
            StandardizedEntity standardized4 = new StandardizedEntity("7 安全疏散与避难设施", new List<StandardizedEntity>() { standardizedEntity1, standardizedEntity2, standardizedEntity3 });
            StandardizedEntity standardized5 = new StandardizedEntity("8 消防设施", new List<StandardizedEntity>() { standardizedEntity1, standardizedEntity2, standardizedEntity3 });


            StandardizedEntity data1 = new StandardizedEntity("建筑防火通用规范 GB55037-2022", new List<StandardizedEntity>() { standardized1, standardized2, standardized3, standardized4, standardized5 });
            StandardizedEntity data2 = new StandardizedEntity("建筑设计防火规范 GB50016-2014（2018年版）", new List<StandardizedEntity>() { standardized1, standardized2, standardized3, standardized4, standardized5 });
            StandardizedEntity data4 = new StandardizedEntity("消防设施通用规范 GB55036-2022", new List<StandardizedEntity>() { standardized1, standardized2, standardized3, standardized4, standardized5 });
            StandardizedEntity data5 = new StandardizedEntity("人民防空工程设计防火规范 GB50098-2009", new List<StandardizedEntity>() { standardized1, standardized2, standardized3, standardized4, standardized5 });
            StandardizedEntity data6 = new StandardizedEntity("住宅建筑规范 GB50368-2005", new List<StandardizedEntity>() { standardized1, standardized2, standardized3, standardized4, standardized5 });
            StandardizedEntity data7 = new StandardizedEntity("建筑防烟排烟系统技术标准 GB51251-2017", new List<StandardizedEntity>() { standardized1, standardized2, standardized3, standardized4, standardized5 });


            StandardizedEntities = new List<StandardizedEntity>() { data1, data2, data4, data5, data6, data7 };
            tr_threemodel.ItemsSource = null;
            tr_threemodel.ItemsSource = StandardizedEntities;
        }

        private void tr_threemodel_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {

        }

        /// <summary>
        /// textblock点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TextBlock_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            TextBlock textBlock = sender as TextBlock;
            if (textBlock == null) return;
            StandardizedEntity standardizedEntity = textBlock.DataContext as StandardizedEntity;
            if (standardizedEntity == null) return;
            string node = standardizedEntity.Node;
            if (node == null || node == "") return;

            tb_node.Text = standardizedEntity.Node;

        }

        /// <summary>
        /// 窗体关闭事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Closed(object sender, EventArgs e)
        {
            HomepageForm.Visibility = Visibility.Visible;
        }

        /// <summary>
        /// 搜索事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bt_sousuo_Click(object sender, RoutedEventArgs e)
        {
            string value = tb_sousuo.Text.ToString();

            List<StandardizedEntity> copyDatas = new List<StandardizedEntity>();

            foreach (var item in StandardizedEntities)
            {
                copyDatas.Add(item);
            }
            copyDatas = copyDatas.Where(x => x.Name.Contains(value)).ToList();

            if (copyDatas.Count == 0)
            {
                tr_threemodel.ItemsSource = null;
                tr_threemodel.ItemsSource = StandardizedEntities;
            }
            else
            {
                tr_threemodel.ItemsSource = null;
                tr_threemodel.ItemsSource = copyDatas;
            }


        }
    }
}
