コード例 #1
0
ファイル: LobbyService.cs プロジェクト: Step1532/MazeBot
        //TODO:
        public static void AddUser(int userId)
        {
            var             members = _memberRepository.ReadLobbyAll();
            LobbyRepository lobby   = new LobbyRepository();

            if (members.Count == 0)
            {
                _memberRepository.Create(1, userId);
            }
            else
            {
                var member = members.Last();
                if (member.IsLobbyActive == false)
                {
                    if (EmptyPlaceCount(member.UserId) == 0)
                    {
                        _memberRepository.Create(member.LobbyId + 1, userId);
                    }
                    else
                    {
                        _memberRepository.Create(member.LobbyId, userId);
                    }
                }
                else
                {
                    _memberRepository.Create(member.LobbyId + 1, userId);
                }
            }
        }
コード例 #2
0
        public void Create()
        {
            User     userOutput     = _userRepository.Create(_userInput);
            Planning planningOutput = _planningRepository.Create(_planningInput);

            Member memberInput  = new Member(userOutput.Id, planningOutput.Id, false);
            Member memberOutput = _memberRepository.Create(memberInput);

            Assert.True(memberOutput != null);
        }
コード例 #3
0
 /// <summary>
 /// 创建一个通讯录
 /// </summary>
 /// <param name="validationErrors">返回的错误信息</param>
 /// <param name="db">数据库上下文</param>
 /// <param name="entity">一个通讯录</param>
 /// <returns></returns>
 public bool Create(ref ValidationErrors validationErrors, Member entity)
 {
     try
     {
         repository.Create(entity);
         return(true);
     }
     catch (Exception ex)
     {
         validationErrors.Add(ex.Message);
         ExceptionsHander.WriteExceptions(ex);
     }
     return(false);
 }
コード例 #4
0
        public JsonResult SignUp(string MemberId, string MemberPassword, string MemberCheckPassword, string Name, string Phone, string Email, string Address)
        {
            if (string.IsNullOrWhiteSpace(MemberId) || string.IsNullOrWhiteSpace(MemberPassword) || string.IsNullOrWhiteSpace(MemberCheckPassword) ||
                string.IsNullOrWhiteSpace(Name) || string.IsNullOrWhiteSpace(Phone) || string.IsNullOrWhiteSpace(Email) ||
                string.IsNullOrWhiteSpace(Address))
            {
                return(Json("填空區不可有空白"));
            }
            else
            {
                if (Regex.Match(Name, @"[\u3000-\u9FA5\x20]{2,4}").Success&& Regex.Match(MemberId, @"[\w\-]{8,12}").Success)
                {
                    if (Regex.Match(MemberPassword, @"[\x21-\x7E]{8,12}").Success)
                    {
                        if (MemberPassword != MemberCheckPassword)
                        {
                            return(Json("確認密碼有誤"));
                        }
                        else
                        {
                            if (IsValidEmail(Email) && Regex.Match(Phone, @"(\(?\d{3,4}\)?)?[\s-]?\d{7,8}[\s-]?\d{0,4}").Success)
                            {
                                MemberRepository repository = new MemberRepository();
                                if (repository.FindById(MemberId) == null)
                                {
                                    Members members = new Members()
                                    {
                                        MemberID = MemberId,
                                        Password = MemberPassword,
                                        Name     = Name,
                                        Phone    = Phone,
                                        Email    = Email,
                                        Address  = Address
                                    };

                                    repository.Create(members);
                                    return(Json("註冊成功"));
                                }
                                else
                                {
                                    return(Json("此帳號已擁有"));
                                }
                            }
                            else
                            {
                                return(Json("電話或是電子信箱格式有誤"));
                            }
                        }
                    }
                    else
                    {
                        return(Json("密碼需8~12碼或是格式不符合"));
                    }
                }
                else
                {
                    return(Json("姓名不符合格式或是帳戶需8~12碼"));
                }
            }
        }
コード例 #5
0
        public async Task <IActionResult> Create(Member member)
        {
            if (await TryUpdateModelAsync(member, typeof(Member), ""))
            {
                member = _repository.Create(member);
            }

            return(RedirectToAction("Index"));
        }
コード例 #6
0
ファイル: ShootTest.cs プロジェクト: Step1532/MazeBot
 private static void CreateChar(int id, int lobbyId, string username)
 {
     _characterRepository.Create(id);
     _memberRepository.Create(lobbyId, id);
     _characterRepository.Update(new Character
     {
         CharacterName  = username,
         State          = CharacterState.InGame,
         TelegramUserId = id
     });
 }
コード例 #7
0
        public CreatedAtActionResult AddMember(CreateMemberDto dto)
        {
            var createdMember = _memberService.Create(new Member
            {
                Email    = dto.Email,
                Name     = dto.Name,
                Lastname = dto.Lastname,
                TeamId   = dto.TeamId
            });

            return(CreatedAtAction(nameof(AddMember), new
            {
                id = createdMember.Id
            }, createdMember));
        }
コード例 #8
0
        public bool Create(MemberDTO memberDTO)
        {
            bool ifAdded = false;

            if (CheckValidityOfData(memberDTO))
            {
                Member member = mapper.MemberDTOToMemberMapper(memberDTO);
                if (EmailExists(member.Email) && AadharExists(member.AadharNumber))
                {
                    return(ifAdded);
                }
                ifAdded = memberRepository.Create(member);
            }
            return(ifAdded);
        }
コード例 #9
0
        public async Task GivenMemberRepository_WhenCallCreate_ShouldSuccess()
        {
            using (var context = await InMemoryDbContextFactory.CreateUserContext())
            {
                // assign
                var member = MemberDataBuilder.CreateMember(1, new List <MemberAccount>(), null, null);

                // act
                var repo = new MemberRepository(context);
                await repo.Create(member);

                await context.SaveChangesAsync();

                // assert
                member.Id.ShouldBeGreaterThan(0);
            }
        }
コード例 #10
0
        public ActionResult SignUp(string memberid, string password, string password1, string name, string email, string phone, string address)
        {
            var member = new Members()
            {
                MemberID = memberid,
                Password = password,
                Name     = name,
                Email    = email,
                Address  = address,
                Phone    = phone
            };
            var memberrepository = new MemberRepository();
            var members          = memberrepository.FindById(member.MemberID);

            if (members == null)
            {
                memberrepository.Create(member);
            }
            else
            {
                return(View("SignUpError"));
            }
            return(View());
        }
コード例 #11
0
        public List <MessageConfig> StateMachine(CharacterState state, string command, int playerId)
        {
            //TODO: Вынести сюда создание репозиториев
            switch (state)
            {
            case CharacterState.ChangeName:
                return(BotService.TryChangeName(command, playerId));

            case CharacterState.ChangeGameMode:
                switch (command)
                {
                case "/game":
                    return(BotService.FindGameCommand(playerId));

                case "/tutorial":
                    var              character        = _characterRepository.Read(playerId);
                    LobbyRepository  lobbyRepository  = new LobbyRepository();
                    MemberRepository memberRepository = new MemberRepository();
                    memberRepository.Create(0, playerId);
                    var lobby = lobbyRepository.Read(0);
                    lobby.Players.Add(new Player
                    {
                        Health         = 3,
                        HeroName       = character.CharacterName,
                        Rotate         = Direction.North,
                        TelegramUserId = playerId,
                        UserCoordinate = new Coordinate(3, 3)
                    });
                    lobbyRepository.Update(lobby);
                    character.State = CharacterState.Tutorial;
                    _characterRepository.Update(character);
                    return(new List <MessageConfig>
                    {
                        new MessageConfig()
                        {
                            Answer = "Обучение",
                            PlayerId = playerId
                        }
                    });

                default:
                    return(new List <MessageConfig>
                    {
                        new MessageConfig()
                        {
                            Answer = "неверная команда",
                            PlayerId = playerId
                        }
                    });
                }

            case CharacterState.Tutorial:
                switch (command)
                {
                case "Вверх":
                    return(TutorialService.MoveCommand(playerId, Direction.North));

                case "Вниз":
                    return(TutorialService.MoveCommand(playerId, Direction.South));

                case "Вправо":
                    return(TutorialService.MoveCommand(playerId, Direction.East));

                case "Влево":
                    return(TutorialService.MoveCommand(playerId, Direction.West));

                case "Взрыв стены":
                    var inlineKeyboard = KeybordConfiguration.ChooseDirectionKeyboard();
                    BotClient.SendTextMessageAsync(playerId, "Выбирай направление",
                                                   replyMarkup: inlineKeyboard);
                    BotClient.OnCallbackQuery += BotClient_OnCallbackQueryBomb;
                    return(null);

                case "/skip":
                    var              character        = _characterRepository.Read(playerId);
                    LobbyRepository  lobbyRepository  = new LobbyRepository();
                    MemberRepository memberRepository = new MemberRepository();
                    memberRepository.DeleteOne(playerId);
                    var lobby = lobbyRepository.Read(0);
                    lobby.Players.Remove(lobby.Players.Find(e => e.TelegramUserId == playerId));
                    lobbyRepository.Update(lobby);
                    character.State = CharacterState.ChangeGameMode;
                    _characterRepository.Update(character);
                    return(new List <MessageConfig>
                    {
                        new MessageConfig()
                        {
                            Answer = "Обучение пропущено",
                            PlayerId = playerId
                        }
                    });

                default:
                    return(new List <MessageConfig>
                    {
                        new MessageConfig()
                        {
                            Answer = "Неверная команда",
                            PlayerId = playerId
                        }
                    });
                }

            case CharacterState.FindGame:
                switch (command)
                {
                case "/help":
                    return(new List <MessageConfig>
                    {
                        new MessageConfig()
                        {
                            Answer = Answers.Help.RandomAnswer(),
                            PlayerId = playerId
                        }
                    });

                case "/stop":
                    _characterRepository.Read(playerId);
                    MemberRepository repo = new MemberRepository();
                    var character         = _characterRepository.Read(playerId);
                    character.State = CharacterState.ChangeGameMode;
                    _characterRepository.Update(character);
                    repo.DeleteOne(playerId);
                    return(new List <MessageConfig>
                    {
                        new MessageConfig()
                        {
                            Answer = "Вы удалены из очереди",
                            PlayerId = playerId
                        }
                    });

                default:
                    return(new List <MessageConfig>
                    {
                        new MessageConfig()
                        {
                            Answer = "Неверная команда",
                            PlayerId = playerId
                        }
                    });
                }

            case CharacterState.InGame:
                switch (command)
                {
                case "Вперед":
                    return(BotService.MoveCommand(playerId, Direction.North));

                case "Назад":
                    return(BotService.MoveCommand(playerId, Direction.South));

                case "Вправо":
                    return(BotService.MoveCommand(playerId, Direction.East));

                case "Влево":
                    return(BotService.MoveCommand(playerId, Direction.West));

                case "Удар кинжалом":
                    return(BotService.StabCommand(playerId));

                case "Пропуск хода":
                    return(BotService.SkipTurn(playerId));

                case "Выстрел":
                {
                    var inlineKeyboard = KeybordConfiguration.ChooseDirectionKeyboard();
                    BotClient.SendTextMessageAsync(playerId, "Выбирай направление",
                                                   replyMarkup: inlineKeyboard);
                    BotClient.OnCallbackQuery += BotClient_OnCallbackQueryShoot;
                    return(null);
                }

                case "Взрыв стены":
                {
                    var inlineKeyboard = KeybordConfiguration.ChooseDirectionKeyboard();
                    BotClient.SendTextMessageAsync(playerId, "Выбирай направление",
                                                   replyMarkup: inlineKeyboard);
                    BotClient.OnCallbackQuery += BotClient_OnCallbackQueryBomb;
                    return(null);
                }

                case "/afk":
                    return(BotService.AfkCommand(playerId));

                case "/leave":
                    return(BotService.TryLeaveCommand(playerId));
                }

                return(new List <MessageConfig>
                {
                    new MessageConfig()
                    {
                        Answer = Answers.UndefinedCommand.RandomAnswer(),
                        PlayerId = playerId
                    }
                });

            case CharacterState.NewCharacter:
                if (command == "/start")
                {
                    if (_characterRepository.Read(playerId) == null)
                    {
                        _characterRepository.Create(playerId);
                        return(new List <MessageConfig>
                        {
                            new MessageConfig()
                            {
                                Answer = "Напишите имя персонажа",
                                PlayerId = playerId
                            }
                        });
                    }
                }

                return(new List <MessageConfig>
                {
                    new MessageConfig()
                    {
                        Answer = "Неверная команда",
                        PlayerId = playerId
                    }
                });

            case CharacterState.AcceptLeave:
                if (command == "Подтверждаю")
                {
                    return(BotService.LeaveCommand(playerId));
                }
                else
                {
                    return(new List <MessageConfig>
                    {
                        new MessageConfig
                        {
                            Answer = "Не подтверждено",
                            PlayerId = playerId
                        }
                    });
                }

            case CharacterState.Ban:
                //TODO:REBAN
                return(new List <MessageConfig>
                {
                    new MessageConfig()
                    {
                        Answer = "В бане",
                        PlayerId = playerId
                    }
                });

            default:
                throw new ArgumentOutOfRangeException(nameof(state), state, null);
            }
            throw new ArgumentOutOfRangeException(nameof(state), state, null);
        }