Пример #1
0
        public void AddInvoice(InvoiceForCreationDto invoice, List <SelectingProductForSellDto> products)
        {
            // 1. add custom?
            var phoneNumber = invoice.PhoneNumber;

            // check if it's existing?
            var customer   = _customerRepository.GetCustomByPhoneNumber(phoneNumber);
            var customerId = -1;

            if (customer == null)
            {
                customer = new Customer {
                    Name = invoice.CustomerName, PhoneNumber = phoneNumber, CreationTime = DateTime.Now, AccumulatedPoint = invoice.Price / 100000
                };
                if (customer.AccumulatedPoint >= _customerLevelRepository.GetCustomerLevelByName("Hạng Vàng").PointLevel)
                {
                    customer.CustomerLevelId = 3;
                }
                else if (customer.AccumulatedPoint >= _customerLevelRepository.GetCustomerLevelByName("Hạng Bạc").PointLevel)
                {
                    customer.CustomerLevelId = 2;
                }
                else
                {
                    customer.CustomerLevelId = 1;
                }
                var storedCustomer = _customerRepository.Create(customer);
                customerId = storedCustomer.Id;
            }
            else
            {
                customerId = customer.Id;
            }

            // 2. add invoice
            var storedInvoice = _invoiceRepository.Create(new Invoice
            {
                CustomerId   = customerId,
                UserId       = Session.CurrentUser.Id,
                CreationTime = DateTime.Now,
                Total        = invoice.Total,
                Discount     = invoice.Discount,
                Price        = invoice.Price
            });;

            // 3. add invoice's products and decrease no. each product
            foreach (var product in products)
            {
                var invoiceProduct = new InvoiceProduct
                {
                    ProductId = product.Id,
                    Number    = product.SelectedNumber,
                    InvoiceId = storedInvoice.Id
                };

                _invoiceProductRepository.Create(invoiceProduct);
                _productRepository.UpdateNumberById(product.Id, product.SelectedNumber);
            }
        }
Пример #2
0
        public void Create_Success_ReturnEntity()
        {
            // Arrange
            var repository = new InvoiceProductRepository();
            var input      = GenerateInput();

            // Act
            var result = repository.Create(input);

            // Assert
            Assert.That(CompareProperties(input, result));
        }
Пример #3
0
        public void Get_Success_ReturnEntity()
        {
            // Arrange
            var repository = new InvoiceProductRepository();
            var input      = repository.Create(GenerateInput());

            // Act
            var result = repository.Get(input.Id);

            // Assert
            Assert.IsInstanceOf <InvoiceProduct>(result);
        }
Пример #4
0
        public void Delete_Success_ReturnNull()
        {
            // Arrange
            var repository = new InvoiceProductRepository();
            var input      = repository.Create(GenerateInput());

            // Act
            repository.Delete(input.Id);
            var result = repository.Get(input.Id);

            // Assert
            Assert.IsNull(result);
        }
Пример #5
0
        public void Update_Success_ReturnTrue()
        {
            // Arrange
            var repository = new InvoiceProductRepository();
            var input      = repository.Create(GenerateInput());

            var inputForUpdate = GenerateInput(id: input.Id);

            // Act
            var result = repository.Update(inputForUpdate);

            // Assert
            Assert.IsTrue(result);
        }