public IActionResult InsertRating(RatingInsertModel ratingInsertModel) { BaseResponseDto responseDto = null; if (ratingInsertModel == null) { return(BadRequest("Faulthy input must not be null")); } try { responseDto = _mentor.InsertRating(ratingInsertModel); } catch (Exception e) { return(StatusCode(500, e.Message)); } return(StatusCode(responseDto.Status, responseDto.Message)); }
public BaseResponseDto InsertRating(RatingInsertModel ratingInsertModel) { BaseResponseDto responseDto = new BaseResponseDto { Status = 200, Message = null }; #region Check input if (ratingInsertModel == null) { responseDto.Status = 400; responseDto.Message = "Faulthy input"; return(responseDto); } if (ratingInsertModel.RatingScore < 0 || ratingInsertModel.RatingScore > 5) { responseDto.Status = 400; responseDto.Message = "Rating is Base 5. Your input is not in Base 5"; return(responseDto); } Mentor existingMentor = _uow .GetRepository <Mentor>() .GetAll() .Include(m => m.Rating) .FirstOrDefault(m => m.MentorId == ratingInsertModel.MentorId); if (existingMentor == null) { responseDto.Status = 404; responseDto.Message = "Mentor Profile not found"; return(responseDto); } #endregion Rating mentorRating = existingMentor.Rating; double currentScore = mentorRating.RatingScore.Value; int currentCount = mentorRating.RatingCount.Value; int newCount = currentCount + 1; double calCurrentCount = (double)currentCount; double calNewCount = (double)newCount; try { mentorRating.RatingScore = ((currentScore * calCurrentCount) + ratingInsertModel.RatingScore) / calNewCount; mentorRating.RatingCount = newCount; _uow.GetRepository <Rating>().Update(mentorRating); _uow.Commit(); } catch (Exception e) { throw e; } responseDto.Status = 200; responseDto.Message = "Success"; return(responseDto); }