コード例 #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));
        }
コード例 #2
0
        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));
        }