Exemple #1
0
        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);
        }