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, 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<EntityModel.Role> roles = _repRole.Get(filter: f => roleCodes.Contains(f.RoleCode)).ToList(); List<UserProfile> userProfiles = _repUserProfile.Get(filter: f => emailIds.Contains(f.EmailId)).ToList(); foreach(var user in request.userList) { CourseUserRole cur = new CourseUserRole() { CourseId = course.CourseId, Course = course, Role = roles.Where(x => x.RoleCode == user.roleCode).FirstOrDefault(), RoleId = roles.Where(x => x.RoleCode == user.roleCode).FirstOrDefault().RoleId, UserId = userProfiles.Where(x => x.EmailId == user.emailId).FirstOrDefault().UserId, UserProfile = userProfiles.Where(x => x.EmailId == user.emailId).FirstOrDefault(), LastChangedTime = DateTime.UtcNow }; _repCourseUserRole.Add(cur); } _uow.Commit(); } _courseResponse.addResponse("Add", MessageCodes.InfoCreatedSuccessfully, "Course : " + request.CourseCode); return _courseResponse; }
public async Task<bool> AddCourse(CourseAddRequest request) { try { HttpResponseMessage httpResp = apiCom.executePostAPI("Course", JsonConvert.SerializeObject(request)); if (httpResp.IsSuccessStatusCode) { return true; } else { return false; } } catch { return false; } }
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, 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).Result; 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, 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() }); } } bool res = _questionnaireCom.AddQuestionnaire(qar).Result; if(res)//Questionnaire is added, update course with questionnaire { CourseUpdateRequest cur = new CourseUpdateRequest() { CourseCode = model.CourseCode, QuestionnaireCode = qar.QuestionnaireCode }; bool resp = _courseCom.UpdateCourse(cur).Result; 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); }