using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Repository
{
    public class TdevDeviceTemplateRepository : RepositoryBase<TDEV_DeviceTemplate, Guid>, ITdevDeviceTemplateRepository
    {
        public TdevDeviceTemplateRepository(InspectionDbContext DbContext) : base(DbContext)
        {

        }
        public async Task<IEnumerable<TdevDeviceTemplateTree>> GetDeviceTemplateTreeAsync()
        {
            var codeDetail = DbContext.TBDM_CodeDetail.Where(x=>x.C_MainCode == "DEV_TYPE" && x.C_Status=="1").ToList();

            var treeList = new List<TdevDeviceTemplateTree>();

            foreach (var item in codeDetail)
            {
                TdevDeviceTemplateTree deviceTemplateTree = new TdevDeviceTemplateTree();
                deviceTemplateTree.C_MainCode = "DEV_TYPE";
                deviceTemplateTree.C_ID = item.C_Code;
                deviceTemplateTree.C_Status = item.C_Status;
                deviceTemplateTree.C_Value = item.C_Value;
                deviceTemplateTree.C_IsSys = item.C_IsSys;
                deviceTemplateTree.C_Name = item.C_Name;
                deviceTemplateTree.C_Remark= item.C_Remark;
                deviceTemplateTree.Children = DbContext.TDEV_DeviceTemplate.Where(i => i.C_Category == item.C_Value).ToList();
                treeList.Add(deviceTemplateTree);
            }

            return await Task.Run(() => treeList);
        }
    }
}