using System; using System.Collections.Generic; using System.Linq; namespace BLL { public static class APITrainingTaskService { #region 根据ProjectId、PersonId获取培训任务教材明细列表 /// /// 根据ProjectId、PersonId获取培训任务教材明细列表 /// /// /// /// 1-培训中;2-已完成 /// public static List getTrainingTaskListByProjectIdPersonId(string projectId, string personId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { personId = PersonService.GetPersonIdByUserIdForApi(personId); var getDataLists = (from x in db.Training_Task join y in db.Training_Plan on x.PlanId equals y.PlanId where ((string.IsNullOrEmpty(projectId) && x.ProjectId == null) || (!string.IsNullOrEmpty(projectId) && x.ProjectId == projectId)) && x.UserId == personId && y.States != "0" orderby x.TaskDate descending select new Model.TrainingTaskItem { TaskId = x.TaskId, //PlanId = x.PlanId, PlanCode = y.PlanCode, PlanName = y.PlanName, TrainStartDate = string.Format("{0:yyyy-MM-dd HH:mm}", y.TrainStartDate), TeachAddress = y.TeachAddress, PersonId = x.UserId, TaskDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.TaskDate), TrainTypeName = db.Base_TrainType.FirstOrDefault(b => b.TrainTypeId == y.TrainTypeId).TrainTypeName, TrainLevelName = db.Base_TrainLevel.FirstOrDefault(b => b.TrainLevelId == y.TrainLevelId).TrainLevelName, PlanStatesName = y.States == "3" ? "已完成" : "培训中", }).ToList(); foreach(var item in getDataLists) { var user = db.Sys_User.FirstOrDefault(x=>x.UserId==item.PersonId); if (user != null) { item.PersonName = user.UserName; } else { var person = db.SitePerson_Person.FirstOrDefault(p => p.PersonId == item.PersonId); item.PersonName = person.PersonName ; } } return getDataLists; } } #endregion #region 根据TaskId获取培训任务教材明细列表 /// /// 根据TaskId获取培训任务列表 /// /// /// public static List getTrainingTaskItemListByTaskId(string taskId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { ////生成培训任务下培训明细 GetDataService.CreateTrainingTaskItemByTaskId(taskId); var getDataLists = (from x in db.Training_TaskItem where x.TaskId == taskId orderby x.TrainingItemCode select new Model.TrainingTaskItemItem { TaskItemId = x.TaskItemId, TaskId = x.TaskId, PlanId = x.PlanId, PersonId = x.PersonId, TrainingItemCode = x.TrainingItemCode, TrainingItemName = x.TrainingItemName, AttachUrl = x.AttachUrl.Replace('\\', '/'), }).ToList(); return getDataLists; } } #endregion #region 根据PlanId、PersonId将人员加入培训任务条件 /// /// 根据PlanId、PersonId将人员加入培训任务条件 /// /// 培训计划ID /// 人员ID /// public static string getTrainingTaskByPlanIdPersonIdCondition(string planId, string personId) { string alterString = string.Empty; using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var task = db.Training_Task.FirstOrDefault(x => x.PlanId == planId && x.UserId == personId); if (task != null) { alterString = "人员已在培训任务中!"; } else { var plan = db.Training_Plan.FirstOrDefault(e => e.PlanId == planId); if (plan != null) { if (plan.States != "0" && plan.States != "1") { alterString = "当前培训不能再加入人员!"; } else { var user = db.Sys_User.FirstOrDefault(e => e.UserId == personId); var person = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId); if ((person != null && plan.ProjectId == person.ProjectId && plan.UnitIds.Contains(person.UnitId) && (string.IsNullOrEmpty(plan.WorkPostId) || plan.WorkPostId.Contains(person.WorkPostId)))|| (user != null && plan.UnitIds.Contains(person.UnitId) && (string.IsNullOrEmpty(plan.DepartIds) || plan.DepartIds.Contains(person.DepartId)))) { var trainType = db.Base_TrainType.FirstOrDefault(e => e.TrainTypeId == plan.TrainTypeId); if (trainType != null) { if (!trainType.IsRepeat.HasValue || trainType.IsRepeat == false) { var trainRecord = (from x in db.EduTrain_TrainRecord join y in db.EduTrain_TrainRecordDetail on x.TrainingId equals y.TrainingId where x.TrainTypeId == plan.TrainTypeId && x.ProjectId == person.ProjectId && y.PersonId == personId && y.CheckResult == true select x).FirstOrDefault(); if (trainRecord != null) { alterString = "人员已参加过当前类型的培训!"; } else { var getTask = (from x in db.Training_Plan join y in db.Training_Task on x.PlanId equals y.PlanId where x.TrainTypeId == plan.TrainTypeId && y.UserId == personId && x.States != "3" select x).FirstOrDefault(); if (getTask != null) { alterString = "人员已再同培训类型的培训中!"; } } } } else { alterString = "当前培训类型有问题!"; } } else { alterString = "人员与培训计划不匹配!"; } } } else { alterString = "当前培训计划不允许再增加人员!"; } } } return alterString; } #endregion #region 根据PlanId、PersonId将人员加入培训任务 /// /// 根据PlanId、PersonId将人员加入培训任务 /// /// 培训计划ID /// 人员ID /// public static void getTrainingTaskByPlanIdPersonId(string planId, string personId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var plan = db.Training_Plan.FirstOrDefault(e => e.PlanId == planId); Model.Training_Task newTask = new Model.Training_Task { TaskId = SQLHelper.GetNewID(), PlanId = planId, UserId = personId, TaskDate = DateTime.Now, States = "0", }; if (plan != null) { newTask.ProjectId = plan.ProjectId; db.Training_Task.InsertOnSubmit(newTask); db.SubmitChanges(); ////生成培训任务下培训明细 GetDataService.CreateTrainingTaskItemByTaskId(newTask.TaskId); } } } #endregion #region 根据TrainingPlanId获取培训任务教材明细列表 /// /// 根据TrainingPlanId获取培训任务教材明细列表 /// /// /// 培训计划人员 public static List getTrainingTaskListByTrainingPlanId(string trainingPlanId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getDataLists = (from x in db.Training_Task where x.PlanId == trainingPlanId orderby x.TaskDate descending select new Model.TrainingTaskItem { TaskId = x.TaskId, PlanId = x.PlanId, PersonId = x.UserId, TaskDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.TaskDate), States = x.States, }).ToList(); foreach(var item in getDataLists) { var person = db.SitePerson_Person.FirstOrDefault(p => p.PersonId == item.PersonId); if (person != null) { item.PersonName = person.PersonName; } else { var sysUser = db.Sys_User.FirstOrDefault(p => p.UserId == item.PersonId); if (sysUser != null) { item.PersonName = sysUser.UserName; } } } return getDataLists; } } #endregion #region 根据TrainingPlanId获取培训任务教材明细列表 /// /// 根据TrainingPlanId获取培训任务教材明细列表 /// /// /// 培训计划人员 public static Model.Training_TaskItem updateTaskItemLearnTime(string taskItemId,DateTime startTime,DateTime endTime) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var q = from x in db.Training_TaskItem where x.TaskItemId == taskItemId select x; var item = q.FirstOrDefault(); if (!item.StartTime.HasValue) { item.StartTime = startTime; } if (!item.LearnTime.HasValue) { item.LearnTime = 0; } var span = endTime.Subtract(startTime); item.LearnTime = item.LearnTime.Value + (int)span.TotalMinutes; item.EndTime = endTime; db.SubmitChanges(); return item; } } #endregion } }