Exemplo n.º 1
0
        internal Result UnlockBeer(string roomCode, int beerId)
        {
            Room room = context.Rooms.FirstOrDefault(a => a.Code == roomCode);

            if (room == null)
            {
                return(new Result(ResultStatus.ERROR, "Room not found"));
            }

            List <Room2Beverage> beers = room.Room2Beverages.ToList();

            if (!beers.Any(a => a.BeverageId == beerId))
            {
                return(new Result(ResultStatus.ERROR, "Beer not found"));
            }

            foreach (var b in beers)
            {
                if (b.BeverageId == beerId)
                {
                    b.IsLocked = false;
                }
                else
                {
                    b.IsLocked = true;
                }
            }

            context.SubmitChanges();
            beerhub hub = new beerhub();

            hub.OpenBeerForUser(roomCode, beerId);
            return(new Result(ResultStatus.SUCCESS, "Beer unlocked"));
        }
Exemplo n.º 2
0
        internal ReviewResults FinishReview(string roomCode, int beerId)
        {
            Room                  room    = context.Rooms.FirstOrDefault(a => a.Code == roomCode);
            Room2Beverage         beer    = room.Room2Beverages.FirstOrDefault(a => a.BeverageId == beerId);
            List <BeverageReview> reviews = room.BeverageReviews.Where(a => a.BeverageId == beerId).ToList();

            if (!reviews.Any())
            {
                return(new ReviewResults(ResultStatus.ERROR, "No reviews has been added!"));
            }
            beer.ReviewFinished = true;
            List <ReviewTypeVM> reviewTypes = room.Room2ReviewTypes.Select(a => new ReviewTypeVM(a)).ToList();

            context.SubmitChanges();
            ReviewResults result = new ReviewResults(reviews, reviewTypes);
            beerhub       hub    = new beerhub();

            hub.PushFinalScore(roomCode, beerId, result.totalScore);
            return(result);
        }
Exemplo n.º 3
0
        internal JoinRoomResponse JoinRoom(JoinRoomRequest request)
        {
            try
            {
                Room roomToJoin = context.Rooms.FirstOrDefault(a => a.Code == request.roomCode);
                if (roomToJoin == null)
                {
                    return(new JoinRoomResponse(ResultStatus.ERROR, "Room code or pin is incorrect"));
                }

                if (roomToJoin.Pin != request.pin)
                {
                    return(new JoinRoomResponse(ResultStatus.ERROR, "Room code or pin is incorrect"));
                }

                if (roomToJoin.Users.Any(a => a.Name == request.username))
                {
                    return(new JoinRoomResponse(ResultStatus.ERROR, "Username taken"));
                }


                Guid userId = Guid.NewGuid();

                roomToJoin.Users.Add(new User()
                {
                    Id          = userId,
                    DateCreated = DateTime.Now,
                    IsOwner     = false,
                    Name        = request.username
                });

                context.SubmitChanges();
                beerhub hub = new beerhub();
                hub.NewUserJoined(request.roomCode, request.username, userId);
                return(new JoinRoomResponse(userId));
            }
            catch (Exception ex)
            {
                return(new JoinRoomResponse(ResultStatus.ERROR, ex.Message));
            }
        }
Exemplo n.º 4
0
        internal Result AddReview(AddReviewRequest reqiest)
        {
            try
            {
                User user = context.Users.FirstOrDefault(a => a.Id == reqiest.userId);
                Room room = user.Room;

                if (!room.Room2Beverages.Any(a => a.BeverageId == reqiest.beverageId))
                {
                    return(new Result(ResultStatus.ERROR, "Beverage not in current room"));
                }

                if (room.Room2Beverages.Any(a => a.BeverageId == reqiest.beverageId && a.IsLocked))
                {
                    return(new Result(ResultStatus.ERROR, "Beverage closed for reviewing"));
                }

                if (reqiest.parts.Any(a => a.score < 0))
                {
                    return(new Result(ResultStatus.ERROR, "Score cannot be negative"));
                }

                string         resultmessage = "";
                BeverageReview review        = new BeverageReview();
                decimal        total         = 0;
                foreach (var part in reqiest.parts)
                {
                    var reviewType = room.Room2ReviewTypes.FirstOrDefault(a => a.ReviewTypeId == part.reviewTypeId);
                    total += (reviewType.MaxValue / 100m) * part.score;
                }

                total = Math.Round(total, 2);

                if (!user.BeverageReviews.Any(a => a.BeverageId == reqiest.beverageId))
                {
                    EntitySet <ReviewPart> partsToAdd = new EntitySet <ReviewPart>();
                    partsToAdd.AddRange(reqiest.parts.Select(a => new ReviewPart()
                    {
                        ReviewTypeId = a.reviewTypeId,
                        Score        = a.score
                    }));

                    review = new BeverageReview()
                    {
                        BeverageId  = reqiest.beverageId,
                        DateCreated = DateTime.Now,
                        RoomId      = room.Id,
                        TotalScore  = total,
                        ReviewParts = partsToAdd,
                        Comment     = reqiest.comment
                    };
                    user.BeverageReviews.Add(review);

                    resultmessage = "Review Added";
                }
                else
                {
                    review            = user.BeverageReviews.FirstOrDefault(a => a.BeverageId == reqiest.beverageId);
                    review.TotalScore = total;
                    review.Comment    = reqiest.comment;


                    foreach (var part in reqiest.parts)
                    {
                        ReviewPart p = review.ReviewParts.FirstOrDefault(a => a.ReviewTypeId == part.reviewTypeId);
                        p.Score = part.score;
                    }

                    resultmessage = "Review Updated";
                }

                context.SubmitChanges();
                beerhub             hub   = new beerhub();
                Beverage            b     = room.Room2Beverages.FirstOrDefault(a => a.BeverageId == reqiest.beverageId).Beverage;
                List <ReviewTypeVM> types = room.Room2ReviewTypes.Select(a => new ReviewTypeVM(a)).ToList();
                hub.PushReview(room.Code, new BeverageReviewVM(b, types, user, review));


                return(new Result(ResultStatus.SUCCESS, resultmessage));
            }
            catch (Exception ex)
            {
                return(new UserRoomModel(ResultStatus.ERROR, ex.Message));
            }
        }
 public void TestSignalR()
 {
     beerhub hub = new beerhub();
     //hub.Ping("PTLJ");
 }