public ActionResult Delete(int id)
        {
            UserBag bag = db.UserBags.Find(id);

            db.UserBags.Remove(bag);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 2
0
        public void Add_DuplicateItem_ThrowsDuplicateItemException()
        {
            // arrange
            var userBag    = new UserBag();
            var baggedItem = CreateBaggedItem(1);

            // act
            userBag.AddItem(baggedItem);

            // assert
            Assert.Throws <DuplicateItemException>(() => userBag.AddItem(baggedItem));
        }
Ejemplo n.º 3
0
        public void Add_Items_AreContained()
        {
            // arrange
            var userBag     = new UserBag();
            var baggedItems = CreateListOfBaggedItems();

            // act
            userBag.AddItems(baggedItems);

            // assert
            Assert.AreEqual(baggedItems, userBag.Items);
        }
Ejemplo n.º 4
0
        public void Add_DuplicateItems_ContinueWithoutAdding()
        {
            // arrange
            var userBag     = new UserBag();
            var baggedItems = new[] { CreateBaggedItem(1), CreateBaggedItem(1) };

            // act
            userBag.AddItems(baggedItems);

            // assert
            Assert.AreEqual(1, userBag.Items.Count);
        }
Ejemplo n.º 5
0
        public void Add_Items_ComputeTotalPrice(float[] prices, int[] quantities, float expected)
        {
            // arrange
            var userBag     = new UserBag();
            var baggedItems = prices.Select((price, i) => CreateBaggedItem(i, price, quantities[i]));

            userBag.AddItems(baggedItems);

            // act
            var totalPrice = userBag.ComputeTotalPrice();

            // assert
            Assert.AreEqual(totalPrice, expected);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 取得背包列表
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public UserBag GetBagList(int userId)
        {
            UserBag userBag = new UserBag();

            var checkUser = _context.User.Where(x => x.Id == userId);

            if (checkUser == null)
            {
                return(userBag);
            }

            userBag.userId = userId;

            var userProduct = _context.UserProduct.Include(x => x.Product).Where(x => x.UserId == userId).ToList();

            userBag.BagItem = _mapper.Map <List <UserProduct>, List <BagItem> >(userProduct);

            return(userBag);
        }
Ejemplo n.º 7
0
        public OutputDtoQueryUserBaggedItem GetByUserId(int userId)
        {
            var baggedItems = _baggedItemRepository.GetByUserId(userId);
            var userBag     = new UserBag();

            userBag.AddItems(baggedItems);

            var bagOwner = _userRepository.GetById(userId);

            var dtoBaggedItems = userBag.Items
                                 .Select(baggedItem => new OutputDtoQueryUserBaggedItem.BaggedItem
            {
                Id       = baggedItem.Id,
                AddedAt  = baggedItem.AddedAt,
                Quantity = baggedItem.Quantity,
                Size     = baggedItem.Size,

                BagItem = new OutputDtoQueryUserBaggedItem.BaggedItem.Item
                {
                    Id              = baggedItem.AddedItem.Id,
                    Label           = baggedItem.AddedItem.Label,
                    Price           = baggedItem.AddedItem.Price * baggedItem.Quantity,
                    ImageItem       = baggedItem.AddedItem.ImageItem,
                    DescriptionItem = baggedItem.AddedItem.DescriptionItem
                }
            });

            return(new OutputDtoQueryUserBaggedItem
            {
                BagOwner = new OutputDtoQueryUserBaggedItem.User
                {
                    Id = bagOwner.Id,
                    Firstname = bagOwner.Firstname,
                    Lastname = bagOwner.Lastname
                },
                TotalPrice = userBag.ComputeTotalPrice(),
                Items = dtoBaggedItems
            });
        }
        public ActionResult Create(int product_id, int product_img_id, string product_pivot_id, int product_count)
        {
            UserBag new_bag = new UserBag();

            new_bag.user_bag_user_id        = LoginRegisterController.log_user.user_id;
            new_bag.user_bag_product_id     = product_id;
            new_bag.user_bag_product_img_id = product_img_id;
            if (product_pivot_id == "")
            {
                new_bag.user_bag_product_pivot_id = null;
            }
            else
            {
                int y = Convert.ToInt32(product_pivot_id);
                var x = db.ProductPivotSizes.Where(s => s.product_pivot_img_id == product_img_id && s.product_pivot_size_id == y).First().product_pivot_id;
                new_bag.user_bag_product_pivot_id = x;
            }

            new_bag.user_bag_product_count = product_count;
            db.UserBags.Add(new_bag);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        // Helper static methods (DTO instances)
        public static OutputDtoQueryUserBaggedItem CreateOutputDtoQueryUserBaggedItem(int i, int listSize)
        {
            var userBag = new UserBag();

            userBag.AddItems(CreateListOfBaggedItems(listSize));
            var dtoBaggedItems = userBag.Items
                                 .Select(baggedItem => new OutputDtoQueryUserBaggedItem.BaggedItem
            {
                Id       = baggedItem.Id,
                AddedAt  = baggedItem.AddedAt,
                Quantity = baggedItem.Quantity,
                Size     = baggedItem.Size,

                BagItem = new OutputDtoQueryUserBaggedItem.BaggedItem.Item
                {
                    Id              = baggedItem.AddedItem.Id,
                    Label           = baggedItem.AddedItem.Label,
                    Price           = baggedItem.AddedItem.Price * baggedItem.Quantity,
                    ImageItem       = baggedItem.AddedItem.ImageItem,
                    DescriptionItem = baggedItem.AddedItem.DescriptionItem
                }
            });

            var bagOwner = CreateUser(1);

            return(new OutputDtoQueryUserBaggedItem
            {
                BagOwner = new OutputDtoQueryUserBaggedItem.User
                {
                    Id = bagOwner.Id,
                    Firstname = bagOwner.Firstname,
                    Lastname = bagOwner.Lastname
                },
                TotalPrice = userBag.ComputeTotalPrice(),
                Items = dtoBaggedItems
            });
        }
Ejemplo n.º 10
0
        public UserBag showProfile(int?id)
        {
            using (var db = DatabaseFactory.OpenDbConnection())
            {
                if (id == null)
                {
                    id = NimbusUser.UserId;
                }

                var user = db.SelectParam <User>(usr => usr.Id == id).FirstOrDefault();
                if (user == null)
                {
                    throw new HttpResponseException(HttpStatusCode.NotFound);
                }
                UserBag userBag = new UserBag();
                userBag.Id             = user.Id;
                userBag.About          = user.About;
                userBag.AvatarUrl      = user.AvatarUrl;
                userBag.BirthDate      = user.BirthDate;
                userBag.City           = user.City;
                userBag.Country        = user.Country;
                userBag.Experience     = user.Experience;
                userBag.FirstName      = user.FirstName;
                userBag.Interest       = user.Interest;
                userBag.LastName       = user.LastName;
                userBag.Occupation     = user.Occupation;
                userBag.IsUserFacebook = user.Password.StartsWith("nsp") ? false : true;
                userBag.State          = user.State;
                userBag.Age            = (int)Math.Floor((DateTime.Now.Subtract(user.BirthDate).Days) / 365.25);


                var roles = db.Where <Channel>(c => c.Visible == true && c.OrganizationId == NimbusOrganization.Id)
                            .Select(c => db.Where <Role>(rl => rl.UserId == id && rl.ChannelId == c.Id &&
                                                         (rl.IsOwner == true || rl.ChannelMagager == true || rl.MessageManager == true ||
                                                          rl.ModeratorManager == true || rl.TopicManager == true ||
                                                          rl.UserManager == true)).FirstOrDefault()).Where(r => r != null);
                int pointsChn = 0; int hundredFollowers = 0;
                int pointsTpc = 0; int fiftyFollowers = 0;
                int pointsCmt = 0;
                if (roles.Count() > 0)
                {
                    pointsChn = roles.Select(c => c.UserId == id && c.IsOwner == true).Count() * 50;

                    pointsChn = pointsChn + (roles.Where(c => c.IsOwner == false && c.UserId == id && c.Accepted == true)
                                             .Select(c => c.ChannelMagager == true || c.MessageManager == true ||
                                                     c.ModeratorManager == true || c.TopicManager == true || c.UserManager == true)
                                             .Count() * 25);


                    pointsTpc = roles.Sum(r => db.Where <Topic>(t => t.AuthorId == r.UserId &&
                                                                t.ChannelId == r.ChannelId && t.Visibility == true).Count());

                    pointsCmt = db.Where <Comment>(c => c.UserId == id && c.Visible == true).Count();
                }

                pointsCmt = pointsCmt * 1;
                pointsTpc = pointsTpc * 30;


                fiftyFollowers = db.SqlScalar <int>(@"SELECT COUNT(*) AS [value]
                                                            FROM [Channel] AS [CH]
                                                        WHERE (((
                                                            SELECT COUNT(*)
                                                            FROM [ChannelUser] AS [CS]
                                                            WHERE ([CS].[ChannelId] = [CH].[Id]) AND ([CS].[Follow] = 1) AND ([CS].[Accepted] = 1) AND ([CS].[Visible] = 1)
                                                            )) > 50) AND ([CH].[OwnerId] = @OwnerId) AND ([CH].[Visible] = 1)", new { OwnerId = id });

                hundredFollowers = db.SqlScalar <int>(@"SELECT COUNT(*) AS [value]
                                                            FROM [Channel] AS [CH]
                                                        WHERE (((
                                                            SELECT COUNT(*)
                                                            FROM [ChannelUser] AS [CS]
                                                            WHERE ([CS].[ChannelId] = [CH].[Id]) AND ([CS].[Follow] = 1) AND ([CS].[Accepted] = 1) AND ([CS].[Visible] = 1)
                                                            )) > 100) AND ([CH].[OwnerId] = @OwnerId) AND ([CH].[Visible] = 1)", new { OwnerId = id });



                if (fiftyFollowers > 0)
                {
                    fiftyFollowers = fiftyFollowers * 50;
                }
                if (hundredFollowers > 0)
                {
                    hundredFollowers = hundredFollowers * 100;
                }

                userBag.PointsForChannel = pointsChn;
                userBag.PointsForComment = pointsCmt;
                userBag.PontsForTopic    = pointsTpc;
                userBag.Interaction      = pointsTpc + pointsCmt + pointsChn + fiftyFollowers + hundredFollowers + 100; //100 = pq o usuário se cadastrou no nimbus

                //throw http exception
                if (userBag == null)
                {
                    throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound,
                                                                                "this item does not exist"));
                }

                user.Password = "";
                return(userBag);
            }
        }
Ejemplo n.º 11
0
        public static async Task ChangeWealth(long uid, int propId, int propNum, string reason, Room room = null)
        {
            //Log.Debug("ChangeWealth: uid = " + uid + "  propId = " + propId + "propNum = " + propNum);

            try
            {
                DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                switch (propId)
                {
                // 金币
                case 1:
                {
                    List <PlayerBaseInfo> playerBaseInfos =
                        await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{uid}}}");

                    playerBaseInfos[0].GoldNum += propNum;
                    if (playerBaseInfos[0].GoldNum < 0)
                    {
                        playerBaseInfos[0].GoldNum = 0;
                    }

                    bool isSendReliefGold = false;

                    // 救济金
                    if (playerBaseInfos[0].GoldNum < 2000)
                    {
                        List <Log_ReliefGold> log_reliefGolds = await proxyComponent.QueryJson <Log_ReliefGold>($"{{CreateTime:/^{DateTime.Now.GetCurrentDay()}/,Uid:{uid}}}");

                        if (log_reliefGolds.Count < 3)
                        {
                            isSendReliefGold = true;

                            int gold = 20000;
                            playerBaseInfos[0].GoldNum += gold;
                            Log_ReliefGold log_ReliefGold = ComponentFactory.CreateWithId <Log_ReliefGold>(IdGenerater.GenerateId());
                            log_ReliefGold.Uid    = uid;
                            log_ReliefGold.reward = "1:" + gold;
                            await proxyComponent.Save(log_ReliefGold);

                            // 通知玩家
                            {
                                Actor_ReliefGold actor = new Actor_ReliefGold();
                                if (log_reliefGolds.Count == 0)
                                {
                                    actor.Reward = "今日第一次赠送金币:" + gold;
                                }
                                else if (log_reliefGolds.Count == 1)
                                {
                                    actor.Reward = "今日第二次赠送金币:" + gold;
                                }
                                else if (log_reliefGolds.Count == 2)
                                {
                                    actor.Reward = "今日最后一次赠送金币:" + gold;
                                }
                                if (room != null)
                                {
                                    Gamer gamer = room.Get(uid);
                                    room.GamerBroadcast(gamer, actor);
                                }
                            }
                        }
                    }

                    await proxyComponent.Save(playerBaseInfos[0]);

                    if (!isSendReliefGold)
                    {
                        await RecordWeekRankLog(uid, propNum, 0);
                    }
                }
                break;

                // 元宝
                case 2:
                {
                    List <PlayerBaseInfo> playerBaseInfos =
                        await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{uid}}}");

                    playerBaseInfos[0].WingNum += propNum;
                    if (playerBaseInfos[0].WingNum < 0)
                    {
                        playerBaseInfos[0].WingNum = 0;
                    }

                    await proxyComponent.Save(playerBaseInfos[0]);
                }
                break;

                // 话费
                case 3:
                {
                    List <PlayerBaseInfo> playerBaseInfos =
                        await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{uid}}}");

                    playerBaseInfos[0].HuaFeiNum += propNum;
                    if (playerBaseInfos[0].HuaFeiNum < 0)
                    {
                        playerBaseInfos[0].HuaFeiNum = 0;
                    }

                    await proxyComponent.Save(playerBaseInfos[0]);
                }
                break;

                //积分
                case 4:
                {
                    List <PlayerBaseInfo> playerBaseInfos =
                        await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{uid}}}");

                    playerBaseInfos[0].Score += propNum;

                    await proxyComponent.Save(playerBaseInfos[0]);
                }
                break;

                // 其他道具
                default:
                {
                    List <UserBag> userBags = await proxyComponent.QueryJson <UserBag>($"{{UId:{uid},BagId:{propId}}}");

                    if (userBags.Count == 0)
                    {
                        UserBag itemInfo = ComponentFactory.CreateWithId <UserBag>(IdGenerater.GenerateId());
                        itemInfo.BagId = propId;
                        itemInfo.UId   = uid;
                        itemInfo.Count = propNum;
                        await proxyComponent.Save(itemInfo);
                    }
                    else
                    {
                        userBags[0].Count += propNum;
                        if (userBags[0].Count < 0)
                        {
                            userBags[0].Count = 0;
                        }

                        await proxyComponent.Save(userBags[0]);
                    }
                }
                break;
                }

                await Log_ChangeWealth(uid, propId, propNum, reason);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
        }