public async Task <ActionResult <InstructorRatingResponse> > getInstructorRating(string instructor) { Users instructorUser = await userRepository.getUser(instructor); if (instructorUser == null) { return(StatusCode(StatusCodes.Status404NotFound, "Instructor not found!")); } if (instructorUser.UserType != UserTypes.Instructor) { return(StatusCode(StatusCodes.Status403Forbidden, "User specified is not an instructor!")); } InstructorRating rating = await instructorRatingRepository.getRating(instructor); InstructorRatingResponse response = new InstructorRatingResponse(); if (rating == null) { response.instructor = instructor; response.ratingCount = 0; response.ratingSum = 0; } else { response.instructor = rating.InstructorUsernameForeignKey; response.ratingCount = rating.RatingCount; response.ratingSum = rating.RatingSum; } return(Ok(response)); }
public bool CreateInstructorRating(InstructorRatingCreate model) { var ctx = new ApplicationDbContext(); var createdBy = ctx.Users.FirstOrDefault(u => u.Id == _userId).UserName; var entity = new InstructorRating { Description = model.Description, InstructorId = model.InstructorId, Score = model.Score, //FullName = model.FullName, //ProgramId = model.ProgramId, //AcademyId = model.AcademyId, //AcademyName = model.AcademyName, OwnerId = _userId, CreatedBy = createdBy }; ctx.Ratings.Add(entity); return(ctx.SaveChanges() == 1); //_context.Ratings.Add(entity); //var changeCount = _context.SaveChangesAsync(); //return changeCount == 1; }
public async Task <bool> rateClass(InstructorRating rating) { context.Update(rating); return((await context.SaveChangesAsync()) > 0); }
public async Task <bool> addRating(InstructorRating rating) { context.Add(rating); return((await context.SaveChangesAsync()) > 0); }
public async Task <ActionResult <InstructorRatingResponse> > rateInstructor(InstructorRatingRequest request) { if (request.username == request.instructor) { return(StatusCode(StatusCodes.Status403Forbidden, "Instructors cannot rate themselves!")); } Users user = await userRepository.getUser(request.username); if (user == null) { return(StatusCode(StatusCodes.Status401Unauthorized, "User attempting to make the rating does not exist!")); } Users instructor = await userRepository.getUser(request.instructor); if (instructor == null) { return(StatusCode(StatusCodes.Status404NotFound, "Instructor not found!")); } if (instructor.UserType != UserTypes.Instructor) { return(StatusCode(StatusCodes.Status403Forbidden, "The user you're trying to rate is not an instructor!")); } if (user.GymIdForeignKey != instructor.GymIdForeignKey) { return(StatusCode(StatusCodes.Status401Unauthorized, "You cannot rate an instructor from another gym!")); } if (request.rating > 5 || request.rating < 0) { return(StatusCode(StatusCodes.Status400BadRequest, "Rating provided is out of allowed range!")); } InstructorRating rating = await instructorRatingRepository.getRating(instructor.Username); if (rating == null) { rating = new InstructorRating(); rating.InstructorUsernameForeignKey = instructor.Username; rating.RatingCount = 0; rating.RatingSum = 0; if (!(await instructorRatingRepository.addRating(rating))) { return(StatusCode(StatusCodes.Status500InternalServerError, "Something went wrong creating the rating record for the instructor!")); } } rating.RatingCount++; rating.RatingSum += request.rating; if (await instructorRatingRepository.rateClass(rating)) { InstructorRatingResponse response = new InstructorRatingResponse(); response.instructor = rating.InstructorUsernameForeignKey; response.ratingCount = rating.RatingCount; response.ratingSum = rating.RatingSum; return(Ok(response)); } else { return(StatusCode(StatusCodes.Status500InternalServerError, "Something went wrong adding your rating to the database!")); } }