/// <summary> /// 添加一个课程 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-09-14</para> /// </summary> /// <param name="request">课程添加的数据源</param> public void Add(CourseAddRequest request) { //校验 Validate(request); //准备课程数据 TblDatCourse course = AutoMapper.Mapper.Map <TblDatCourse>(request); course.CourseId = IdGenerator.NextId(); course.CompanyId = _companyId; course.CreateTime = course.UpdateTime = DateTime.Now; course.IsDisabled = false; //准备课程级别数据 List <TblDatCourseLevelMiddle> courseLevelMiddles = request.CourseLevels.Select(c => new TblDatCourseLevelMiddle { CourseLevelMiddleId = IdGenerator.NextId(), CourseId = course.CourseId, BeginAge = c.SAge, EndAge = c.EAge, CourseLevelId = c.CourseLevelId, Duration = c.Duration, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, }).ToList(); new TblDatCourseRepository().Add(course); new TblDatCourseLevelMiddleRepository().Add(courseLevelMiddles); }
public bool AddCourse(CourseAddRequest request) { try { Course.Add(request); return(true); } catch (Exception e) { return(false); } }
/// <summary> /// 修改课程 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-09-14</para> /// </summary> /// <param name="dto">课程修改的数据</param> /// <exception cref="BussinessException"> /// 异常ID:1,异常描述:课程对象为空 /// </exception> public async Task ModifyAsync(CourseAddRequest dto) { //校验 var oldCourse = await _courseRepository.Value.LoadTaskByCourseId(_companyId, dto.CourseId); if (oldCourse == null) { throw new BussinessException(ModelType.Default, 1); } Validate(dto, dto.CourseId); bool isAsyncCourseName = !dto.ShortName.Equals(oldCourse.ShortName); //准备课程数据 TblDatCourse course = AutoMapper.Mapper.Map <TblDatCourse>(dto); course.CreateTime = oldCourse.CreateTime; course.UpdateTime = DateTime.Now; course.IsDisabled = oldCourse.IsDisabled; course.CourseId = oldCourse.CourseId; //准备课程级别数据 List <TblDatCourseLevelMiddle> courseLevelMiddles = dto.CourseLevels.Select(c => new TblDatCourseLevelMiddle { CourseLevelMiddleId = IdGenerator.NextId(), CourseId = course.CourseId, BeginAge = c.SAge, EndAge = c.EAge, CourseLevelId = c.CourseLevelId, Duration = c.Duration, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, }).ToList(); await _courseRepository.Value.UpdateTask(course); await _courseLevelMiddleRepository.Value.BatchDeleteByCourseId(course.CourseId); await _courseLevelMiddleRepository.Value.AddTask(courseLevelMiddles); //课程简称发生变化,则学习计划同步课程简称 if (isAsyncCourseName) { Dictionary <long, string> keyValues = new Dictionary <long, string>(); keyValues.Add(course.CourseId, course.ShortName); //学习计划同步课程简称 StudyPlanService.AsyncCourseName(keyValues); } }
public DomainModelResponse Add(CourseAddRequest request) { GroupType gt = _repGroupType.Get(filter: x => x.GroupTypeCode == request.GroupType).FirstOrDefault(); Course course = new Course() { CourseCode = request.CourseCode, CourseName = request.CourseName, CourseDescription = request.CourseDescription, LastChangedTime = DateTime.UtcNow, DesiredSkillSets = request.DesiredSkillSets, GroupType = gt, Roaster = null, Term = request.Term, PrefGroupTypeId = gt.GroupTypeId, PrefGroupSize = request.GroupSize, SimilarSkillSetPreffered = request.PreferSimiliarSkillSet }; _repCourse.Add(course); _uow.Commit(); course = _repCourse.Get(filter: f => f.CourseCode == request.CourseCode).FirstOrDefault(); if (request.userList != null) { List <string> roleCodes = request.userList.Select(x => x.roleCode).ToList(); List <string> emailIds = request.userList.Select(x => x.emailId).ToList(); List <AspNetRoles> roles = _repRole.Get(filter: f => roleCodes.Contains(f.Name)).ToList(); List <AspNetUsers> userProfiles = _repUserProfile.Get(filter: f => emailIds.Contains(f.Email)).ToList(); foreach (var user in request.userList) { EntityModel.CourseUser cur = new EntityModel.CourseUser() { CourseId = course.CourseId, Course = course, UserId = userProfiles.Where(x => x.Email == user.emailId).FirstOrDefault().Id, AspNetUsers = userProfiles.Where(x => x.Email == user.emailId).FirstOrDefault(), LastChangedTime = DateTime.UtcNow }; _repCourseUserRole.Add(cur); } _uow.Commit(); } _courseResponse.addResponse("Add", MessageCodes.InfoCreatedSuccessfully, "Course : " + request.CourseCode); return(_courseResponse); }
/// <summary> /// 校验数据 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2019-02-20</para> /// </summary> /// <param name="request">课程添加的数据源</param> /// <param name="courseId">课程Id 添加的时可空,编辑时传入</param> /// <exception cref="BussinessException"> /// 异常ID:4,异常描述:课程等级不能为空 /// 异常ID:1,异常描述:根据业务校验课程的一些基本信息是否重复 /// </exception> private void Validate(CourseAddRequest request, long?courseId = null) { if (request.CourseLevels == null || !request.CourseLevels.Any()) { throw new BussinessException(ModelType.Timetable, 4); } var courses = GetAllAsync().Result.Where(x => !x.IsDisabled && x.CompanyId == this._companyId).ToList(); if (courseId.HasValue) { courses = courses.Where(x => x.CourseId != courseId.Value).ToList(); } //校验课程编号是否存在 bool courseCodeIsExist = courses.Any(x => x.CourseCode == request.CourseCode); if (courseCodeIsExist) { throw new BussinessException(ModelType.Timetable, 1, $"课程代码\"{ request.CourseCode }\"已存在"); } //校验课程简称 bool shortNameIsExist = courses.Any(x => x.ShortName == request.ShortName); if (shortNameIsExist) { throw new BussinessException(ModelType.Timetable, 1, $"课程简称\"{request.ShortName}\"已存在"); } //校验课程名称(中文) bool courseCnNameIsExist = courses.Any(x => x.CourseCnName == request.CourseCnName); if (courseCnNameIsExist) { throw new BussinessException(ModelType.Timetable, 1, $"课程名称(中文)\"{request.CourseCnName}\"已存在"); } //校验课程名称(英文) bool courseEnNameIsExist = courses.Any(x => x.CourseEnName == request.CourseEnName); if (courseEnNameIsExist) { throw new BussinessException(ModelType.Timetable, 1, $"课程名称(英文)\"{request.CourseEnName}\"已存在"); } //校验班级名称(中文) bool classCnNameIsExist = courses.Any(x => x.ClassCnName == request.ClassCnName); if (classCnNameIsExist) { throw new BussinessException(ModelType.Timetable, 1, $"班级名称(中文)\"{request.ClassCnName}\"已存在"); } //校验班级名称(英文) bool classEnNameIsExist = courses.Any(x => x.ClassEnName == request.ClassEnName); if (classEnNameIsExist) { throw new BussinessException(ModelType.Timetable, 1, $"班级名称(英文)\"{request.ClassEnName}\"已存在"); } List <AgeGroup> ageGroups = request.CourseLevels.Select(x => new AgeGroup { MinAge = x.SAge, MaxAge = x.EAge }).ToList(); VerifyAgeCross(ageGroups, request.CourseType, _companyId, courseId); }
public async Task <ActionResult> Create(CreateCourseModel model) { if (ModelState.IsValid) { CourseAddRequest car = new CourseAddRequest() { CourseCode = model.CourseCode, CourseName = model.CourseName, //DesiredSkillSets = model.DesiredSkillSets, GroupSize = model.GroupSize, CourseDescription = model.CourseDescription, PreferSimiliarSkillSet = model.PreferSimiliarSkillSet, Term = model.Term, userList = new List <CourseNewUser>() }; switch (model.GroupType) { case "Study Group": car.GroupType = "Study"; break; case "Project Group (Open Projects)": car.GroupType = "OpenProject"; break; case "Project Group (Closed Projects)": car.GroupType = "ClosedProject"; break; } if (model.Users != null && model.Users.Count > 0) { foreach (var user in model.Users) { car.userList.Add(new CourseNewUser() { emailId = user.emailId, roleCode = user.role.ToString() }); } } bool result = _courseCom.AddCourse(car); if (result) //Course is added, now generate intelligent question set and add questionnaire { QuestionnaireAddRequest qar = new QuestionnaireAddRequest() { IsATemplate = false, QuestionnaireCode = DateTime.UtcNow.ToString("MMddyyHmmss"), Questions = new List <DomainDto.Question>() }; List <string> timeZones = TimeZoneInfo.GetSystemTimeZones().Select(x => x.DisplayName).ToList(); qar.Questions.Add(new DomainDto.Question() { questionText = "In what timezone are you mostly available?", questionType = "MultipleChoice", answerChoices = timeZones }); List <string> timeSlots = new List <string>() { "6:00 AM - 9:00 AM", "9:00 AM - 12:00 PM", "12:00 PM - 3:00 PM", "3:00 PM - 6:00 PM", "6:00 PM - 9:00 PM", "9:00 PM - 12:00 AM", "Anytime", "I am not available" }; qar.Questions.Add(new DomainDto.Question() { questionText = "During weekday, what time are you available for group calls?", questionType = "MultipleChoice", answerChoices = timeSlots }); qar.Questions.Add(new DomainDto.Question() { questionText = "During weekends, what time are you available for group calls?", questionType = "MultipleChoice", answerChoices = timeSlots }); if (model.GenerateIntelligentQuestionnaire) { if (model.DesiredSkillSets != null) { foreach (var skl in model.DesiredSkillSets.Split(',')) { qar.Questions.Add(new DomainDto.Question() { questionText = "What is your expertise in " + skl.Trim(), questionType = "MultipleChoice", answerChoices = new List <string>() { "Beginner", "Intermediate", "Expert" } }); } } } if (model.Questions != null && model.Questions.Count > 0) { foreach (var q in model.Questions) { qar.Questions.Add(new DomainDto.Question() { questionType = q.QuestionType, questionText = q.QuestionText, answerChoices = q.AnswerChoices.Split(',').ToList(), Priority = getPriority(q.Priority) }); } } bool res = _questionnaireCom.AddQuestionnaire(qar); if (res)//Questionnaire is added, update course with questionnaire { CourseUpdateRequest cur = new CourseUpdateRequest() { CourseCode = model.CourseCode, QuestionnaireCode = qar.QuestionnaireCode }; bool resp = _courseCom.UpdateCourse(cur); if (!resp) { ModelState.AddModelError("", "Oops! Course was added, but someting wrong happened while adding questionnaire to course"); return(View(model)); } } //MvcApplication.courses.Add(model.CourseCode, model.CourseName); //MvcApplication.courseDescription.Add(model.CourseCode, model.CourseDescription); return(RedirectToAction("Teacher", "Course")); } } ModelState.AddModelError("", "Oops! Something wrong happened! Please try again."); return(View(model)); }
public void Post([FromBody] CourseAddRequest request) { new CourseService(base.CurrentUser.CompanyId).Add(request); }
public async Task Put(long courseId, [FromBody] CourseAddRequest request) { request.CourseId = courseId; request.CompanyId = base.CurrentUser.CompanyId; await new CourseService(base.CurrentUser.CompanyId).ModifyAsync(request); }