public override async Task <IExecutionResult <bool> > HandleAsync(CartCheckoutCommand command, CancellationToken cancellationToken) { if (!command.IsValid()) { return(ValidationErrors(command)); } var cart = await _cartRepository.GetById(command.Id.ToString()); if (cart == null) { return(ExecutionError(command, ErrorMessages.Cart.DoesNotExistsById)); } var items = cart.Items.Select(x => new CartItem(x.Id) { Price = x.Price, Scale = x.Scale, CurrencyCode = x.CurrencyCode, Product = _productRepository.GetById(x.Id.ToString()).Result }).ToList(); cart.Items = items; var invoice = new Invoice(command.XTeamControl, command.CurrencyCode); var invoiceAggregate = new InvoiceAggregate(invoice, cart); await Retry.DoAsync(async() => await _queueService.SendToSqsAsync(invoiceAggregate)); var result = await _cartRepository.Checkout(command.Id.ToString()); return(new SuccessExecutionResult <bool>(GetType(), result)); }
public void IncludeUpdateTest() { var invoiceBuilder = new InvoiceAggregateBuilder(); var invoiceAggregate = invoiceBuilder.GetRandomInvoiceAggregate(); var invoice = InvoiceAggregate.Update(invoiceAggregate.Id, invoiceAggregate); invoiceAggregate.Should().BeEquivalentTo(invoice); }
public async Task <Guid> Greate(Invoice request) { var invoice = InvoiceAggregate.Create(request.ContractId, request.DateStart, request.DateEnd); var sheetsToInclude = await _invoiceAggregateRepo.GetSheets(invoice.ContractId, invoice.DateStart, invoice.DateEnd); invoice.IncludeSheets(sheetsToInclude); await _invoiceAggregateRepo.Add(invoice); return(invoice.Id); }
public void InvoiceAggregate_ShouldBeDeleted() { //Arrange var request = AggregatesRequestBuilder.CreateRandomInvoiceCreateRequest(); var invoice = InvoiceAggregate.CreateFromRequest(request); //Act invoice.MarkAsDeleted(); //Assert invoice.IsDeleted.Should().BeTrue(); }
public void InvoiceAggregate_CreateFromRequest() { //Arrange var request = AggregatesRequestBuilder.CreateRandomInvoiceCreateRequest(); //Act var invoice = InvoiceAggregate.CreateFromRequest(request); //Assert invoice.ContractId.Should().Be(request.ContractId); invoice.DateStart.Should().Be(request.DateStart); invoice.DateEnd.Should().Be(request.DateEnd); invoice.IsDeleted.Should().BeFalse(); }
public async Task <Guid> Create(InvoiceCreateRequest request) { //Создаем новую сущность счета var invoice = InvoiceAggregate.CreateFromRequest(request); //Устанавливаем список карточек связанных со счетом и рассчитываем сумму var sheets = await _invoiceRepo.GetSheets( request.ContractId, request.DateStart, request.DateEnd); //Добавляем карточки к счету и рассчитываем сумму оплаты invoice.IncludeSheets(sheets); //Закидываем новый счет в базу await _invoiceRepo.Add(invoice); return(invoice.Id); }
public async Task <InvoiceDto> Handle(AddInvoiceCommand request, CancellationToken cancellationToken) { Contract contract = await _contractsRepository.GetById(request.ContractId); if (contract != null) { var invoiceAggregate = InvoiceAggregate.Create(contract.Id, request.Date, request.Description); var tasks = await _tasksRepository.GetByIdList(request.Tasks); invoiceAggregate.IncludeTasks(tasks, contract.HourCost); var invoice = await _invoicesRepository.Create(invoiceAggregate); _mapper.Map <InvoiceDto>(invoice); } return(null); }
public void InvoiceAggregate_CalculateSomeSum_AfterIncludeSomeSheets() { //Arrange var invoiceRequest = AggregatesRequestBuilder.CreateRandomInvoiceCreateRequest(); var invoice = InvoiceAggregate.CreateFromRequest(invoiceRequest); var sheets = new List <SheetAggregate>(); var sheetsCount = 3; for (int i = 0; i < sheetsCount; i++) { var sheetRequest = AggregatesRequestBuilder.CreateRandomSheetCreateRequest(); sheets.Add(SheetAggregate.CreateFromRequest(sheetRequest)); } //Act invoice.IncludeSheets(sheets); //Assert invoice.Sum.Amount.Should().BeGreaterThan(0); invoice.Sheets.Count.Should().Be(sheetsCount); }
public async Task Update(InvoiceAggregate item) { _context.Invoices.Update(item); await _context.SaveChangesAsync(); }
public async Task Add(InvoiceAggregate item) { await _context.Invoices.AddAsync(item); await _context.SaveChangesAsync(); }
public InvoiceAggregate GetRandomInvoiceAggregate() { var invoiceAggregate = InvoiceAggregate.Create(contractId, DateTime.Now, DateTime.Now.AddDays(numOfDays)); return(invoiceAggregate); }
public Task Update(InvoiceAggregate item) { throw new NotImplementedException(); }
public InvoiceAggregateTests() { _invoiceAggregate = InvoiceAggregate.Create(1, DateTime.Today, "Test"); }