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); } }
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)); }
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); }
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); }
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); }