using BLL;
using System;
using System.Linq;
using System.Web.Http;
using Model.AnBnag;
using Model.AnBang;

namespace WebAPI.Controllers
{
    /// <summary>
    /// AnBangTool
    /// </summary>
    public class AnBangToolController : ApiController
    {      
        /// <summary>
             /// 添加人员信息
             /// </summary>
             /// <param name="personInput"></param>
             /// <returns></returns>
        [HttpPost]
        public Model.ResponeData AddPerson([FromBody] PersonInput personInput)
        {
            var responeData = new Model.ResponeData();
            try
            {
                if (string.IsNullOrEmpty(personInput.ID))
                {
                    responeData.code = 0;
                    responeData.message = "ID 不能为空";
                    return responeData;
                }
                if (string.IsNullOrEmpty(personInput.ProjectId))
                {
                    responeData.code = 0;
                    responeData.message = "ProjectId 不能为空";
                    return responeData;
                }
                else
                {
                    var project  =APIProjectService.getProjectByProjectId(personInput.ProjectId);
                    if (project == null)
                    {
                        responeData.code = 0;
                        responeData.message = "ProjectId 不存在";
                        return responeData;
                    }

                }
                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getPerson = db.Bo_Sheng_Person.FirstOrDefault(x => x.ID == personInput.ID);
                    if (getPerson == null)
                    {
                        Model.Bo_Sheng_Person table = new Model.Bo_Sheng_Person
                        {
                            ID = personInput.ID,
                            ProjectId = personInput.ProjectId,
                            CreateDate = personInput.CreateDate,
                            CreateUser = personInput.CreateUser,
                            OperDate = personInput.OperDate,
                            OperUser = personInput.OperUser,
                            Name = personInput.Name,
                            Sex = personInput.Sex,
                            BirthDay = personInput.BirthDay,
                            Address = personInput.Address,
                            Nation = personInput.Nation,
                            IdentifyID = personInput.IdentifyID,
                            Police = personInput.Police,
                            ValidPeriodStart = personInput.ValidPeriodStart,
                            ValidPeriodEnd = personInput.ValidPeriodEnd,
                            Telephone = personInput.Telephone,
                            Age = personInput.Age,
                            JobNumber = personInput.JobNumber,
                            NewAddress = personInput.NewAddress,
                            RegisterDate = personInput.RegisterDate,
                            Station = personInput.Station,
                            Category = personInput.Category,
                            CategoryLevel = personInput.CategoryLevel,
                            EntranceDate = personInput.EntranceDate,
                            IsOut = personInput.IsOut,
                            LeaveDate = personInput.LeaveDate,
                            IsBlackList = personInput.IsBlackList,
                            DeviceNumber = personInput.DeviceNumber,
                            DepartName = personInput.DepartName,
                            UploadTime = personInput.UploadTime
                        };
                        db.Bo_Sheng_Person.InsertOnSubmit(table);
                        db.SubmitChanges();
                    }
                    else
                    {
                        getPerson.ProjectId = personInput.ProjectId;
                        getPerson.CreateDate = personInput.CreateDate;
                        getPerson.CreateUser = personInput.CreateUser;
                        getPerson.OperDate = personInput.OperDate;
                        getPerson.OperUser = personInput.OperUser;
                        getPerson.Name = personInput.Name;
                        getPerson.Sex = personInput.Sex;
                        getPerson.BirthDay = personInput.BirthDay;
                        getPerson.Address = personInput.Address;
                        getPerson.Nation = personInput.Nation;
                        getPerson.IdentifyID = personInput.IdentifyID;
                        getPerson.Police = personInput.Police;
                        getPerson.ValidPeriodStart = personInput.ValidPeriodStart;
                        getPerson.ValidPeriodEnd = personInput.ValidPeriodEnd;
                        getPerson.Telephone = personInput.Telephone;
                        getPerson.Age = personInput.Age;
                        getPerson.JobNumber = personInput.JobNumber;
                        getPerson.NewAddress = personInput.NewAddress;
                        getPerson.RegisterDate = personInput.RegisterDate;
                        getPerson.Station = personInput.Station;
                        getPerson.Category = personInput.Category;
                        getPerson.CategoryLevel = personInput.CategoryLevel;
                        getPerson.EntranceDate = personInput.EntranceDate;
                        getPerson.IsOut = personInput.IsOut;
                        getPerson.LeaveDate = personInput.LeaveDate;
                        getPerson.IsBlackList = personInput.IsBlackList;
                        getPerson.DeviceNumber = personInput.DeviceNumber;
                        getPerson.DepartName = personInput.DepartName;
                        getPerson.UploadTime = personInput.UploadTime;
                        db.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.ToString();
            }
            return responeData;
        }
        /// <summary>
        /// 删除人员信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet]
        public Model.ResponeData DelPerson(string id)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getPerson = db.Bo_Sheng_Person.FirstOrDefault(x => x.ID == id);
                    if (getPerson != null)
                    {
                        db.Bo_Sheng_Person.DeleteOnSubmit(getPerson);
                        db.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.ToString();
            }
            return responeData;
        }
        /// <summary>
        /// 添加培训记录
        /// </summary>
        /// <param name="trainInput"></param>
        /// <returns></returns>
        [HttpPost] 
        public Model.ResponeData AddTrain([FromBody] TrainInput trainInput)
        {
            var responeData = new Model.ResponeData();
            try
            {
                if (string.IsNullOrEmpty(trainInput.ID))
                {
                    responeData.code = 0;
                    responeData.message = "ID 不能为空"; 
                    return responeData;
                }
                if (string.IsNullOrEmpty(trainInput.ProjectId))
                {
                    responeData.code = 0;
                    responeData.message = "ProjectId 不能为空";
                    return responeData;
                }
                else
                {
                    var project = APIProjectService.getProjectByProjectId(trainInput.ProjectId);
                    if (project == null)
                    {
                        responeData.code = 0;
                        responeData.message = "ProjectId 不存在";
                        return responeData;
                    }

                }
                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getTrain = db.Bo_Sheng_Train.FirstOrDefault(x => x.ID == trainInput.ID);
                    if (getTrain == null)
                    {
                        Model.Bo_Sheng_Train table = new Model.Bo_Sheng_Train
                        {
                            ID = trainInput.ID,
                            ProjectId = trainInput.ProjectId,
                            RecordName = trainInput.RecordName,
                            TrainType = trainInput.TrainType,
                            PaperMode = trainInput.PaperMode,
                            TrainMode = trainInput.TrainMode,
                            TrainPrincipal = trainInput.TrainPrincipal,
                            TrainStartDate = trainInput.TrainStartDate,
                            TrainEndDate = trainInput.TrainEndDate,
                            TrainContent = trainInput.TrainContent,
                            TrainDescript = trainInput.TrainDescript,
                            TrainPeriod = trainInput.TrainPeriod,
                            PersonCount = trainInput.PersonCount,
                            PassedCount = trainInput.PassedCount, 
                            CourseCount = trainInput.CourseCount,
                            CourseDuration = trainInput.CourseDuration,
                            Source = trainInput.Source,
                            Description = trainInput.Description,
                            DeviceNo = trainInput.DeviceNo, 
                            UploadTime = trainInput.UploadTime, 
                            TrainDepart = trainInput.TrainDepart,
                            CreateDate = trainInput.CreateDate,
                            CreateUser = trainInput.CreateUser,
                            OperDate = trainInput.OperDate,
                            OperUser = trainInput.OperUser,
                        };
                        db.Bo_Sheng_Train.InsertOnSubmit(table);
                        db.SubmitChanges();
                    }
                    else
                    {
                        getTrain.ProjectId = trainInput.ProjectId;
                        getTrain.RecordName = trainInput.RecordName;
                        getTrain.TrainType = trainInput.TrainType;
                        getTrain.PaperMode = trainInput.PaperMode;
                        getTrain.TrainMode = trainInput.TrainMode;
                        getTrain.TrainPrincipal = trainInput.TrainPrincipal;
                        getTrain.TrainStartDate = trainInput.TrainStartDate;
                        getTrain.TrainEndDate = trainInput.TrainEndDate;
                        getTrain.TrainContent = trainInput.TrainContent;
                        getTrain.TrainDescript = trainInput.TrainDescript;
                        getTrain.TrainPeriod = trainInput.TrainPeriod;
                        getTrain.PersonCount = trainInput.PersonCount;
                        getTrain.PassedCount = trainInput.PassedCount; 
                        getTrain.CourseCount = trainInput.CourseCount;
                        getTrain.CourseDuration = trainInput.CourseDuration;
                        getTrain.Source = trainInput.Source;
                        getTrain.Description = trainInput.Description;
                        getTrain.DeviceNo = trainInput.DeviceNo; 
                        getTrain.UploadTime = trainInput.UploadTime; 
                        getTrain.TrainDepart = trainInput.TrainDepart;
                        getTrain.CreateDate = trainInput.CreateDate;
                        getTrain.CreateUser = trainInput.CreateUser;
                        getTrain.OperDate = trainInput.OperDate;
                        getTrain.OperUser = trainInput.OperUser;
                        db.SubmitChanges(); 
                    }
                        
                }

            }
            catch (Exception ex)
            {
                responeData.code=0;
                responeData.message= ex.ToString(); 
            }
            return responeData;
        }
        /// <summary>
        /// 删除培训记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet]
        public Model.ResponeData DelTrain(string id)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getTrain = db.Bo_Sheng_Train.FirstOrDefault(x => x.ID == id);
                    if (getTrain != null)
                    {
                        db.Bo_Sheng_Train.DeleteOnSubmit(getTrain);
                        db.SubmitChanges();
                    }
                }
            }
            catch (Exception)
            {

                throw;
            }
            return responeData;
        }
        /// <summary>
        /// 添加培训人员信息
        /// </summary>
        /// <param name="trainPersonInput"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData AddTrainPerson([FromBody] TrainPersonInput trainPersonInput)
        {
            var responeData = new Model.ResponeData();
            try
            {
                if (string.IsNullOrEmpty(trainPersonInput.ID))
                {
                    responeData.code = 0;
                    responeData.message = "ID 不能为空";
                    return responeData;
                }
                if (string.IsNullOrEmpty(trainPersonInput.ProjectId))
                {
                    responeData.code = 0;
                    responeData.message = "ProjectId 不能为空";
                    return responeData;
                }
                else
                {
                    var project = APIProjectService.getProjectByProjectId(trainPersonInput.ProjectId);
                    if (project == null)
                    {
                        responeData.code = 0;
                        responeData.message = "ProjectId 不存在";
                        return responeData;
                    }

                }
                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getTrainPerson = db.Bo_Sheng_TrainPerson.FirstOrDefault(x => x.ID == trainPersonInput.ID);
                    if (getTrainPerson == null)
                    {
                        Model.Bo_Sheng_TrainPerson table = new Model.Bo_Sheng_TrainPerson
                        {
                            ID = trainPersonInput.ID,
                            ProjectId = trainPersonInput.ProjectId,
                            EmpName = trainPersonInput.EmpName,
                            IdentifyId = trainPersonInput.IdentifyId,
                            Station = trainPersonInput.Station,
                            CategoryName = trainPersonInput.CategoryName,
                            DepartName = trainPersonInput.DepartName,
                            SignInDate = trainPersonInput.SignInDate,
                            TrainPeriod = trainPersonInput.TrainPeriod,
                            State = trainPersonInput.State,
                            TotalScore = trainPersonInput.TotalScore,
                            PassScore = trainPersonInput.PassScore,
                            Score = trainPersonInput.Score,
                            IsPass = trainPersonInput.IsPass,
                            GroupNo = trainPersonInput.GroupNo,
                            ExamNo = trainPersonInput.ExamNo,
                            ExamCount = trainPersonInput.ExamCount,
                            DeviceNo = trainPersonInput.DeviceNo,
                            UploadTime = trainPersonInput.UploadTime,
                            Answers = trainPersonInput.Answers,
                            CreateDate = trainPersonInput.CreateDate,
                            CreateUser = trainPersonInput.CreateUser,
                            OperDate = trainPersonInput.OperDate,
                            OperUser = trainPersonInput.OperUser
                        };
                        db.Bo_Sheng_TrainPerson.InsertOnSubmit(table);
                        db.SubmitChanges();
                    }
                    else
                    {
                        getTrainPerson.ProjectId = trainPersonInput.ProjectId;
                        getTrainPerson.EmpName = trainPersonInput.EmpName;
                        getTrainPerson.IdentifyId = trainPersonInput.IdentifyId;
                        getTrainPerson.Station = trainPersonInput.Station;
                        getTrainPerson.CategoryName = trainPersonInput.CategoryName;
                        getTrainPerson.DepartName = trainPersonInput.DepartName;
                        getTrainPerson.SignInDate = trainPersonInput.SignInDate;
                        getTrainPerson.TrainPeriod = trainPersonInput.TrainPeriod;
                        getTrainPerson.State = trainPersonInput.State;
                        getTrainPerson.TotalScore = trainPersonInput.TotalScore;
                        getTrainPerson.PassScore = trainPersonInput.PassScore;
                        getTrainPerson.Score = trainPersonInput.Score;
                        getTrainPerson.IsPass = trainPersonInput.IsPass;
                        getTrainPerson.GroupNo = trainPersonInput.GroupNo;
                        getTrainPerson.ExamNo = trainPersonInput.ExamNo;
                        getTrainPerson.ExamCount = trainPersonInput.ExamCount;
                        getTrainPerson.DeviceNo = trainPersonInput.DeviceNo;
                        getTrainPerson.UploadTime = trainPersonInput.UploadTime;
                        getTrainPerson.Answers = trainPersonInput.Answers;
                        getTrainPerson.CreateDate = trainPersonInput.CreateDate;
                        getTrainPerson.CreateUser = trainPersonInput.CreateUser;
                        getTrainPerson.OperDate = trainPersonInput.OperDate;
                        getTrainPerson.OperUser = trainPersonInput.OperUser;
                        db.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.ToString();
            }
            return responeData;
        }
        /// <summary>
        /// 删除培训人员信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet]
        public Model.ResponeData DelTrainPerson(string id)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getTrainPerson = db.Bo_Sheng_TrainPerson.FirstOrDefault(x => x.ID == id);
                    if (getTrainPerson != null)
                    {
                        db.Bo_Sheng_TrainPerson.DeleteOnSubmit(getTrainPerson);
                        db.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.ToString();
            }
            return responeData;
        }
        /// <summary>
        /// 添加人员培训记录
        /// </summary>
        /// <param name="personTrainRecordInput"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData AddTrainPersonRecord([FromBody] PersonTrainRecordInput personTrainRecordInput)
        {
            var responeData = new Model.ResponeData();
            try
            {
                if (string.IsNullOrEmpty(personTrainRecordInput.ID))
                {
                    responeData.code = 0;
                    responeData.message = "ID 不能为空";
                    return responeData;
                }
                if (string.IsNullOrEmpty(personTrainRecordInput.ProjectId))
                {
                    responeData.code = 0;
                    responeData.message = "ProjectId 不能为空";
                    return responeData;
                }
                else
                {
                    var project = APIProjectService.getProjectByProjectId(personTrainRecordInput.ProjectId);
                    if (project == null)
                    {
                        responeData.code = 0;
                        responeData.message = "ProjectId 不存在";
                        return responeData;
                    }
                }

                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getPersonTrainRecord = db.Bo_Sheng_PersonTrainRecord.FirstOrDefault(x => x.ID == personTrainRecordInput.ID);
                    if (getPersonTrainRecord == null)
                    {
                        Model.Bo_Sheng_PersonTrainRecord table = new Model.Bo_Sheng_PersonTrainRecord
                        {
                            ID = personTrainRecordInput.ID,
                            ProjectId = personTrainRecordInput.ProjectId,
                            EmpName = personTrainRecordInput.EmpName,
                            IdentifyId = personTrainRecordInput.IdentifyId,
                            CategoryName = personTrainRecordInput.CategoryName,
                            DepartName = personTrainRecordInput.DepartName,
                            TrainPeriod = personTrainRecordInput.TrainPeriod,
                            TotalScore = personTrainRecordInput.TotalScore,
                            PassScore = personTrainRecordInput.PassScore,
                            Score = personTrainRecordInput.Score,
                            IsPass = personTrainRecordInput.IsPass,
                            GroupNo = personTrainRecordInput.GroupNo,
                            ExamNo = personTrainRecordInput.ExamNo,
                            ExamCount = personTrainRecordInput.ExamCount,
                            DeviceNo = personTrainRecordInput.DeviceNo,
                            Answers = personTrainRecordInput.Answers,
                            RecordName = personTrainRecordInput.RecordName,
                            TrainType = personTrainRecordInput.TrainType,
                            PaperMode = personTrainRecordInput.PaperMode,
                            TrainMode = personTrainRecordInput.TrainMode,
                            TrainPrincipal = personTrainRecordInput.TrainPrincipal,
                            TrainStartDate = personTrainRecordInput.TrainStartDate,
                            TrainEndDate = personTrainRecordInput.TrainEndDate,
                            TrainContent = personTrainRecordInput.TrainContent,
                            TrainDescript = personTrainRecordInput.TrainDescript,
                        };
                        db.Bo_Sheng_PersonTrainRecord.InsertOnSubmit(table);
                        db.SubmitChanges();
                    }
                    else
                    {
                        getPersonTrainRecord.ProjectId = personTrainRecordInput.ProjectId;
                        getPersonTrainRecord.EmpName = personTrainRecordInput.EmpName;
                        getPersonTrainRecord.IdentifyId = personTrainRecordInput.IdentifyId;
                        getPersonTrainRecord.CategoryName = personTrainRecordInput.CategoryName;
                        getPersonTrainRecord.DepartName = personTrainRecordInput.DepartName;
                        getPersonTrainRecord.TrainPeriod = personTrainRecordInput.TrainPeriod;
                        getPersonTrainRecord.TotalScore = personTrainRecordInput.TotalScore;
                        getPersonTrainRecord.PassScore = personTrainRecordInput.PassScore;
                        getPersonTrainRecord.Score = personTrainRecordInput.Score;
                        getPersonTrainRecord.IsPass = personTrainRecordInput.IsPass;
                        getPersonTrainRecord.GroupNo = personTrainRecordInput.GroupNo;
                        getPersonTrainRecord.ExamNo = personTrainRecordInput.ExamNo;
                        getPersonTrainRecord.ExamCount = personTrainRecordInput.ExamCount;
                        getPersonTrainRecord.DeviceNo = personTrainRecordInput.DeviceNo;
                        getPersonTrainRecord.Answers = personTrainRecordInput.Answers;
                        getPersonTrainRecord.RecordName = personTrainRecordInput.RecordName;
                        getPersonTrainRecord.TrainType = personTrainRecordInput.TrainType;
                        getPersonTrainRecord.PaperMode = personTrainRecordInput.PaperMode;
                        getPersonTrainRecord.TrainMode = personTrainRecordInput.TrainMode;
                        getPersonTrainRecord.TrainPrincipal = personTrainRecordInput.TrainPrincipal;
                        getPersonTrainRecord.TrainStartDate = personTrainRecordInput.TrainStartDate;
                        getPersonTrainRecord.TrainEndDate = personTrainRecordInput.TrainEndDate;
                        getPersonTrainRecord.TrainContent = personTrainRecordInput.TrainContent;
                        getPersonTrainRecord.TrainDescript = personTrainRecordInput.TrainDescript;
                        db.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.ToString();
            }
            return responeData;
        }
        /// <summary>
        /// 删除人员培训记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet]
        public Model.ResponeData DelTrainPersonRecord(string id)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                {
                    var getPersonTrainRecord = db.Bo_Sheng_PersonTrainRecord.FirstOrDefault(x => x.ID == id);
                    if (getPersonTrainRecord != null)
                    {
                        db.Bo_Sheng_PersonTrainRecord.DeleteOnSubmit(getPersonTrainRecord);
                        db.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.ToString();
            }
            return responeData;
        }

    }
}