Exemple #1
0
        public void When_I_Call_IsPackingSlipRequestValid_With_Valid_PackingSlip_I_Should_Get_True()
        {
            // Arrange
            string customerEmail = "*****@*****.**";
            var    createMembershipCheckResponse = new ResponseMessage {
                IsSuccess = false
            };
            var membership = new CustomerMembership {
                Email = customerEmail, IsActivated = false, IsUpgraded = false
            };
            var packingSlip = new PackingSlipHeader
            {
                PackingSlipItems = new List <PackingSlipItem>
                {
                    new PackingSlipItem
                    {
                        Name     = "Test Item",
                        Quantity = 2
                    }
                },
                AgentName         = It.IsAny <string>(),
                CustomerEmail     = customerEmail,
                CustomerName      = "Test Customer",
                PackingSlipNumber = "PS/001"
            };

            // Act
            _mockCustomerMembershipRepository.Setup(x => x.IsMembershipValidForCreate(customerEmail)).Returns(createMembershipCheckResponse);
            var valid = _packingSlipValidator.IsPackingSlipRequestValid(packingSlip);

            // Assert
            Assert.IsTrue(valid.IsSuccess);
        }
        public async Task <ResponseMessage> SavePackingSlip(PackingSlipHeader packingSlip)
        {
            ResponseMessage message = new ResponseMessage {
                IsSuccess = true
            };

            packingSlip = await _freeItemCheckerService.CheckForFreeItems(packingSlip);

            message = _packingSlipValidator.IsPackingSlipRequestValid(packingSlip);

            if (!message.IsSuccess)
            {
                return(message);
            }

            message = await _packingSlipRepository.SavePackingSlipAsync(packingSlip);

            if ((packingSlip.HasPhysicalProduct.HasValue && packingSlip.HasPhysicalProduct.Value) ||
                (packingSlip.HasBook.HasValue && packingSlip.HasBook.Value))
            {
                await _agentCommissionRepository.AddAgentCommission(packingSlip, 100);
            }

            if (packingSlip.ActivateMembership.HasValue && packingSlip.ActivateMembership.Value)
            {
                await _customerMembershipRepository.ActivateMembershipAsync(packingSlip.CustomerEmail);

                await _emailService.SendMail(_fileConfig.UserCredential, packingSlip.CustomerEmail,
                                             PackingSlipConstants.MembershipActivationSubject, PackingSlipConstants.MembershipActivationBody,
                                             _fileConfig.UserCredential, _fileConfig.Password, _fileConfig.Host, _fileConfig.Port);
            }

            if (packingSlip.UpgradeMembership.HasValue && packingSlip.UpgradeMembership.Value)
            {
                await _customerMembershipRepository.UpgradeMembershipAsync(packingSlip.CustomerEmail);

                await _emailService.SendMail(_fileConfig.UserCredential, packingSlip.CustomerEmail,
                                             PackingSlipConstants.MembershipUpgradeSubject, PackingSlipConstants.MembershipUpgradeBody,
                                             _fileConfig.UserCredential, _fileConfig.Password, _fileConfig.Host, _fileConfig.Port);
            }

            return(message);
        }