using System.Collections.Generic;
using System.Web.Mvc;
using Learun.Application.TwoDevelopment.ZZDT_EC;
using Learun.Util;
using System.Linq;

namespace Learun.Application.Web.Areas.ZZDT_EC.Controllers
{
    /// <summary>
    /// 版 本 PIT-ADMS V7.0.3 敏捷开发框架
    /// Copyright (c) 2013-2018 Hexagon PPM
    /// 创 建：超级管理员
    /// 日 期：2022-01-30 15:56
    /// 描 述：图纸目录
    /// </summary>
    public class ec_drawing_catalogueController : MvcControllerBase
    {
        private ec_drawing_catalogueIBLL ec_drawing_catalogueIBLL = new ec_drawing_catalogueBLL();

        #region 视图功能

        /// <summary>
        /// 主页面
        /// <summary>
        /// <returns></returns>
        [HttpGet]
        public ActionResult Index()
        {
            return View();
        }
        /// <summary>
        /// 表单页
        /// <summary>
        /// <returns></returns>
        [HttpGet]
        public ActionResult Form()
        {
            return View();
        }
        #endregion

        #region 获取数据

        /// <summary>
        /// 获取列表数据
        /// <summary>
        /// <returns></returns>
        [HttpGet]
        [AjaxOnly]
        public ActionResult GetList(string queryJson)
        {
            var data = ec_drawing_catalogueIBLL.GetList(queryJson);
            return Success(data);
        }

        /// <summary>
        /// 获取列表分页数据
        /// <param name="pagination">分页参数</param>
        /// <summary>
        /// <returns></returns>
        [HttpGet]
        [AjaxOnly]
        public ActionResult GetPageList(string pagination, string queryJson)
        {
            Pagination paginationobj = pagination.ToObject<Pagination>();
            var data = ec_drawing_catalogueIBLL.GetList(queryJson, paginationobj);
            var jsonData = new
            {
                rows = data,
                total = paginationobj.total,
                page = paginationobj.page,
                records = paginationobj.records
            };
            return Success(jsonData);
        }

        /// <summary>
        /// 获取表单数据
        /// <param name="keyValue">主键</param>
        /// <summary>
        /// <returns></returns>
        [HttpGet]
        [AjaxOnly]
        public ActionResult GetFormData(string keyValue, string ProjectId)
        {
            var data = ec_drawing_catalogueIBLL.GetEntity(keyValue, ProjectId);
            var jsonData = new
            {
                ec_drawing_catalogue = data
            };
            return Success(jsonData);
        }

        /// <summary>
        /// 获取图纸目录树形数据
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [AjaxOnly]
        public ActionResult GetTreeData(string ProjectId, string DrawingCatalogueID, string EngineDataID)
        {
            string queryJson = "{\"ProjectId\":\"" + ProjectId + "\",\"CurDrawingCatalogueID\":\"" + DrawingCatalogueID + "\"}";
            var list = ec_drawing_catalogueIBLL.GetList(queryJson);

            //工程数据图元页面，只显示有图元图纸的目录
            if (!string.IsNullOrEmpty(EngineDataID))
            {
                queryJson = "{\"ProjectId\":\"" + ProjectId + "\",\"CurDrawingCatalogueID\":\"" + DrawingCatalogueID + "\",\"EngineDataID\":\"" + EngineDataID + "\"}";
                var listTmp = ec_drawing_catalogueIBLL.GetList(queryJson);
                var listFinal = new List<ec_drawing_catalogueEntity>();
                foreach (var item in list)
                {
                    bool bExistdata = false;
                    foreach (var itemtmp in listTmp)
                    {
                        if (itemtmp.FullPath.Contains(item.DrawingCatalogueID))
                        {
                            bExistdata = true;
                            break;
                        }
                    }
                    if (bExistdata)
                    {
                        listFinal.Add(item);
                    }
                }
                list = listFinal;
            }

            List<TreeModel> treeList = new List<TreeModel>();
            foreach (var item in list)
            {
                TreeModel node = new TreeModel();
                node.id = item.DrawingCatalogueID;
                node.text = item.DrawingCatalogueName;
                node.value = item.DrawingCatalogueID;
                node.showcheck = false;
                node.checkstate = 0;
                node.isexpand = false;
                node.parentId = item.UpDrawingCatalogueID;
                node.NodeExtData = item;
                treeList.Add(node);
            }
            return Success(treeList.ToTree());
        }
        #endregion

        #region 提交数据

        /// <summary>
        /// 删除实体数据
        /// <param name="keyValue">主键</param>
        /// <summary>
        /// <returns></returns>
        [HttpPost]
        [AjaxOnly]
        public ActionResult DeleteForm(string keyValue, string ProjectId)
        {
            ec_drawing_catalogueIBLL.DeleteEntity(keyValue, ProjectId);
            return Success("删除成功！");
        }
        /// <summary>
        /// 保存实体数据（新增、修改）
        /// <param name="keyValue">主键</param>
        /// <summary>
        /// <returns></returns>
        [HttpPost]
        [ValidateAntiForgeryToken]
        [AjaxOnly]
        public ActionResult SaveForm(string keyValue, string strEntity, string ProjectId)
        {
            ec_drawing_catalogueEntity entity = strEntity.ToObject<ec_drawing_catalogueEntity>();
            if (entity.DrawingCatalogueName.Contains('/') ||
                entity.DrawingCatalogueName.Contains('\\') ||
                entity.DrawingCatalogueName.Contains('*') ||
                entity.DrawingCatalogueName.Contains(':') ||
                entity.DrawingCatalogueName.Contains('?') ||
                entity.DrawingCatalogueName.Contains('"') ||
                entity.DrawingCatalogueName.Contains('<') ||
                entity.DrawingCatalogueName.Contains('>') ||
                entity.DrawingCatalogueName.Contains('|')
                )
            {
                return Fail("不能有特殊字符！");
            }
            //判断同一目录是否存在目录
            List<ec_drawing_catalogueEntity> data = ec_drawing_catalogueIBLL.GetList("{UpDrawingCatalogueID:\"" + entity.UpDrawingCatalogueID + "\",\"ProjectId\":\"" + ProjectId + "\"}").ToList();
            data = data.FindAll(x => x.DrawingCatalogueName == entity.DrawingCatalogueName);
            if (data != null && data.Count > 0)
            {
                if (!string.IsNullOrEmpty(keyValue))
                {
                    data = data.FindAll(x => x.DrawingCatalogueID != keyValue);
                    if (data != null && data.Count > 0)
                    {
                        return Fail("该图纸目录名称已经存在！");
                    }
                }
                else
                {
                    return Fail("该图纸目录名称已经存在！");
                }
            }

            ec_drawing_catalogueIBLL.SaveEntity(keyValue, entity, ProjectId);
            return Success("保存成功！");
        }
        #endregion

    }
}
