Example #1
0
        public async Task <Member> CreateMember(CreateMemberCommand command)
        {
            if (command == null)
            {
                throw new CustomBadRequestException(ExceptionMessage.NullCommand);
            }

            if (String.IsNullOrEmpty(command.PhoneNumber) && String.IsNullOrEmpty(command.Email))
            {
                throw new CustomBadRequestException(ExceptionMessage.MemberEmptyEmailAndPhone);
            }

            if (command.IdCard == null)
            {
                throw new CustomBadRequestException(ExceptionMessage.IdCardNull);
            }

            if (!String.IsNullOrEmpty(command.Email))
            {
                if (!IsEmailValid(command.Email))
                {
                    throw new CustomBadRequestException(ExceptionMessage.BadEmailFormat);
                }
            }

            var idCard = new IdentityCard
            {
                Firstname              = command.IdCard.Firstname,
                Lastname               = command.IdCard.Lastname,
                BirthDate              = command.IdCard.BirthDate,
                CardNumber             = command.IdCard.CardNumber,
                ExpirationDate         = command.IdCard.ExpirationDate,
                ValidityDate           = command.IdCard.ValidityDate,
                NationalRegisterNumber = command.IdCard.NationalRegisterNumber
            };

            ValidateIdCard(idCard);

            var memberCard = MemberCard.GenerateMemberCard();

            var member = new Member
            {
                Email         = command.Email,
                PhoneNumber   = command.PhoneNumber,
                IdentityCards = new List <IdentityCard>()
                {
                    idCard
                },
                MemberCards = new List <MemberCard>()
                {
                    memberCard
                },
                IsActive = true
            };

            _context.Members.Add(member);
            await _context.SaveChangesAsync();

            return(member);
        }
Example #2
0
 public async Task Run([QueueTrigger("userregistered", Connection = "azurestorageconnectionstring")] string jsonEvent, ILogger log)
 {
     log.LogInformation($"C# Queue trigger function processed: {jsonEvent}");
     var ev      = JsonConvert.DeserializeObject <UserRegistered>(jsonEvent);
     var command = new CreateMemberCommand(Guid.Parse(ev.Id), ev.Username);
     await _betModule.ExecuteCommandAsync(command).ConfigureAwait(false);
 }
        public async Task Handle_return_true()
        {
            var fakeMemberCommand = new CreateMemberCommand()
            {
                Company = "测试成功", Password = "******", PhoneNumber = "1366" + DateTime.Now.ToString("yyyyMMddhh"), UserName = "******"
            };

            _memberRepositoryMock.Setup(p => p.UnitOfWork.SaveChangesAsync(default)).Returns(Task.FromResult(1));
        public async Task <ActionResult <GetMemberViewModel> > CreateMember([FromBody] CreateMemberCommand command)
        {
            var member = await _memberService.CreateMember(command);

            var memberViewModel = _mapper.Map <GetMemberViewModel>(member);

            return(CreatedAtAction(nameof(GetById), new { memberId = memberViewModel.Id }, memberViewModel));
        }
Example #5
0
        public async Task <IActionResult> CreateAsync([FromBody] CreateMemberCommand command,
                                                      CancellationToken cancellationToken)
        {
            var result = await _mediator.Send(command, cancellationToken);

            return(result.Failures.Any()
                                ? BadRequest(result.GenerateFailuresOutput()) as IActionResult
                                : CreatedAtRoute("get-member", new { id = result.Data.Id }, result.Data));
        }
Example #6
0
        public async Task <BizResult <string> > Register(CreateMemberCommand dto)
        {
            var hash = configuration["Customization:PwdKey"];

            dto.Password = EncryptUtil.AESEncrypt(dto.Password, hash);
            await _mediator.Send(dto, HttpContext.RequestAborted);

            return(new BizResult <string>("注册成功"));
        }
Example #7
0
        public async Task CreateMember_EmptyEmailAndPhone_ThrowException()
        {
            InjectClassFor(InitializeContext());
            var command = new CreateMemberCommand();

            var exception = await Assert.ThrowsAsync <CustomBadRequestException>(() => ClassUnderTest.CreateMember(command));

            Assert.Equal(ExceptionMessage.MemberEmptyEmailAndPhone, exception.Message);
        }
Example #8
0
        public void CreateMember_CreateSuccesfully()
        {
            var factory = new Mock <IFactory>();
            var result  = new CreateMemberCommand(new List <string>()
            {
                "Member5"
            }, database, factory.Object).Execute();

            Assert.AreEqual("Created member: 'Member5'", result);
        }
        public async Task <IActionResult> Create(CreateMemberCommand command)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _memberService.CreateMemberCommandHandler(command);

            return(Created($"/api/members/{result.Payload.Id}", result));
        }
        public void IsValid_ShouldBeFalse_WhenCreateMemberCommandIsNotValid()
        {
            var command = new CreateMemberCommand
            {
                Name    = string.Empty,
                Address = string.Empty
            };
            var validator = new CreateMemberCommandValidator();
            var result    = validator.Validate(command);

            result.IsValid.ShouldBe(false);
        }
Example #11
0
        public async Task CreateMember_EmptyIdCard_ThrowException()
        {
            InjectClassFor(InitializeContext());
            var command = new CreateMemberCommand
            {
                Email = "*****@*****.**"
            };

            var exception = await Assert.ThrowsAsync <CustomBadRequestException>(() => ClassUnderTest.CreateMember(command));

            Assert.Equal(ExceptionMessage.IdCardNull, exception.Message);
        }
Example #12
0
        public async Task <CreateMemberCommandResult> CreateMemberCommandHandler(CreateMemberCommand command)
        {
            var member          = _mapper.Map <Member>(command);
            var persistedMember = await _memberRepository.CreateRecordAsync(member);

            var vm = _mapper.Map <MemberVm>(persistedMember);

            return(new CreateMemberCommandResult()
            {
                Payload = vm
            });
        }
        public async Task ShouldNotCreateMemberIfMemberAlreadyCreated()
        {
            var memberId = Guid.Parse("01c1da98-b4b7-45dc-8352-c98ece06dab1");
            var command  = new CreateMemberCommand(memberId,
                                                   "toto");
            var member           = new Member(new(memberId), "toto", 10);
            var memberRepository = new InMemoryMemberRepository(new() { member });
            var handler          = new CreateMemberCommandHandler(memberRepository);
            var record           = await Record.ExceptionAsync(() => handler.Handle(command, default));

            Assert.IsType <MemberAlreadyExistsException>(record);
            Assert.Single(memberRepository.GetMembers());
        }
Example #14
0
        public MemberController()
        {
            DatabaseService              database            = new DatabaseService();
            GetMembersListQuery          membersListQuery    = new GetMembersListQuery(database);
            GetMemberDetailQuery         memberDetailQuery   = new GetMemberDetailQuery(database);
            CreateMemberViewModelFactory factory             = new CreateMemberViewModelFactory(new GetCategoriesListQuery(database));
            CreateMemberCommand          createMemberCommand = new CreateMemberCommand(database, new MemberFactory());

            _membersListQuery    = membersListQuery;
            _memberDetailQuery   = memberDetailQuery;
            _factory             = factory;
            _createMemberCommand = createMemberCommand;
        }
        public static CreateMemberCommand ToCreateMemberCommand(this MemberVm model)
        {
            var command = new CreateMemberCommand()
            {
                FirstName = model.FirstName,
                LastName  = model.LastName,
                Roles     = model.Roles,
                Avatar    = model.Avatar,
                Email     = model.Email
            };

            return(command);
        }
Example #16
0
        public static Faker <CreateMemberCommand> Valid()
        {
            return(new Faker <CreateMemberCommand>().CustomInstantiator(x =>
            {
                var command = new CreateMemberCommand {
                    Name = x.Person.UserName
                };

                const string routename = "get-member";
                var urlHelper = UrlHelperMockBuilder.Create().SetupLink(routename).Build();
                command.SetupForCreation(urlHelper, routename, x => new { x.Id });
                return command;
            }));
        }
Example #17
0
        public IActionResult Post(CreateMemberCommand command)
        {
            var member = mapper.Map<Member>(command);

            try
            {
                memberRepository.Add(member);
                return StatusCode(201, new { Message = "Member successfully created." });
            }
            catch (Exception e)
            {
                return StatusCode(500, e.Message);
            }
        }
Example #18
0
        public async Task <(bool IsValid, IEnumerable <string> Errors)> Create(CreateMemberCommand createMemberCommand)
        {
            var validation = await CreateMemberCommandValidator.Instance.ValidateAsync(createMemberCommand);

            if (!validation.IsValid)
            {
                return(validation.IsValid, validation.Errors.Select(x => x.ErrorMessage));
            }

            var member = new Member(createMemberCommand.Name);

            await _memberService.Upsert(member);

            return(true, null);
        }
 public void AddMembership(CreateMemberCommand request)
 {
     members.Add(new Membership
     {
         Mail         = request.Mail,
         PhoneNumber  = request.PhoneNumber,
         IdentityCard = new IdentityCard
         {
             Birthday     = request.IdentityBirthday,
             CardNumber   = request.IdentityCardNumber,
             FirstName    = request.IdentityFirstName,
             LastName     = request.IdentityLastName,
             NISS         = request.NISS,
             ValidityDate = request.IdentityValidityDate
         }
     });
 }
        public async Task ShouldCreateMember()
        {
            var memberId = Guid.Parse("01c1da98-b4b7-45dc-8352-c98ece06dab1");
            var command  = new CreateMemberCommand(memberId,
                                                   "toto");
            var memberRepository = new InMemoryMemberRepository();
            var handler          = new CreateMemberCommandHandler(memberRepository);
            await handler.Handle(command, default);

            var member = await memberRepository.GetByIdAsync(new(Guid.Parse("01c1da98-b4b7-45dc-8352-c98ece06dab1")));

            Assert.Equal(memberId, member.Id.Value);
            Assert.Equal("toto", member.Name);
            Assert.Equal(1000, member.Wallet);
            Assert.Collection(member.DomainEvents, x =>
            {
                Assert.Equal(memberId, (x as MemberCreated).MemberId);
            });
        }
Example #21
0
        public async Task CreateMember_IdExpirationOlderThanToday_ThrowException()
        {
            InjectClassFor(InitializeContext());
            var command = new CreateMemberCommand
            {
                PhoneNumber = "+32495414243",
                IdCard      = new CreateMemberCommand.IdentityCard
                {
                    BirthDate              = new DateTime(2000, 5, 30),
                    CardNumber             = 100000012,
                    Firstname              = "Test",
                    Lastname               = "Jean",
                    NationalRegisterNumber = "456.51.51-456-78",
                    ExpirationDate         = new DateTime(2016, 6, 11),
                    ValidityDate           = new DateTime(2014, 6, 11)
                }
            };

            var exception = await Assert.ThrowsAsync <CustomBadRequestException>(() => ClassUnderTest.CreateMember(command));

            Assert.Equal(ExceptionMessage.IdCardExpired, exception.Message);
        }
Example #22
0
        public async Task CreateMember_InvalidEmailFormat_ThrowException()
        {
            InjectClassFor(InitializeContext());
            var command = new CreateMemberCommand
            {
                Email  = "testemail.com",
                IdCard = new CreateMemberCommand.IdentityCard
                {
                    BirthDate              = new DateTime(2000, 5, 30),
                    CardNumber             = 100000012,
                    Firstname              = "Test",
                    Lastname               = "Jean",
                    NationalRegisterNumber = "456.51.51-456-78",
                    ExpirationDate         = new DateTime(2021, 6, 11),
                    ValidityDate           = new DateTime(2016, 6, 11)
                }
            };

            var exception = await Assert.ThrowsAsync <CustomBadRequestException>(() => ClassUnderTest.CreateMember(command));

            Assert.Equal(ExceptionMessage.BadEmailFormat, exception.Message);
        }
Example #23
0
        public async Task CreateMember_ValidCommand_ReturnCreatedMember()
        {
            InjectClassFor(InitializeContext());
            var command = new CreateMemberCommand
            {
                PhoneNumber = "+32495414243",
                IdCard      = new CreateMemberCommand.IdentityCard
                {
                    BirthDate              = new DateTime(2000, 5, 30),
                    CardNumber             = 100000024,
                    Firstname              = "Test",
                    Lastname               = "Jean",
                    NationalRegisterNumber = "456.51.51-456-78",
                    ExpirationDate         = new DateTime(2026, 6, 11),
                    ValidityDate           = new DateTime(2016, 6, 11)
                }
            };

            var member = await ClassUnderTest.CreateMember(command);

            Assert.Equal("+32495414243", member.PhoneNumber);
            Assert.Equal("456.51.51-456-78", member.IdentityCards.FirstOrDefault().NationalRegisterNumber);
            Assert.NotNull(member.MemberCards.FirstOrDefault());
        }
 public void AddMembership(CreateMemberCommand request)
 {
     throw new NotImplementedException();
 }
 public async Task <CreateMemberCommandResult> Create(CreateMemberCommand command)
 {
     return(await _httpClient.PostJsonAsync <CreateMemberCommandResult>("members", command));
 }
Example #26
0
        public async Task <IActionResult> CreateAsync([FromBody] CreateMemberCommand command, CancellationToken cancellationToken)
        {
            command.SetupForCreation(Url, "get-member", x => new { id = x.Id });

            return(await _mediator.Send(command, cancellationToken));
        }
Example #27
0
        public async Task <IHttpActionResult> Create([FromBody] CreateMemberCommand command)
        {
            var result = await _mediator.Send(command);

            return(Created(Request.RequestUri, result));
        }
Example #28
0
        public async Task <ApiResponse <Member> > Handle(CreateMemberCommand request, CancellationToken cancellationToken)
        {
            var createdMember = await _memberRepository.InsertAsync(new Member(request.Name), cancellationToken);

            return(new ApiResponse <Member>(createdMember));
        }
Example #29
0
 public async Task <ActionResult <int> > Post([FromBody] CreateMemberCommand command)
 {
     return(await _mediator.Send(command));
 }
Example #30
0
        public async Task <IActionResult> CreateNewMember([FromBody] CreateMemberCommand command)
        {
            var result = await Mediator.Send(command);

            return(Ok(result));
        }