Beispiel #1
0
        //update user ratings
        public int UpdateUserRating(UserRatingsModel model)
        {
            int res = 0;

            try
            {
                using (TransactionScope trScope = new TransactionScope())
                {
                    using (SqlConnection con = new SqlConnection(CONNECTION_STRING))
                    {
                        con.Open();
                        SqlCommand command = new SqlCommand("Update_User_Ratings", con);
                        command.CommandType = CommandType.StoredProcedure;


                        command.Parameters.AddWithValue("@UserRatingId", model.UserRatingId);
                        command.Parameters.AddWithValue("@User_Id", model.UserId);
                        command.Parameters.AddWithValue("@RatingId", model.RatingId);
                        command.Parameters.AddWithValue("@RateMark", model.RateMark);
                        command.Parameters.AddWithValue("@TalkId", model.TalkId);
                        command.Parameters.AddWithValue("@Status", model.IsEdit);

                        res = Convert.ToInt32(command.ExecuteScalar());
                    }
                    trScope.Complete();
                }
            }
            catch
            {
                throw;
            }

            return(res);
        }
        public async Task <IHttpActionResult> Post(int id, UserRatingsModel userRatings)
        {
            try
            {
                //1. Validate Model State
                if (ModelState.IsValid)
                {
                    List <BeersReviewsModel> results   = new List <BeersReviewsModel>();
                    List <RatingsEntity>     dbRatings = null;

                    //2. Validate if beer exisis in Punk API
                    var beer = await _beerRepository.GetBeer(id);

                    if (beer == null)
                    {
                        return(NotFound());
                    }

                    //3. If ID exists in Punk API, add rating and save to database.json
                    if (beer.Any())
                    {
                        //4. Read Json and increment Rating Id
                        dbRatings = JsonConvert.DeserializeObject <List <RatingsEntity> >(_jsonUtility.Read("database.json", "Data"));
                        var count = dbRatings?.Max(x => x.Id);
                        count = count == null ? 1 : count + 1;

                        //5. Create Ratings Entity to be saved to json
                        //   Beer ID mapping to user rating request before saving to json
                        var ratings = new RatingsEntity
                        {
                            Id          = count.Value,
                            UserRatings = userRatings,
                            BeerId      = id
                        };

                        //6. Add to json entity
                        dbRatings.Add(ratings);

                        //7. Write and Save to database.json
                        string dbRatingsJson = JsonConvert.SerializeObject(dbRatings);
                        _jsonUtility.Write("database.json", "Data", dbRatingsJson);

                        //8. Return Success with rating info
                        return(Ok(ratings));
                    }
                }
            }
            catch (Exception ex)
            {
                //Return Internal Server Error for unhandled exceptions
                return(InternalServerError(ex));
            }

            //Return Bad Request with error messages for invalid inputs
            return(BadRequest(ModelState));
        }
        public void PostTest()
        {
            //Arrange
            RatingsController controller = MockControllerCtor();

            var input = new UserRatingsModel
            {
                Comments = "Comment1",
                Rating   = 7,
                Username = "******"
            };

            // Act
            Task <IHttpActionResult> result = controller.Post(42, input);

            //    // Assert
            Assert.IsNotNull(result.Result);
            Assert.AreEqual(2, ((System.Web.Http.Results.OkNegotiatedContentResult <Data.Entities.RatingsEntity>)result.Result).Content.Id);
            Assert.AreEqual(42, ((System.Web.Http.Results.OkNegotiatedContentResult <Data.Entities.RatingsEntity>)result.Result).Content.BeerId);
        }
Beispiel #4
0
        /// <summary>
        /// This method will be executed before action is executed
        /// Validates username parameter and adds error message to Model State if invalid
        /// </summary>
        /// <param name="actionContext">Action Method Context</param>
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var validateParameter = "userRatings";

            if (actionContext.ActionArguments == null ||
                !actionContext.ActionArguments.ContainsKey(validateParameter))
            {
                actionContext.ModelState.AddModelError(validateParameter, "userRatings is null or empty");
            }

            if (actionContext.ActionArguments.ContainsKey(validateParameter))
            {
                //Cast input to model type to validate username property
                UserRatingsModel model = actionContext.ActionArguments[validateParameter] as UserRatingsModel;

                if (!RegexUtilities.IsValidEmail(model.Username))
                {
                    actionContext.ModelState.AddModelError("userRatings.Username",
                                                           string.Format("Username must be a valid email. {0} is not a valid email.",
                                                                         model.Username));
                }
            }
        }