コード例 #1
0
        public IHttpActionResult RateExistingRestaurant(int id, [FromBody] RateBindingModel model)
        {
            if (model == null)
            {
                return(this.BadRequest("Model cannot be null (no data in request)"));
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest("Invalid rating. The rating value must be between 1 and 10."));
            }

            var restaurant = this.Data.Restaurants.Find(id);

            if (restaurant == null)
            {
                return(this.NotFound());
            }

            var loggedUserId = this.User.Identity.GetUserId();
            var user         = this.Data.Users.Find(loggedUserId);

            if (restaurant.OwnerId == loggedUserId)
            {
                return(this.BadRequest("The owner cannot rate his own restaurant."));
            }

            if (user.GivenRatings
                .Any(r => r.RestaurantId == id))
            {
                var ratingFromDb = this.Data.Ratings.All()
                                   .FirstOrDefault(r => r.RestaurantId == id && r.UserId == loggedUserId);

                if (ratingFromDb != null)
                {
                    ratingFromDb.Stars = model.Stars;
                }

                this.Data.SaveChanges();

                return(this.Ok());
            }
            ;

            var rating = new Rating()
            {
                RestaurantId = id,
                Restaurant   = restaurant,
                Stars        = model.Stars,
                User         = user,
                UserId       = loggedUserId
            };

            this.Data.Ratings.Add(rating);
            this.Data.SaveChanges();

            return(this.Ok());
        }
コード例 #2
0
        //[Authorize(Roles="Admin,Manager,AppUser,Client,NotAuthenticated")]
        //[AllowAnonymous]
        public IHttpActionResult ApproveAppUser(int id, RateBindingModel appUser)
        {
            lock (unitOfWork.AppUsers)
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var appusers = unitOfWork.AppUsers.GetAll();

                var appuEdit = new AppUser();

                foreach (var appu in appusers)
                {
                    if (appu.Id == id)
                    {
                        appuEdit = appu;
                    }
                }

                appuEdit.Activated = true;

                try
                {
                    unitOfWork.AppUsers.Update(appuEdit);
                    unitOfWork.Complete();

                    //string your_id = "*****@*****.**";
                    //string your_password = PASSWORD;

                    //SmtpClient client = new SmtpClient();
                    //client.Port = 587;
                    //client.Host = "smtp.gmail.com";
                    //client.EnableSsl = true;
                    //client.Timeout = 10000;
                    //client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    //client.UseDefaultCredentials = false;
                    //client.Credentials = new System.Net.NetworkCredential(your_id, your_password);

                    //MailMessage mm = new MailMessage(your_id, "*****@*****.**");
                    //mm.BodyEncoding = UTF8Encoding.UTF8;
                    //mm.Subject = "CODE FOR FORUM";
                    //mm.Body = "NALOG JE ODOBREN!";
                    //mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

                    //client.Send(mm);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AppUserExists(id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(StatusCode(HttpStatusCode.NoContent));
            }
        }
コード例 #3
0
        //[Authorize(Roles="Admin,Manager,AppUser,Client,NotAuthenticated")]
        //[AllowAnonymous]
        public IHttpActionResult RateService(int id, RateBindingModel rate)
        {
            lock (unitOfWork.Services)
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var services    = unitOfWork.Services.GetAll();
                var serviceEdit = new Service();

                foreach (var s in services)
                {
                    if (s.Id == id)
                    {
                        serviceEdit = s;
                    }
                }

                string name = User.Identity.Name;


                var appu = new AppUser();


                var appusers = unitOfWork.AppUsers.GetAll();

                foreach (var au in appusers)
                {
                    if (au.Username == name)
                    {
                        appu = au;
                    }
                }


                bool canComment = false;

                foreach (var r in appu.Renting)
                {
                    int result = DateTime.Compare((DateTime)r.Start, (DateTime)r.End);

                    if (result <= 0)
                    {
                        canComment = true;
                    }
                }

                if (!canComment)
                {
                    return(null);
                }

                float gradeValue = ((serviceEdit.AverageGrade + (float)rate.Rating)) / (serviceEdit.NumberOfGrades + 1);
                serviceEdit.AverageGrade = gradeValue;
                serviceEdit.NumberOfGrades++;

                try
                {
                    unitOfWork.Services.Update(serviceEdit);
                    unitOfWork.Complete();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ServiceExists(id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(StatusCode(HttpStatusCode.NoContent));
            }
        }