コード例 #1
0
ファイル: RatingController.cs プロジェクト: chrisfisher/kdfy
        public int AddRating(RatingRequest request)
        {
            if (request == null)
            {
                return(-1);
            }

            var rating = new Rating
            {
                Description = request.RatingDescription,
                Tag         = _friendlyContext.Tags.Find(request.TagId)
            };

            _friendlyContext.Ratings.Add(rating);
            _friendlyContext.SaveChanges();
            return(rating.Id);
        }
コード例 #2
0
        public IActionResult Create(long jobId, [FromBody] RatingRequest model)
        {
            var      clientId = long.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));
            UserRole userRole;

            if (Enum.TryParse(typeof(UserRole), User.FindFirstValue(ClaimTypes.Role), true, out var role))
            {
                userRole = (UserRole)role;
            }
            else
            {
                return(BadRequest());
            }

            return(userRole == UserRole.FreeLancer
                ? CreateAsFreeLancer(clientId, jobId, model)
                : CreateAsEmployeer(clientId, jobId, model));
        }
コード例 #3
0
        public IActionResult GetRatingForBook([FromBody] RatingRequest request)
        {
            var bookIds   = request?.BookIds ?? Array.Empty <int>();
            var avgRating = _context.BookRatings
                            .Where(rating => bookIds.Contains(rating.BookId))
                            .GroupBy(b => b.BookId)
                            .Select(grp =>
                                    new AvgRatingDto
            {
                BookId    = grp.Key,
                AvgRating = Math.Round(grp.Select(r => r.Rating).Average(), 1)
            }).ToArray();
            var result = new RatingResponse {
                Ratings = avgRating
            };

            return(Ok(result));
        }
コード例 #4
0
ファイル: RatingController.cs プロジェクト: chrisfisher/kdfy
        public bool EditRating(RatingRequest request)
        {
            if (request == null)
            {
                return(false);
            }

            var rating = _friendlyContext.Ratings.Find(request.RatingId);

            if (rating == null)
            {
                return(false);
            }
            rating.Description = request.RatingDescription;
            rating.Tag         = _friendlyContext.Tags.Find(request.TagId);
            _friendlyContext.SaveChanges();
            return(true);
        }
コード例 #5
0
        private IActionResult CreateAsFreeLancer(long clientId, long jobId, RatingRequest model)
        {
            if (!_ratingService.FreeLancerCanWriteReview(jobId, clientId))
            {
                return(Forbid());
            }

            var jobOwnerId = _jobService.Get(jobId).ClientId;

            var rating = _mapper.Map <Rating>(model);

            rating.ClientIdFrom = clientId;
            rating.ClientIdTo   = jobOwnerId;
            rating.JobId        = jobId;

            _ratingService.Create(rating);

            return(Ok());
        }
コード例 #6
0
        public async Task <object> AddEditRating(RatingRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(JsonResults.Error(400, ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage.ToString()));
            }

            try
            {
                var checkRating = await _ratingService.CheckRating(request);

                if (!checkRating)
                {
                    var model = new Rating
                    {
                        UserId    = request.UserId,
                        ServiceId = request.ServiceId,
                        Rating1   = request.Rating1
                    };

                    await _ratingService.AddRating(model);

                    return(JsonResults.Success(model));
                }

                var rating = await _ratingService.GetRating(request.Id);

                rating.Rating1 = request.Rating1;

                await _ratingService.UpdateRating(rating);

                return(JsonResults.Success(rating));
            }
            catch (Exception ex)
            {
                return(JsonResults.Error(400, ex.Message));
            }
        }
コード例 #7
0
        public override void BuildPacket()
        {
            base.BuildPacket();
            var request = new RatingRequest()
            {
                user_id         = GlobalVariables.CurrentUser.UserID,
                motion_id       = MotionID,
                rating          = Rating,
                version_id      = VersionID,
                comment_title   = CommentTitle,
                comment_content = CommentContent
            };

            byte[] packetData;
            using (var stream = new MemoryStream())
            {
                Serializer.Serialize(stream, request);
                packetData = stream.ToArray();
            }
            GlobalVariables.CountRequest++;
            Packet = StoreConnection.BuildServerPacket(packetData.Length + 16, (int)MessageType.Type.RATING, 2,
                                                       packetData, GlobalVariables.CountRequest);
        }
コード例 #8
0
        public void Update(RatingRequest ratingResponse)
        {
            try
            {
                Product product = findProduct(ratingResponse.productId);
                if (product == null)
                {
                    throw new Exception("El producto no existe");
                }

                Rating model = listRating(ratingResponse.productId, ratingResponse.userId);
                if (model == null)
                {
                    model           = new Rating();
                    model.userId    = toGuid(ratingResponse.userId);
                    model.productId = toGuid(ratingResponse.productId);
                    model.createdOn = DateTime.Now;
                    db.Ratings.Add(model);
                }
                else
                {
                    db.Entry(model).State = EntityState.Modified;
                }
                model.changedOn = DateTime.Now;
                model.stars     = ratingResponse.stars;
                db.SaveChanges();


                product.avgStars = totalRating(ratingResponse.productId);
                Update(product);
            }
            catch (Exception ex)
            {
                throw ex;
                //throw new CrudException("Rating", CrudAction.Update, , ex.Message);
            }
        }
コード例 #9
0
        private IActionResult CreateAsEmployeer(long clientId, long jobId, RatingRequest model)
        {
            if (!_ratingService.EmployeerCanWriteReview(jobId, clientId))
            {
                return(Forbid());
            }

            var freeLancerId = _jobService.GetJobFreeLancerId(jobId);

            if (freeLancerId == null)
            {
                return(BadRequest(new BaseResponse("Job is not started")));
            }

            var rating = _mapper.Map <Rating>(model);

            rating.ClientIdFrom = clientId;
            rating.ClientIdTo   = freeLancerId.Value;
            rating.JobId        = jobId;

            _ratingService.Create(rating);

            return(Ok());
        }
コード例 #10
0
        public async Task <ActionResult <RatingResponse> > CreateRating([FromBody] RatingRequest ratingDto)
        {
            string userId = HttpContext.User.FindFirst("id").Value;

            return(await _ratingService.CreateRatingAsync(ratingDto, userId));
        }
コード例 #11
0
        public async Task <bool> CheckRating(RatingRequest request)
        {
            var rating = await db.Ratings.Where(x => x.Id == request.Id && x.ServiceId == request.ServiceId && x.UserId == request.UserId).FirstOrDefaultAsync();

            return(rating != null);
        }
コード例 #12
0
        public ActionResult Patch([FromBody] RatingRequest request)
        {
            ProductService.AddRating(request.ProductId, request.Rating);

            return(Ok());
        }
コード例 #13
0
 public static RatingRequest CreateRatingRequest(int quantity, long entityKindId, string currency)
 {
     RatingRequest ratingRequest = new RatingRequest();
     ratingRequest.Quantity = quantity;
     ratingRequest.EntityKindId = entityKindId;
     ratingRequest.Currency = currency;
     return ratingRequest;
 }
コード例 #14
0
        public async Task <ActionResult <NewRating> > Rate([FromRoute(Name = "id")] Guid restaurantId, RatingRequest rating)
        {
            var result = await ratingsService.RateAsync(restaurantId, rating.Score, rating.Comment);

            return(result);
        }
コード例 #15
0
        //Update movie ratings
        public ActionResult Patch([FromBody] RatingRequest request)
        {
            MovieService.AddRating(request.MovieId, request.Rating);

            return(Ok());
        }
コード例 #16
0
 private static string BuildRatingRequestJson(RatingRequest request)
 {
     return($"{{\"attributes\":{{\"value\":{request?.Attributes?.Value}}},\"type\":\"{request?.Type}\"}}");
 }
コード例 #17
0
        public async Task <ActionResult> Patch(RatingRequest request)
        {
            await _productService.AddRating(request.ProductId, request.Rating);

            return(Ok());
        }
コード例 #18
0
 public ActionResult Patch([FromBody] RatingRequest request)
 {
     return(Ok());
 }