public async Task <EmployeeInfoCreateResponse> AddEmployee(EmployeeInfoCreateRequest request) { // NOTE: default flow for api logic // 이벤트스트림 생성 -> api 로직 핸들링 // event stream 에서 기록을 안하기 위해서는 이벤트 스트림 request 를 생성하지 않고, // 바로 event stream id 를 생성하면 된다. var eventStreamRequest = new EventStreamCreateRequest() { StreamId = Guid.NewGuid() }; var eventStreamResponse = await this._service.CreateEventStreamAsync(eventStreamRequest); EmployeeInfoCreateResponse response; if (eventStreamResponse.Error != null) { response = new EmployeeInfoCreateResponse() { Error = eventStreamResponse.Error }; } request.StreamId = eventStreamResponse.Data.StreamId; response = await this._service.CreateEmployeeInfoAsync(request); return(await Task.FromResult(response)); }
public virtual async Task <EventStreamCreateResponse> GetEventStream() { var request = new EventStreamCreateRequest() { StreamId = Guid.NewGuid() }; var response = await this._service.CreateEventStreamAsync(request); return(response); }
public async Task <JournalVoucherCreateResponse> AddVoucher(JournalVoucherCreateRequest request) { JournalVoucherCreateResponse response; // TODO: validation logic (라인 체크 및 기타 등등) - 일단 수동으로 체크 if (request == null || request.Entries == null || request.Entries.Count() < 1) { response = new JournalVoucherCreateResponse { Error = new ResponseError { Message = "Bad request" } }; return(await Task.FromResult(response)); } // NOTE: 이벤트 스트림 생성 var eventStreamRequest = new EventStreamCreateRequest() { StreamId = Guid.NewGuid() }; var eventStreamResponse = await this._service.CreateEventStreamAsync(eventStreamRequest); if (eventStreamResponse.Error != null) { response = new JournalVoucherCreateResponse() { Error = eventStreamResponse.Error }; } request.StreamId = eventStreamResponse.Data.StreamId; response = await this._service.CreateJournalVoucherAsync(request); // memo 에 테스트를 위해 streamId 를 넣었음 // 해당 streamId를 조회 var result = await _repository.GetJournalVouchersListBy(request.StreamId); response.Data.VoucherListNumber = result.BatchNum; return(await Task.FromResult(response)); }
/// <summary> /// Creates a new event stream asynchronously. /// </summary> /// <param name="request">The <see cref="EventStreamCreateRequest" /> instance.</param> /// <returns>Returns the <see cref="EventStreamCreateResponse" /> instance.</returns> public async Task <EventStreamCreateResponse> CreateEventStreamAsync(EventStreamCreateRequest request) { var handler = this._handlers.SingleOrDefault(p => p.CanHandle(request)); if (handler == null) { return(await Task.FromResult(default(EventStreamCreateResponse))); } var ev = handler.CreateEvent(request) as EventStreamCreatedEvent; PopulateBaseProperties(ev); EventStreamCreateResponse response; try { await this._processor.ProcessEventsAsync(new[] { ev }); response = new EventStreamCreateResponse { Data = new EventStreamResponseData { StreamId = request.StreamId } }; } catch (Exception ex) { response = new EventStreamCreateResponse { Error = new ResponseError { Message = ex.Message, StackTrace = ex.StackTrace } }; } return(await Task.FromResult(response)); }
public virtual async Task<EventStreamCreateResponse> GetEventStream() { var request = new EventStreamCreateRequest() { StreamId = Guid.NewGuid() }; var response = await this._service.CreateEventStreamAsync(request); return response; }