コード例 #1
0
        public async Task HandleAsync(IReadOnlyCollection <IDomainEvent> domainEvents, CancellationToken cancellationToken)
        {
            var domainEvent = domainEvents.Single();

            switch (domainEvent.EventType.FullName)
            {
            case "Invoice.Core.DomainModel.InvoiceCreatedEvent":
            {
                // Initiate process for this invoice
                var id        = domainEvent.GetIdentity();
                var invoiceId = Guid.Parse(id.Value.Replace("invoice-", ""));
                await _assignmentService.CreateAssignment(new CreateAssignmentCommand(AssignmentId.New, invoiceId));

                break;
            }

            case "Invoice.Core.DomainModel.InvoiceSentEvent":
            {
                var id        = domainEvent.GetIdentity();
                var invoiceId = Guid.Parse(id.Value.Replace("invoice-", ""));

                var assignment = await _queryProcessor.ProcessAsync(new GetAssignmentByInvoiceIdQuery(invoiceId), CancellationToken.None);

                await _assignmentService.SetWaitingForPayment(new SetWaitingForPaymentCommand(AssignmentId.With(assignment.AssignmentId), assignment.InvoiceId));

                await _paymentService.SetWaitingForPayment(new WaitingForPaymentRequest()
                    {
                        InvoiceId = invoiceId
                    });

                var assignmentInvoice = await _queryProcessor.ProcessAsync(new GetAssignmentInvoiceQuery(invoiceId), CancellationToken.None);

                if (assignmentInvoice.PayInAdvance)
                {
                    await _payoutService.PayEmployee(new PayEmployeeRequest { InvoiceId = invoiceId });
                }

                break;
            }

            case "Payment.Core.DomainModel.PaymentReceivedEvent":
            {
                dynamic paymentReceived   = domainEvent.GetAggregateEvent();
                Guid    invoiceId         = paymentReceived.InvoiceId;
                var     assignmentInvoice = await _queryProcessor.ProcessAsync(new GetAssignmentInvoiceQuery(invoiceId), CancellationToken.None);

                if (!assignmentInvoice.PayInAdvance)
                {
                    await _payoutService.PayEmployee(new PayEmployeeRequest { InvoiceId = invoiceId });
                }
                break;
            }

            case "Payment.Core.DomainModel.PaymentDueEvent":
            {
                dynamic paymentDue = domainEvent.GetAggregateEvent();
                Guid    invoiceId  = paymentDue.InvoiceId;
                await _invoiceService.SendReminder(invoiceId);

                break;
            }

            case "Payout.Core.DomainModel.EmployeePaidEvent":
            {
                // close assignment
                dynamic employeePaid = domainEvent.GetAggregateEvent();
                Guid    invoiceId    = employeePaid.InvoiceId;
                var     assignment   = await _queryProcessor.ProcessAsync(new GetAssignmentByInvoiceIdQuery(invoiceId), CancellationToken.None);

                await _assignmentService.CloseAssignment(new CloseAssignmentCommand(AssignmentId.With(assignment.AssignmentId)));

                break;
            }
            }
        }
コード例 #2
0
 /// <summary>
 /// Process a query.
 /// </summary>
 /// <typeparam name="TResult">The type of result</typeparam>
 /// <param name="queryProcessor">The query processor</param>
 /// <param name="queryName">The name of the query</param>
 /// <param name="json">The JSON representation of the query</param>
 /// <returns>The result of the query</returns>
 public static async Task <TResult> ProcessAsync <TResult>(this IQueryProcessor queryProcessor, string queryName, string json)
 {
     return(await queryProcessor.ProcessAsync <TResult>(queryName, JObject.Parse(json)));
 }
コード例 #3
0
ファイル: CustomerService.cs プロジェクト: cykelbud/lrms
        public async Task <CustomerDto[]> GetCustomers()
        {
            var customers = await _queryProcessor.ProcessAsync(new GetAllCustomersQuery(), CancellationToken.None).ConfigureAwait(false);

            return(customers);
        }
コード例 #4
0
 public async Task <ICollection <Item> > GetItem([FromQuery] int listId)
 {
     return(await queryProcessor.ProcessAsync(new GetItemsFromListQuery { ListId = listId }));
 }
コード例 #5
0
 public async Task <CapacityDto> GetByDate(DateTime byDate) =>
 await _queryProcessor.ProcessAsync(new GetCapacityByDate(byDate), CancellationToken.None);
コード例 #6
0
ファイル: UserController.cs プロジェクト: Woodhds/metrics
 public Task <IEnumerable <VkUserModel> > Search([FromQuery] SearchUserQuery query)
 {
     return(_queryProcessor.ProcessAsync(query));
 }
コード例 #7
0
 public override async Task <ITestAggregateReadModel> GetTestAggregateReadModelAsync(IIdentity id)
 {
     return(await _queryProcessor.ProcessAsync(new ReadModelByIdQuery <InMemoryTestAggregateReadModel>(id.Value), CancellationToken.None).ConfigureAwait(false));
 }
コード例 #8
0
        public async Task <IActionResult> Get(Guid id, CancellationToken ct)
        {
            var x = await _queryExecutor.ProcessAsync(new ReadModelByIdQuery <EmployeeReadModel>(EmployeeId.With(id)), ct);

            return(Ok(x));
        }
コード例 #9
0
 public async Task <ICollection <List> > GetAllLists()
 {
     return(await queryProcessor.ProcessAsync(new GetListsQuery()));
 }
コード例 #10
0
ファイル: PaymentService.cs プロジェクト: cykelbud/lrms
 public async Task <IEnumerable <PaymentDto> > GetAll()
 {
     return(await _queryProcessor.ProcessAsync(new GetAllPaymentsQuery(), CancellationToken.None));
 }
コード例 #11
0
 /// <inheritdoc />
 public Task <TResult> GetResultAsync <TQuery, TResult>(TQuery query) where TQuery : IQuery
 {
     return(_queryProcessor.ProcessAsync <TQuery, TResult>(query));
 }
コード例 #12
0
 public Task <IEnumerable <ProjectListDTO> > Get()
 {
     return(queryProcessor.ProcessAsync <ProjectQueryHandler, AllProjectQuery, IEnumerable <ProjectListDTO> >(new AllProjectQuery()));
 }
コード例 #13
0
 public Task <IEnumerable <TeamListDTO> > Get()
 {
     return(queryProcessor.ProcessAsync <TeamQueryHandler, AllTeamQuery, IEnumerable <TeamListDTO> >(new AllTeamQuery()));
 }
コード例 #14
0
 public static Task <TResult> ProcessAsync <TResult>(
     this IQueryProcessor queryProcessor,
     IQuery <TResult> query)
 {
     return(queryProcessor.ProcessAsync(query, CancellationToken.None));
 }
コード例 #15
0
        public async Task <BookingResource> GetBooking(string bookingId)
        {
            var booking = await _queryProcessor.ProcessAsync(new BookingIdQuery(bookingId), CancellationToken.None);

            return(new BookingResource(Url, booking));
        }
コード例 #16
0
        public async Task <VehicleEntity> GetVehicleByIdAsync(VehicleId id, CancellationToken ctx)
        {
            var result = await _queryProcessor.ProcessAsync(new ReadModelByIdQuery <VehicleReadModel>(id), ctx);

            return(result?.ToVehicle());
        }
コード例 #17
0
        public async Task <AssignmentDto[]> GetAll()
        {
            var a = await _queryProcessor.ProcessAsync(new GetAllAssignmentsQuery(), CancellationToken.None);

            return(a);
        }
コード例 #18
0
 /// <inheritdoc />
 public Task <TResult> GetResultAsync <TResult>(IQuery <TResult> query)
 {
     return(_queryProcessor.ProcessAsync(query));
 }
コード例 #19
0
 public async Task <IEnumerable <PayoutDto> > GetAll()
 {
     return(await _queryProcessor.ProcessAsync(new GetAllPayoutQuery(), CancellationToken.None).ConfigureAwait(false));
 }
コード例 #20
0
 public void ProcessAsync_ThrowsException_WhenQueryIsNull()
 {
     _getSomething = null;
     Assert.ThrowsAsync <ArgumentNullException>(async() => await _sut.ProcessAsync <GetSomething, Something>(_getSomething));
 }
コード例 #21
0
ファイル: HomeController.cs プロジェクト: MrDustpan/CqrsBank
        public async Task <ActionResult> Index(GetAccountIndex query)
        {
            var accountIndex = await _queryProcessor.ProcessAsync(query);

            return(View(accountIndex));
        }
コード例 #22
0
 public Task <IEnumerable <TaskStateListDTO> > GetStates()
 {
     return(queryProcessor.ProcessAsync <TaskQueryHandler, AllStateQuery, IEnumerable <TaskStateListDTO> >(new AllStateQuery()));
 }
コード例 #23
0
        public async Task <ActionResult <ExampleReadModel> > GetExample(string id)
        {
            var readModel = await _queryProcessor.ProcessAsync(new ReadModelByIdQuery <ExampleReadModel>(id), CancellationToken.None);

            return(Ok(readModel));
        }
コード例 #24
0
 public async Task <object> Handle(string queryName, string content)
 {
     return(await _queryProcessor.ProcessAsync <object>(queryName, JObject.Parse(content)));
 }
コード例 #25
0
 private async Task <object> Handle(string queryName, string content)
 {
     return(await _queryProcessor.ProcessAsync <object>(queryName, content));
 }