示例#1
0
        public static bool IsCustomer()
        {
            var user       = Context.Entity.Resolve <User>();
            var membership = new CustomerMembership();

            return(membership.IsCustomer(user));
        }
示例#2
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);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PriceCalculatorFactoryImpl" /> class.
        /// </summary>
        /// <param name="membership">The membership.</param>
        /// <param name="totalsFactory">The totals factory.</param>
        public PriceCalculatorFactoryImpl([NotNull] CustomerMembership membership, [NotNull] TotalsFactory totalsFactory)
        {
            Assert.ArgumentNotNull(membership, "membership");
            Assert.ArgumentNotNull(totalsFactory, "totalsFactory");

            this.membership    = membership;
            this.totalsFactory = totalsFactory;
        }
示例#4
0
        public void Should_activate_a_membership()
        {
            var customerMembership = new CustomerMembership(_membership, _customer);

            customerMembership.Activate();

            Assert.True(customerMembership.Activated);
        }
    /// <summary>
    /// Initializes a new instance of the <see cref="PriceCalculatorFactoryImpl" /> class.
    /// </summary>
    /// <param name="membership">The membership.</param>
    /// <param name="totalsFactory">The totals factory.</param>
    public PriceCalculatorFactoryImpl([NotNull]CustomerMembership membership, [NotNull] TotalsFactory totalsFactory)
    {
      Assert.ArgumentNotNull(membership, "membership");
      Assert.ArgumentNotNull(totalsFactory, "totalsFactory");

      this.membership = membership;
      this.totalsFactory = totalsFactory;
    }
示例#6
0
        public void ShouldCalculateCorrectDiscountPercentage(double expectedDiscountInPercent, int numberOfOrderedCups,
                                                             CustomerMembership customerMembership)
        {
            var discountInPercent =
                CakeBoxOrderingService.CalculateDiscountPercentage(customerMembership,
                                                                   numberOfOrderedCups);

            Assert.Equal(expectedDiscountInPercent, discountInPercent);
        }
示例#7
0
        private static double CalculateDiscountPercentage(CustomerMembership membership,
                                                          int numberOfOrderedCups)
        {
            var discountInPercent = 0.0;

            // TODO: Calculate discount in percent
            //
            //       Rules:
            //       3% for more than 4 cups
            //
            //       Premium customers get 5% in addition

            return(discountInPercent);
        }
        public async Task <ResponseMessage> SaveMembershipAsync(CustomerMembership customerMembership)
        {
            ResponseMessage message = new ResponseMessage {
                IsSuccess = false
            };

            customerMembership.CreatedOn = DateTime.Now;
            _context.CustomerMemberships.Add(customerMembership);
            await _context.SaveChangesAsync();

            message.IsSuccess = true;
            message.Detail    = PackingSlipConstants.MembershipCreationSuccessMessage;
            return(message);
        }
        internal static double CalculateDiscountPercentage(CustomerMembership membership, int numberOfOrderedCups)
        {
            var discountInPercent = 0.0;

            if (numberOfOrderedCups > 4)
            {
                discountInPercent = 3.0;
            }
            if (membership == CustomerMembership.Premium)
            {
                discountInPercent += 5.0;
            }

            return(discountInPercent);
        }
示例#10
0
        public void Membership_should_be_created_inactive()
        {
            var customerMembership = new CustomerMembership(_membership, _customer);

            Assert.False(customerMembership.Activated);
        }
示例#11
0
        public ServiceResult <string> SecondStepLogin(MembershipAuthenticationBindingModel model)
        {
            var UserId = base.AuthenticationInformation.UserId;

            if (!UserId.HasValue)
            {
                return new ServiceResult <string>()
                       {
                           Message    = new InvalidTokenMessage(),
                           StatusCode = StatusCode.Forbidden
                       }
            }
            ;

            var User = _userRepository.GetMany(P => P.Id == UserId).FirstOrDefault();

            if (User == null)
            {
                return new ServiceResult <string>()
                       {
                           Message    = new InvalidTokenMessage(),
                           StatusCode = StatusCode.NotFound
                       }
            }
            ;

            RoleEnum Role;
            var      RoleConversionResult = Enum.TryParse <RoleEnum>(model.Role, true, out Role);

            if (!RoleConversionResult)
            {
                return new ServiceResult <string>()
                       {
                           Message    = new InvalidRoleMessage(),
                           StatusCode = StatusCode.BadRequest
                       }
            }
            ;

            string Token = "";

            switch (Role)
            {
            case RoleEnum.SuperAdmin:
                SuperAdminMembership SuperAdminMembership = _superAdminMembershipRepository.GetMany(P => P.OrganizationId == model.OrganizationId && P.SuperAdmin.Role.UserId == UserId).FirstOrDefault();

                if (SuperAdminMembership == null)
                {
                    return new ServiceResult <string>()
                           {
                               Message    = new MembershipNotFoundMessage(),
                               StatusCode = StatusCode.NotFound
                           }
                }
                ;

                Token = _jsonWebTokenEngine.GenerateToken(UserId.Value, User.Username, model.OrganizationId, SuperAdminMembership.Organization.Title, Role.ToString("g"));
                break;

            case RoleEnum.Admin:
                AdminMembership AdminMembership = _adminMembershipRepository.GetMany(P => P.OrganizationId == model.OrganizationId && P.Admin.Role.UserId == UserId).FirstOrDefault();
                if (AdminMembership == null)
                {
                    return new ServiceResult <string>()
                           {
                               Message    = new MembershipNotFoundMessage(),
                               StatusCode = StatusCode.NotFound
                           }
                }
                ;

                Token = _jsonWebTokenEngine.GenerateToken(UserId.Value, User.Username, model.OrganizationId, AdminMembership.Organization.Title, Role.ToString("g"));
                break;

            case RoleEnum.Secretary:
                SecretaryMembership SecretaryMembership = _secretaryMembershipRepository.GetMany(P => P.OrganizationId == model.OrganizationId && P.Secretary.Role.UserId == UserId).FirstOrDefault();
                if (SecretaryMembership == null)
                {
                    return new ServiceResult <string>()
                           {
                               Message    = new MembershipNotFoundMessage(),
                               StatusCode = StatusCode.NotFound
                           }
                }
                ;

                Token = _jsonWebTokenEngine.GenerateToken(UserId.Value, User.Username, model.OrganizationId, SecretaryMembership.Organization.Title, Role.ToString("g"));
                break;

            case RoleEnum.Collector:
                CollectorMembership CollectorMembership = _collectorMembershipRepository.GetMany(P => P.OrganizationId == model.OrganizationId && P.Collector.Role.UserId == UserId).FirstOrDefault();
                if (CollectorMembership == null)
                {
                    return new ServiceResult <string>()
                           {
                               Message    = new MembershipNotFoundMessage(),
                               StatusCode = StatusCode.NotFound
                           }
                }
                ;

                Token = _jsonWebTokenEngine.GenerateToken(UserId.Value, User.Username, model.OrganizationId, CollectorMembership.Organization.Title, Role.ToString("g"));
                break;

            case RoleEnum.Delivery:
                DeliveryMembership DeliveryMembership = _deliveryMembershipRepository.GetMany(P => P.OrganizationId == model.OrganizationId && P.Delivery.Role.UserId == UserId).FirstOrDefault();
                if (DeliveryMembership == null)
                {
                    return new ServiceResult <string>()
                           {
                               Message    = new MembershipNotFoundMessage(),
                               StatusCode = StatusCode.NotFound
                           }
                }
                ;

                Token = _jsonWebTokenEngine.GenerateToken(UserId.Value, User.Username, model.OrganizationId, DeliveryMembership.Organization.Title, Role.ToString("g"));
                break;

            case RoleEnum.Customer:
                CustomerMembership CustomerMembership = _customerMembershipRepository.GetMany(P => P.OrganizationId == model.OrganizationId && P.Customer.Role.UserId == UserId).FirstOrDefault();
                if (CustomerMembership == null)
                {
                    return new ServiceResult <string>()
                           {
                               Message    = new MembershipNotFoundMessage(),
                               StatusCode = StatusCode.NotFound
                           }
                }
                ;

                Token = _jsonWebTokenEngine.GenerateToken(UserId.Value, User.Username, model.OrganizationId, CustomerMembership.Organization.Title, Role.ToString("g"));
                break;

            default:
                break;
            }

            return(new ServiceResult <string>(Token));
        }
    }
}
示例#12
0
        public void ShouldCalculateCorrectDiscountPercentage(double expectedDiscountInPercent, int numberOfOrderedCups, CustomerMembership membership)
        {
            var discountInPercent = OrderCreationService.CalculateDiscountPercentage(membership, numberOfOrderedCups);

            Assert.AreEqual(expectedDiscountInPercent, discountInPercent);
        }
        public async Task ShouldCalculateCorrectDiscountPercentage(double expectedDiscountInPercent, int numberOfOrderCups, CustomerMembership customerMembership)
        {
            var customer = new Customer {
                Membership = customerMembership
            };

            var orderCreationResult = await _orderCreationService.CreateOrderAsync(customer, numberOfOrderCups);

            Assert.Equal(OrderCreationResultCode.Success, orderCreationResult.ResultCode);
            Assert.Equal(expectedDiscountInPercent, orderCreationResult.CreatedOrder.DiscountInPercent);
        }