示例#1
0
        public void User_IsDiferent()
        {
            var user     = new UserBuild().Builder();
            var otheUser = new UserBuild().WithName("name test 2").WithEmail("*****@*****.**");

            Assert.AreNotEqual(user, otheUser);
        }
        private double CalculatePriceForBuild(UserBuild build)
        {
            var basePrice = build.Processor.Price + build.Motherboard.Price + build.Memory.Price +
                            build.Storage.Sum(x => x.Price) + build.PowerSupply.Price + build.Case.Price;

            return(Math.Ceiling(basePrice / 10.0) * 10);
        }
示例#3
0
        public void User_IsEqual()
        {
            var user      = new UserBuild().Builder();
            var otherUser = user;

            Assert.AreEqual(user, otherUser);
        }
        public static int AddUserData(All userData)
        {
            UserBuild ub = new UserBuild();
            userData.Time = Function.GetUTCTime();
            SamgoModels.UserInfo ui = new SamgoModels.UserInfo();
            UserValue uLord = new UserValue();
            UserValue uProsperity = new UserValue();
            UserPower up = new UserPower();
            UserTechnique ut = new UserTechnique();
            UserOrdnance uo = new UserOrdnance();

            var userInfo = new SamgoModels.UserInfo();
            userData.SeqNo = DapperHelper.Search<int>(
               connectionString, " exec [samgo_add_user_and_group] N'" +
               userData.Role + "' , N'" + userData.Legion + "'").FirstOrDefault();
            ConvertDataToModels(ref ub, ref ui, ref uLord, ref uProsperity, ref up, userData);

            DapperHelper.InsertSQLNormal<UserBuild>(connectionString, "Build", ub);
            //DapperHelper.InsertSQL<SamgoModels.UserInfo>(connectionString, "SamgoGame", ui);
            DapperHelper.InsertSQLNormal<UserValue>(connectionString, "Lord", uLord);
            DapperHelper.InsertSQLNormal<UserValue>(connectionString, "Prosperity", uProsperity);
            DapperHelper.InsertSQLNormal<UserPower>(connectionString, "SamgoGamePower", up);
            ConvertDataToModels(ref ut, ref uo, userData);

            DapperHelper.InsertSQLNormal<UserTechnique>(connectionString, "Technique", ut);
            var response = DapperHelper.InsertSQLNormal<UserOrdnance>(connectionString, "Ordnance", uo);

            return userData.SeqNo;
        }
        public async Task UpdateUserCommandHandler_UpdateUser()
        {
            User user    = new UserBuild().Builder();
            var  command = new UpdateUserCommandBuilder().Builder();

            repositoryMock.GetByExternalIdAsync(Arg.Any <string>()).Returns(user);

            var result = await handler.Handle(command, new CancellationToken());

            Assert.IsTrue(result.Success);
            Assert.AreEqual(user.Id, (Guid)result.Data);
        }
示例#6
0
        public async Task AddUserCommandHandler_UserAlreadyExists_AndHasCHanges_ShouldReturn_UserId()
        {
            var guid    = Guid.NewGuid();
            var user    = new UserBuild().Builder();
            var command = new AddUserCommandBuilder().Builder();

            repositoryMock.GetByExternalIdAsync(Arg.Any <string>()).Returns(user);
            mediatorHandlerMock.SendAsync(Arg.Any <UpdateUserCommand>()).Returns(new CommandResult(true, guid));
            var result = await handler.Handle(command, new CancellationToken());

            Assert.True(result.Success);
            Assert.AreEqual(guid, (Guid)result.Data);
        }
        private string GetNameForUserBuild(UserBuild build)
        {
            var sb = new StringBuilder();

            sb.Append($"{build.Processor.Name}/");
            sb.Append($"{build.Memory.Capacity}/");
            sb.Append($"{build.GraphicsCard.Name}/");
            foreach (var st in build.Storage)
            {
                sb.Append($"{st.Capacity}GB/");
            }

            return(sb.ToString());
        }
        private static void ConvertDataToModels(ref UserBuild ub,
          ref SamgoModels.UserInfo ui,
          ref UserValue uLord,
          ref UserValue uProsperity,
          ref UserPower up,
          All userData)
        {

            //SamgoGame(主紀錄+編號)
            ui.Legion = userData.Legion;
            ui.Official = userData.Official;
            ui.Role = userData.Role;
            ui.SeqNo = userData.SeqNo;

            //Lord(主公)
            uLord.SeqNo = userData.SeqNo;
            uLord.Time = userData.Time;
            uLord.Value = userData.Lord;

            //Prosperity(繁榮)
            uProsperity.SeqNo = userData.SeqNo;
            uProsperity.Time = userData.Time;
            uProsperity.Value = userData.Prosperity;

            //Build(大殿)
            ub.SeqNo = userData.SeqNo;
            ub.Time = userData.Time;
            ub.Basilica = userData.Basilica;
            ub.Technique = userData.Technique;
            ub.Market = userData.Market;
            ub.Horse = userData.Horse;
            ub.School = userData.School;
            ub.House = userData.House;
            ub.Wood = userData.Wood;
            ub.Stone = userData.Stone;
            ub.Iron = userData.Iron;
            ub.Farmland = userData.Farmland;
            ub.Barracks = userData.Barracks;
            ub.Soldier = userData.Soldier;
            ub.Coin = userData.Coin;
            ub.Treasure = userData.Treasure;
            ub.Ordnance = userData.Ordnance;
            ub.Wall = userData.Wall;
            //戰力
            up.Power = userData.Power;
            up.SeqNo = userData.SeqNo;
            up.Time = userData.Time;
        }
        public async Task <UserBuild> GetEqualOrDefaultAsync(UserBuild build)
        {
            var foundBuild = await _context.UserBuilds
                             .Where(x => x.UserId == build.User.Id)
                             .Where(x => Math.Abs(x.Price - build.Price) < 1)
                             .Where(x => x.Name == build.Name)
                             .Where(x => x.ProcessorId == build.Processor.Id)
                             .Where(x => x.MotherboardId == build.Motherboard.Id)
                             .Where(x => x.MemoryId == build.Memory.Id)
                             .Where(x => x.GraphicsCardId == build.GraphicsCard.Id)
                             .Where(x => x.PowerSupplyId == build.PowerSupply.Id)
                             .Where(x => x.CaseId == build.Case.Id)
                             .FirstOrDefaultAsync();

            return(foundBuild);
        }
示例#10
0
        public async Task AddUserCommandHandler_UserAlreadyExists_AndNotHasCHanges_ShouldReturn_UserId()
        {
            var user    = new UserBuild().Builder();
            var command = new AddUserCommandBuilder()
                          .WithExternalId(user.ExternalId)
                          .WithName(user.Name)
                          .WithPhoneNumber(user.PhoneNumber)
                          .WithEmail(user.Email)
                          .Builder();

            repositoryMock.GetByExternalIdAsync(Arg.Any <string>()).Returns(user);
            var result = await handler.Handle(command, new CancellationToken());

            Assert.True(result.Success);
            Assert.AreEqual(user.Id, (Guid)result.Data);
        }
        private async Task <UserBuild> CreateBuildForUser(User user)
        {
            var userTagMatches = user.UserTagMatches.ToList();

            var cpu = await GetProcessorForUser(userTagMatches);

            var mobo = await GetMotherboardForUser(userTagMatches, cpu.Socket);

            var memory = await GetMemoryForUser(userTagMatches, mobo.MemorySlots);

            var gpu = await GetGraphicsCardForUser(userTagMatches);

            var storage = await GetStorageForUser(userTagMatches);

            var powerSupply = await GetPowerSupplyForUser(userTagMatches);

            var computerCase = await GetCaseForUser(userTagMatches, mobo.FormFactor);

            var newBuild = new UserBuild
            {
                Processor   = cpu,
                Motherboard = mobo,
                Storage     = new List <Storage> {
                    storage
                },
                Memory       = memory,
                GraphicsCard = gpu,
                PowerSupply  = powerSupply,
                Case         = computerCase,
                User         = user,
                Price        = 0,
                GeneratedAt  = DateTime.Now,
            };

            newBuild.Price = CalculatePriceForBuild(newBuild);
            newBuild.Name  = GetNameForUserBuild(newBuild);

            return(newBuild);
        }
        public async Task AddBuildAsync(UserBuild build)
        {
            await _context.UserBuilds.AddAsync(build);

            await _context.SaveChangesAsync();
        }