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 async Task <EmployeeInfoCreateResponse> CreateEmployeeInfoAsync(EmployeeInfoCreateRequest request) { await this._builder.BuildAsync(request); var handler = this._handlers.SingleOrDefault(p => p.CanHandle(request)); if (handler == null) { return(await Task.FromResult(default(EmployeeInfoCreateResponse))); } var ev = handler.CreateEvent(request) as EmployeeInfoCreatedEvent; PopulateBaseProperties(ev); EmployeeInfoCreateResponse response; try { await this._processor.ProcessEventsAsync(new[] { ev }); // TODO: Mapper 고려 response = new EmployeeInfoCreateResponse() { Data = new EmployeeInfoCreateResponseData() { ExtEmpno = ev.ExtEmpno, FirstName = ev.FirstName, LastName = ev.LastName, Sex = ev.Sex, Active = ev.Active, Dept = ev.Dept, BirthDate = ev.BirthDate, BrthCountr = ev.BrthCountr, Email = ev.Email, HomeCountr = ev.HomeCountr, HomeStreet = ev.HomeStreet, HomeTel = ev.HomeTel, HomeZip = ev.HomeZip, MartStatus = ev.MartStatus, Mobile = ev.Mobile, Position = ev.Position, StartDate = ev.StartDate, Status = ev.Status, TermDate = ev.TermDate } }; } catch (Exception ex) { response = new EmployeeInfoCreateResponse() { Error = new ResponseError() { Message = ex.Message, StackTrace = ex.StackTrace } }; } return(await Task.FromResult(response)); }