public RegistrationCreated(RegistrationId id, ExternalRegistrationId externalId, Candidate candidate, DateTime publishedOn) { Id = id; ExternalId = externalId; Candidate = candidate; PublishedOn = publishedOn; }
private async Task <Result <OrderItem> > CreateRegistrationOrderItem(ExternalRegistrationId externalRegistrationId, ExamId examId) { return(await _examPricingProvider.GetPriceAsync(examId) .OnSuccess(price => OrderItem.Create(Products.Registration.ItemName, Products.Registration.ProductType, externalRegistrationId, 1, price))); }
private Registration(ExternalRegistrationId externalId, ExamId examId, OrderId orderId, Candidate candidate, ISystemTimeProvider systemTimeProvider) : this(systemTimeProvider) { ExternalId = externalId; Status = RegistrationStatus.New; Candidate = candidate; ExamId = examId; OrderId = orderId; }
private async Task <Result <Order> > CreateOrder(ExternalRegistrationId externalRegistrationId, ExamId examId, ContactData buyer) { return(await CreateRegistrationOrderItem(externalRegistrationId, examId) .OnSuccess(item => Order.CreateWithDefaultSellerAsync(buyer, new[] { item }, _systemTimeProvider, _singleCurrencyPolicy, _singleItemsCurrencyPolicy, _orderRepository))); }
public static async Task <Result <Registration> > CreateAsync(ExternalRegistrationId externalRegistrationId, ExamId examId, OrderId orderId, Candidate candidate, ISystemTimeProvider systemTimeProvider, IRegistrationRepository registrationRepository) { return(await Result.Create(candidate != null, RegistrationErrors.CandidateCannotBeEmpty.Build()) .OnSuccess(() => new Registration(externalRegistrationId, examId, orderId, candidate, systemTimeProvider)) .OnSuccess(async registration => await registrationRepository.SaveAsync(registration)) .OnSuccess(registration => registration.RaiseEvent(new RegistrationCreated(registration.Id, registration.ExternalId, candidate, systemTimeProvider.UtcNow)))); }
public async Task <Result <RegistrationId> > Handle(CreateRegistrationCommand request, CancellationToken cancellationToken) { var externalRegistrationId = new ExternalRegistrationId(); var orderResult = await CreateOrder(externalRegistrationId, request.ExamId, request.Buyer); var bookPlaceResult = await BookPlace(request.ExamId); return(await Result.Combine(orderResult, bookPlaceResult) .OnSuccess(async() => await Registration.CreateAsync(externalRegistrationId, request.ExamId, orderResult.Value.Id, request.Candidate, _systemTimeProvider, _registrationRepository)) .OnSuccess(registration => registration.Id)); }
public RegistrationCancelled(RegistrationId id, ExternalRegistrationId externalId, DateTime publishedOn) { Id = id; ExternalId = externalId; PublishedOn = publishedOn; }