示例#1
0
        public void WhenDtoIsBlank_ShouldThrow_InputValidationException()
        {
            var command = new CreatePartnerCommand();

            FluentActions.Invoking(() => TestFramework.SendAsync(command))
            .Should().Throw <InputValidationException>();
        }
示例#2
0
        public async Task WhenDtoIsValid_ShouldCreatePartner()
        {
            var command = new CreatePartnerCommand()
            {
                Address = new AddressDto()
                {
                    City    = "Toronto",
                    Country = "Canada",
                    Street  = "Street 123",
                    ZipCode = "1234XX"
                },
                Name = "Test Name"
            };

            // Act.
            var partnerId = await TestFramework.SendAsync(command);

            var partner = await TestFramework.Data.FindAsync <Partner>(partnerId, x => x.Transactions);

            partner.Should().NotBeNull();
            partner.Id.Should().Be(partnerId);
            partner.CreatedAt.Should().BeCloseTo(DateTime.Now, 10000);
            partner.CreatedBy.Should().NotBeNullOrWhiteSpace();
            partner.LastModifiedAt.Should().BeNull();
            partner.DeletedAt.Should().BeNull();
            partner.Transactions.Should().BeEmpty();
            partner.Name.Should().Be(command.Name);
            partner.Address.Should().NotBeNull();
            partner.Address.Should().BeEquivalentTo(command.Address,
                                                    o => o.ComparingByMembers <AddressDto>());
        }
        public async Task <PartnerDTO> CreatePartner(CreatePartnerCommand command)
        {
            var partner = new Partner
            {
                DocumentNumber = command.pdv.document,
                Name           = command.pdv.name,
                Owner          = new OwnerEmployee
                {
                    FirstName = command.owner.firstName,
                    LastName  = command.owner.lastName
                },
                Address = new Address
                {
                    Location = command.pdv.address
                },
                CoverageArea = new CoverageArea
                {
                    Location = command.pdv.coverageArea
                }
            };

            _partnerRepository.Insert(partner);
            await _unitOfWork.CommitAsync();

            return(ConvertEntityToDTO(partner));
        }
        public async Task <IActionResult> Post([FromBody] Partner partner)
        {
            CreatePartnerCommand command = new CreatePartnerCommand(partner);

            await partnerCommandHandler.ExecuteAsync(command);

            return(this.HandleNotification(partnerCommandHandler, partner));
        }
        public async Task <IActionResult> CreatePartner([FromBody] CreatePartnerCommand command)
        {
            var result = await _appService.CreatePartner(command);

            if (result == null)
            {
                return(UnprocessableEntity());
            }

            return(Ok(result));
        }
示例#6
0
        public async Task <IActionResult> Create([FromBody] CreatePartnerCommand request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var partner = await _mediator.Send(request);

            return(CreatedAtAction(nameof(GetById), new { id = partner.Id }, partner));
        }
示例#7
0
        public async Task <ActionResult <PartnerViewModel> > CreatePartner([FromBody] CreatePartnerCommand command)
        {
            var newId = await _Mediator.Send(command);

            var newPartner = await _Mediator.Send(new GetPartnerQuery()
            {
                Id = newId
            });

            return(StatusCode(200, newPartner));
        }
        public async Task Create()
        {
            var command = new CreatePartnerCommand();

            _mockMediator.Setup(x => x.Send(command, It.IsAny <CancellationToken>()))
            .ReturnsAsync(123);

            var result = await _sut.Create(command);

            Assert.IsAssignableFrom <OkObjectResult>(result.Result);
            Assert.AreEqual(123, ((OkObjectResult)result.Result).Value);
        }
示例#9
0
        public async Task Create_WhenRequestInvalid_ShouldReturnBadRequest()
        {
            // Arrange
            var request = new CreatePartnerCommand();

            _controller.ModelState.AddModelError("any error", "any message");

            // Act
            var response = await _controller.Create(request);

            // Assert
            response.Should().NotBeNull().And.BeOfType <BadRequestObjectResult>();
        }
示例#10
0
        public async Task Create_WhenRequestIsValid_ShouldReturnCreatedAtActionResult()
        {
            // Arrange
            var     request = new CreatePartnerCommand();
            Partner partner = CreatePartner();

            _mediator.Send(Arg.Any <CreatePartnerCommand>()).Returns(partner);

            // Act
            var response = await _controller.Create(request);

            // Assert
            response.Should().NotBeNull().And.BeOfType <CreatedAtActionResult>();
            var createdAtActionResponse = response as CreatedAtActionResult;

            createdAtActionResponse.ActionName.Should().Be(nameof(_controller.GetById));
        }
示例#11
0
        public async Task ExecuteAsync(CreatePartnerCommand command)
        {
            if (!command.Validate())
            {
                AddNotification(command.GetNotifications());
                return;
            }

            try
            {
                await partnerRepository.AddAsync(command.Partner);
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message, ex);
                AddNotification(ex.Message, System.Net.HttpStatusCode.InternalServerError);
            }
        }
示例#12
0
        public async Task Handle_ShouldCreatePartner()
        {
            // Arrange
            var command = new CreatePartnerCommand()
            {
                Address      = new Geolocalization.Application.Command.Commands.Point(),
                CoverageArea = new Geolocalization.Application.Command.Commands.MultiPolygon()
            };
            var generatedId = ObjectId.GenerateNewId().ToString();

            _repository.Create(Arg.Any <Partner>()).Returns(generatedId);

            // Act
            var response = await _handler.Handle(command, default(CancellationToken));

            // Assert
            await _repository.Received(1).Create(Arg.Any <Partner>());
        }
示例#13
0
        public async Task <BaseApiResponse> Add(AddPartnerRequest request)
        {
            request.CheckNotNull(nameof(request));

            var userInfo = _userQueryService.FindUser(request.Mobile);

            if (userInfo == null)
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "没找到该用户"
                });
            }
            var newpartnerid = GuidUtil.NewSequentialId();
            var command      = new CreatePartnerCommand(
                newpartnerid,
                userInfo.Id,
                userInfo.WalletId,
                request.Mobile,
                request.Region,
                request.Level,
                request.Persent,
                request.CashPersent,
                request.BalanceInterval,
                request.Remark,
                request.IsLocked
                );
            var result = await ExecuteCommandAsync(command);

            if (!result.IsSuccess())
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "命令没有执行成功:{0}".FormatWith(result.GetErrorMessage())
                });
            }
            //添加操作记录
            var currentAdmin = _contextService.GetCurrentAdmin(HttpContext.Current);

            RecordOperat(currentAdmin.AdminId.ToGuid(), "添加代理", newpartnerid, "{0}代理地区{1}".FormatWith(userInfo.Mobile, request.Region));

            return(new BaseApiResponse());
        }
示例#14
0
        public async Task <BaseApiResponse> Add([FromBody] AddPartnerRequest request)
        {
            request.CheckNotNull(nameof(request));

            var userInfo = _userQueryService.FindUser(request.Mobile);

            if (userInfo == null)
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "没找到该用户"
                });
            }

            var command = new CreatePartnerCommand(
                GuidUtil.NewSequentialId(),
                userInfo.Id,
                userInfo.WalletId,
                request.Mobile,
                request.Region,
                request.Level,
                request.Persent,
                request.CashPersent,
                request.BalanceInterval,
                request.Remark,
                request.IsLocked
                );
            var result = await ExecuteCommandAsync(command);

            if (!result.IsSuccess())
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "命令没有执行成功:{0}".FormatWith(result.GetErrorMessage())
                });
            }
            return(new BaseApiResponse());
        }