Example #1
0
        /// <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);
        }
Example #2
0
 public bool AddCourse(CourseAddRequest request)
 {
     try
     {
         Course.Add(request);
         return(true);
     }
     catch (Exception e)
     {
         return(false);
     }
 }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
        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);
 }