Exemplo n.º 1
0
        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));
        }
Exemplo n.º 4
0
        /// <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;
 }