public IActionResult GetCourses([FromQuery] int? categoryId) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { var courses = _courseRepository.GetCourses() .Where(c => c.DeletedAt == null && (c.Category.Id == categoryId || categoryId == null)) .OrderBy(c => c.Title_EN) .ThenBy(c => c.Category) .ThenBy(c => c.CreatedAt); var response = new List<object>(); foreach (var course in courses) { var res = ResponseGenerator.GenerateCourseResponse(course, true); response.Add(res); } return Ok(new { courses = response }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public IActionResult GetDeletedCourses() { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { var courses = _courseRepository.GetCourses() .Where(c => c.DeletedAt != null); var response = new List<object>(); foreach (var course in courses) { var res = ResponseGenerator.GenerateCourseResponse(course,true); response.Add(res); } return Ok(new { courses = response }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public IActionResult PublishCourse([FromBody] Course course, [FromQuery] string action) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { var crs = _courseRepository.FindById(course.Id); if (crs == null) return NotFound(); if (action == "publish") { crs.IsPublished = true; crs.PublishedAt = DateTime.Now; } else if (action == "unpublish") { crs.IsPublished = false; crs.PublishedAt = null; } var updatedCourse = _courseRepository.Update(crs); var response = ResponseGenerator.GenerateCourseResponse(updatedCourse, true); return Ok(new { updatedCourse = response }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public IActionResult GetMemberCourses([FromQuery] string userId) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List <string>(); try { var courses = new List <object>(); var allCourses = _courseRepository.GetCourses(); foreach (var course in allCourses) { if (course.Class != null) { foreach (var member in course.Class.ClassUsers) { if (member.UserId == userId) { courses.Add(ResponseGenerator.GenerateCourseResponse(course, false)); } } } } return(Ok(new { courses })); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } }
public IActionResult GetUserFavoriteCourses([FromQuery] string userId) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List <string>(); try { if (string.IsNullOrEmpty(userId)) { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } var favorites = _favoriteRepository.GetFavoritesByUserId(userId); var courses = new List <object>(); foreach (var fav in favorites) { foreach (var course in _courseRepository.GetCourses()) { if (fav.CourseId == course.Id) { courses.Add(ResponseGenerator.GenerateCourseResponse(course, false)); } } } return(Ok(new { courses })); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } }
public IActionResult GetLatestCourses() { var lang = Request.Headers["language"].ToString(); var errorMessages = new List <string>(); try { var courses = _courseRepository.GetCourses() .Where(c => c.DeletedAt == null && c.IsPublished == true) .OrderByDescending(c => c.PublishedAt) .ThenBy(c => c.Title_EN) .ThenBy(c => c.Category.Title_EN) .Take(5) .ToList(); var response = new List <object>(); foreach (var course in courses) { var res = ResponseGenerator.GenerateCourseResponse(course, false); response.Add(res); } return(Ok(new { courses = response })); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } }
public IActionResult UpdateCourse([FromBody] Course course) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { //var author = await _userManager.FindByIdAsync(course.Author.Id); var category = _categoryRepository.GetCategory(course.Category.Id); var newCourse = _courseRepository.FindById(course.Id); newCourse.Title_EN = course.Title_EN; newCourse.Title_FR = course.Title_FR ?? course.Title_EN; newCourse.Slug_EN = new SlugHelper().GenerateSlug(course.Title_EN); newCourse.Slug_FR = course.Title_FR != null ? new SlugHelper().GenerateSlug(course.Title_FR): new SlugHelper().GenerateSlug(course.Title_EN); newCourse.Description_EN = course.Description_EN; newCourse.Description_FR = course.Description_FR ?? course.Description_EN; newCourse.Prerequisites_EN = course.Prerequisites_EN; newCourse.Prerequisites_FR = course.Prerequisites_FR ?? course.Prerequisites_EN; newCourse.Duration = course.Duration; newCourse.ImagePath = course.ImagePath; newCourse.IsFree = course.IsFree == null ? false : course.IsFree.Value; newCourse.Price = course.Price; newCourse.IsPublished = course.IsPublished == null ? false : course.IsPublished.Value; newCourse.UpdatedBy = course.UpdatedBy; newCourse.UpdatedAt = DateTime.Now; newCourse.PublishedAt = null; //newCourse.Author = author; newCourse.Category = category; newCourse.Languages = course.Languages; newCourse.Level = course.Level; if (newCourse.IsPublished.Value == true) newCourse.PublishedAt = DateTime.Now; var updatedCourse = _courseRepository.Update(newCourse); var response = ResponseGenerator.GenerateCourseResponse(updatedCourse, true); if (updatedCourse != null) { return Ok(new { updatedCourse = response }); } errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public IActionResult CreateClass([FromBody] Class cls) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List <string>(); try { if (string.IsNullOrEmpty(cls.Name_EN) || cls.CourseId == null) { errorMessages.Add(_translator.GetTranslation("VALIDATION.CLASSNAME_COURSEID_REQUIRED", lang)); return(BadRequest(new { errors = errorMessages })); } if (_classRepository.IsExistsInCourse(cls.CourseId.Value)) { errorMessages.Add(_translator.GetTranslation("CLASSES.COURSE_HAS_CLASS", lang)); return(BadRequest(new { errors = errorMessages })); } var course = _courseRepository.FindById(cls.CourseId.Value); if (course == null) { return(NotFound()); } var newCls = new Class() { Id = $"{course.Id.ToString()}-{Guid.NewGuid().ToString()}", Name_EN = cls.Name_EN, Course = course, CourseId = course.Id }; var createdClass = _classRepository.Create(newCls); if (createdClass == null) { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } return(Ok(new { course = ResponseGenerator.GenerateCourseResponse(course, true) })); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } }
public IActionResult GetCourse([FromQuery] long id) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { var course = _courseRepository.FindById(id); var response = ResponseGenerator.GenerateCourseResponse(course, true); return Ok(new { course = response }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public IActionResult AddTagToCourse([FromBody] CourseTag courseTag, [FromQuery] string action) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { var course = _courseRepository.FindById(courseTag.CourseId); var courseTags = course.CourseTags; if (action == "add") { var newTag = _tagRepository.FindById(courseTag.TagId); var newCourseTag = new CourseTag() { CourseId = courseTag.CourseId, Course = course, TagId = courseTag.TagId, Tag = newTag }; courseTags.Add(newCourseTag); } else if(action == "remove") { var currentCourseTag = courseTags .SingleOrDefault(x => x.TagId == courseTag.TagId && x.CourseId == courseTag.CourseId); courseTags.Remove(currentCourseTag); } course.CourseTags = courseTags; var updatedCourse = _courseRepository.Update(course); var response = ResponseGenerator.GenerateCourseResponse(updatedCourse, true); return Ok(new { updatedCourse = response }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public IActionResult CreateSession([FromBody] Session session, [FromQuery] string action) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { var section = _sectionRepository.FindById(session.Section.Id); if (action == "add") { var newSession = new Session() { Section = section, Title_EN = session.Title_EN, Slug_EN = new SlugHelper().GenerateSlug(session.Title_EN), Order = session.Order, Duration = session.Duration, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now, CreatedBy = session.CreatedBy, UpdatedBy = session.UpdatedBy }; _sessionRepository.Create(newSession); } else if (action == "edit") { var s = _sessionRepository.FindById(session.Id); s.Title_EN = session.Title_EN; s.Slug_EN = new SlugHelper().GenerateSlug(session.Title_EN); s.Duration = session.Duration; s.UpdatedAt = DateTime.Now; s.UpdatedBy = session.UpdatedBy; if (s.Order != session.Order) { var oldOrder = s.Order; // Previous var oldSession = section.Sessions.SingleOrDefault(s => s.Order == session.Order); if (oldSession != null) { oldSession.Order = oldOrder; var updatedOldSession = _sessionRepository.Update(oldSession); } // New s.Order = session.Order; } _sessionRepository.Update(s); } var course = _courseRepository.FindById(session.Section.Course.Id); var response = ResponseGenerator.GenerateCourseResponse(course, true); return Ok(new { updatedCourse = response }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public IActionResult CreateCourse([FromBody] Course course) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List<string>(); try { //var author = await _userManager.FindByIdAsync(course.Author.Id); var category = _categoryRepository.GetCategory(course.Category.Id); var slugHelper = new SlugHelper(); var newCourse = new Course() { Title_EN = course.Title_EN, Title_FR = course.Title_FR ?? course.Title_EN, Slug_EN = slugHelper.GenerateSlug(course.Title_EN), Slug_FR = course.Title_FR != null ? slugHelper.GenerateSlug(course.Title_FR) : slugHelper.GenerateSlug(course.Title_EN), Description_EN = course.Description_EN, Description_FR = course.Description_FR ?? course.Description_EN, Prerequisites_EN = course.Prerequisites_EN, Prerequisites_FR = course.Prerequisites_FR ?? course.Prerequisites_EN, Duration = course.Duration, ImagePath = course.ImagePath, IsFree = course.IsFree == null ? false : course.IsFree.Value, Price = course.Price, IsPublished = course.IsPublished == null ? false : course.IsPublished.Value, CreatedBy = course.CreatedBy, UpdatedBy = course.UpdatedBy, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now, PublishedAt = null, DeletedAt = null, DeletedBy = null, //Author = author, Category = category, Languages = course.Languages, Level = course.Level, Class = null }; if (newCourse.IsPublished.Value == true) newCourse.PublishedAt = DateTime.Now; var createdCourse = _courseRepository.Create(newCourse); var response = ResponseGenerator.GenerateCourseResponse(createdCourse, true); if (createdCourse != null) { return Ok(new { createdCourse = response }); } errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return BadRequest(new { errors = errorMessages }); } }
public async Task <IActionResult> RateCourse([FromBody] CourseRating courseRating) { var lang = Request.Headers["language"].ToString(); var errorMessages = new List <string>(); try { var user = await _userManager.FindByIdAsync(courseRating.UserId); var course = _courseRepository.FindById(courseRating.CourseId); if (user == null || course == null) { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } var allowedValues = new List <float>() { 1, 2, 3, 4, 5 }; if (!allowedValues.Contains(courseRating.Value)) { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } var rating = _courseRatingRepository.FindByUserCourse(user.Id, course.Id); CourseRating createdCourseRating; if (rating == null) { var newRating = new CourseRating() { Course = course, CourseId = course.Id, User = user, UserId = user.Id, Value = courseRating.Value, RateDateTime = DateTime.Now }; createdCourseRating = _courseRatingRepository.Create(newRating); } else { rating.OldValue = rating.Value; rating.Value = courseRating.Value; rating.RateDateTimeUpdated = DateTime.Now; createdCourseRating = _courseRatingRepository.Update(rating); } if (createdCourseRating == null) { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } //await _hubContext.Clients.All.SendAsync("SignalCourseRateReceived", ResponseGenerator.GenerateCourseResponse(course)); return(Ok(new { course = ResponseGenerator.GenerateCourseResponse(course, false) })); } catch { errorMessages.Add(_translator.GetTranslation("ERROR", lang)); return(BadRequest(new { errors = errorMessages })); } }