using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EmitMapper;
using EmitMapper.MappingConfiguration;
namespace BLL
{
    /// 
    /// 考试计划
    /// 
    public static class APIServerTestPlanService
    {
        #region 获取考试计划列表
        /// 
        /// 获取考试计划列表
        /// 
        /// 状态(0-待发布;1-待考试;2-考试中;3已结束;-1作废)
        /// 
        public static List getTestPlanList(string states)
        {
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var getDataLists = (from x in db.Test_TestPlan
                                    where (x.States == states || states == null)
                                    orderby x.TestStartTime descending
                                    select new Model.TestPlanItem
                                    {
                                        TestPlanId = x.TestPlanId,
                                        TestPlanCode = x.PlanCode,
                                        TestPlanName = x.PlanName,
                                        TestPlanManId = x.PlanManId,
                                        TestPlanManName = db.Sys_User.First(y => y.UserId == x.PlanManId).UserName,
                                        TestPalce = x.TestPalce,
                                        Duration = x.Duration ?? 60,
                                        TestStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestStartTime),
                                        TestEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestEndTime),
                                        ActualTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ActualTime),
                                        States = x.States,
                                        QRCodeUrl = x.QRCodeUrl.Replace('\\', '/'),
                                    }).ToList();
                return getDataLists;
            }
        }
        #endregion
        #region 根据考试ID获取考试计划详细
        /// 
        /// 根据考试ID获取考试计划详细
        /// 
        /// 
        /// 
        public static Model.TestPlanItem getTestPlanByTestPlanId(string testPlanId)
        {
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var getDataLists = from x in db.Test_TestPlan
                                   where x.TestPlanId == testPlanId
                                   select new Model.TestPlanItem
                                   {
                                       TestPlanId = x.TestPlanId,
                                       TestPlanCode = x.PlanCode,
                                       TestPlanName = x.PlanName,
                                       TestPlanManId = x.PlanManId,
                                       TestPlanManName = db.Sys_User.First(y => y.UserId == x.TestPlanId).UserName,
                                       TestPlanDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.PlanDate),
                                       TestStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestStartTime),
                                       TestEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestEndTime),
                                       ActualTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ActualTime),
                                       Duration = x.Duration ?? 60,
                                       SValue = x.SValue ?? 0,
                                       MValue = x.MValue ?? 0,
                                       JValue = x.JValue ?? 0,
                                       TestPalce = x.TestPalce,
                                       States = x.States,
                                       QRCodeUrl = x.QRCodeUrl.Replace('\\', '/'),
                                   };
                return getDataLists.FirstOrDefault();
            }
        }
        #endregion
        #region 根据TestPlanId获取考试试题类型列表
        /// 
        /// 根据TestPlanId获取考试试题类型列表
        /// 
        /// 考试计划ID
        /// 
        public static List getTestPlanTrainingListByTestPlanId(string testPlanId)
        {
            Model.SGGLDB db = Funs.DB;
            var getDataLists = (from x in db.Test_TestPlanTraining
                                join y in db.Training_TestTraining on x.TrainingId equals y.TrainingId
                                where x.TestPlanId == testPlanId
                                orderby y.TrainingCode
                                select new Model.TestPlanTrainingItem
                                {
                                    TestPlanTrainingId = x.TestPlanTrainingId,
                                    TestPlanId = x.TestPlanId,
                                    TrainingTypeId = x.TrainingId,
                                    TrainingTypeName = y.TrainingName,
                                    TestType1Count = x.TestType1Count ?? 0,
                                    TestType2Count = x.TestType2Count ?? 0,
                                    TestType3Count = x.TestType3Count ?? 0,
                                    UserTypeId = x.UserType,
                                    UserTypeName = x.UserType == null ? "" : (x.UserType == "1" ? "管理人员" : (x.UserType == "2" ? "临时用户" : "作业人员")),
                                }).ToList();
            return getDataLists;
        }
        #endregion
    }
}