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

namespace BLL
{
    public class ProjectQualityService
    {
        public static Model.SGGLDB db = Funs.DB;


        /// <summary>
        ///  查询
        /// </summary>
        /// <param name="ProjectQualityType">类型</param>
        /// <returns></returns>
        public static DataTable GetProjectQualityList(int? ProjectQualityType)
        {
            string strSql = @"SELECT a.* ,b.QualityQuestionType FROM WBS_ProjectQuality a left join Base_QualityQuestionType b on a.ProjectName = b.QualityQuestionTypeId";
            List<System.Data.SqlClient.SqlParameter> listStr = new List<SqlParameter>();
            if (ProjectQualityType != null)
            {
                strSql += " where a.ProjectQualityType = @ProjectQualityType ";
                listStr.Add(new SqlParameter("@ProjectQualityType", ProjectQualityType));
            }
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            return tb;
        }


        /// <summary>
        ///  查询
        /// </summary> 
        /// <returns></returns>
        public static Model.WBS_ProjectQuality GetProjectQualityModel(string ProjectQualityId)
        {
            var model = db.WBS_ProjectQuality.FirstOrDefault(c => c.ProjectQualityId == ProjectQualityId);
            return model;
        }


        /// <summary>
        /// 添加更新操作
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static bool UpdateProjectQuality(Model.WBS_ProjectQuality model)
        {
            bool isok = true;
            try
            {
                if (string.IsNullOrEmpty(model.ProjectQualityId))
                {
                    model.ProjectQualityId = SQLHelper.GetNewID(typeof(Model.WBS_ProjectQuality));
                    db.WBS_ProjectQuality.InsertOnSubmit(model);
                    db.SubmitChanges();
                }
                else
                {
                    var editModel = db.WBS_ProjectQuality.FirstOrDefault(c => c.ProjectQualityId == model.ProjectQualityId);
                    if (editModel != null)
                    {
                        editModel.ProjectName = model.ProjectName;
                        editModel.ProjectQualityDes = model.ProjectQualityDes;
                        editModel.ProjectQualityResult = model.ProjectQualityResult;
                        editModel.ProjectQualityType = model.ProjectQualityType;
                        editModel.Remark = model.Remark; 
                        editModel.ShowIndex = model.ShowIndex;
                        db.SubmitChanges();
                    }

                }
            }
            catch (Exception ex)
            {
                isok = false;
            }

            return isok;
        }

        /// <summary>
        /// 删除操作
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static bool DelProjectQuality(string id)
        {

            bool isok = true;
            try
            {
                var delModel = db.WBS_ProjectQuality.FirstOrDefault(c => c.ProjectQualityId == id);
                if (delModel != null)
                {
                    db.WBS_ProjectQuality.DeleteOnSubmit(delModel);
                    db.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                isok = false;
            }

            return isok;
        }
         

            #region API
            /// <summary>
            ///  根据--1 建筑工程 2 安装工程或者3(全部)分组问题类别 ---何丽梅
            /// </summary> 
            /// <returns></returns>
            public static List<dynamic> GetGroupProjectName(int ProjectQualityType)
        {
            //var list = db.WBS_ProjectQuality.Where(c => c.ProjectQualityType == ProjectQualityType).GroupBy(c => c.ProjectName).Select(c => c.Key).ToList();
            //return list;

            var list = from y in Funs.DB.Base_QualityQuestionType  
                       select new
                       {
                           y.Type,
                           y.QualityQuestionType,
                           y.QualityQuestionTypeId
                       }
                       ;

            switch (ProjectQualityType)
            {
                case 1: // 建筑工程
                    list = list.Where(e => e.Type == 1);
                    break;
                case 2: // 安装工程
                    list = list.Where(e => e.Type == 2);
                    break;
                case 3: // 全部
                    list = list.Where(e => e.Type == 2 || e.Type == 1);
                    break;
            }
            return list.Distinct().ToList<dynamic>();


        }

        /// <summary>
        ///  分解1 建筑工程 2 安装工程选择的问题类型 ---何丽梅
        /// </summary> 
        /// <returns></returns>
        public static Model.WBS_ProjectQuality GetQualityProjectNameType(string QualityQuestionTypeId)
        {
            return Funs.DB.WBS_ProjectQuality.FirstOrDefault(e => e.ProjectName == QualityQuestionTypeId);
        }


        /// <summary>
        ///  分组问题描述
        /// </summary> 
        /// <returns></returns>
        public static List<dynamic> GetGroupProjectQualityDes(string projectName)
        {
            var list = db.WBS_ProjectQuality.Where(c => c.ProjectName == projectName).GroupBy(c => c.ProjectQualityDes).Select(c => new
            {
                QuestionDef = c.Key,
                QuestionDefId = c.Key
            }).ToList<dynamic>();
            return list;
        }




        /// <summary>
        ///  分组问题描述
        /// </summary> 
        /// <returns></returns>
        public static List<dynamic> GetGroupProjectQualityDes(List<string> projectNames)
        {
            var list = db.WBS_ProjectQuality.Where(c => projectNames.Contains(c.ProjectName)).GroupBy(c => c.ProjectQualityDes).Select(c => new
            {
                QuestionDef = c.Key,
                QuestionDefId = c.Key
            }).ToList<dynamic>();
            return list;
        }

        /// <summary>
        ///  分组问题描述
        /// </summary> 
        /// <returns></returns>
        public static List<dynamic> GetProjectQualityResult(string projectQualityDes)
        {
            var list = db.WBS_ProjectQuality.Where(c => c.ProjectQualityDes == projectQualityDes).Select(c => new
            {
                RectifyOpinion = c.ProjectQualityResult,
                RectifyOpinionId = c.ProjectQualityResult
            }).ToList<dynamic>();
            return list;
        }

        #endregion

    }
}