Пример #1
0
        public async Task <Unit> Handle(AppParameterCreateBundleCommand request, CancellationToken cancellationToken)
        {
            //await SendEmailExample();

            ThrowIfMessageNotValid(request);

            try
            {
                AppParameter appParameter1 = new AppParameter("App Parameter 1", "1", "App Parameter Description 1", _user.Name);
                AppParameter appParameter2 = new AppParameter("App Parameter 2", "2", "App Parameter Description 2", _user.Name);
                AppParameter appParameter3 = new AppParameter("App Parameter 3", "3", "App Parameter Description 3", _user.Name);
                AppParameter appParameter4 = new AppParameter("App Parameter 4", "4", "App Parameter Description 4", _user.Name);
                AppParameter appParameter5 = new AppParameter("App Parameter 5", "5", "App Parameter Description 5", _user.Name);

                await StartTransactionAsync();

                await _appParameterRepository.AddAsync(appParameter1);
                await CommitAsync();

                await _appParameterRepository.AddAsync(appParameter2);
                await CommitAsync();

                await _appParameterRepository.AddAsync(appParameter3);
                await CommitAsync();

                await _appParameterRepository.AddAsync(appParameter4);
                await CommitAsync();

                await _appParameterRepository.AddAsync(appParameter5);
                await CommitAsync();

                if (request.ThrowException)
                {
                    throw new Exception("this exception is throw for demonstration");
                }

                await CommitTransactionAsync();

                await _bus.Publish(new AppParameterCreatedEvent(appParameter1, _user));

                await _bus.Publish(new AppParameterCreatedEvent(appParameter2, _user));

                await _bus.Publish(new AppParameterCreatedEvent(appParameter3, _user));

                await _bus.Publish(new AppParameterCreatedEvent(appParameter4, _user));

                await _bus.Publish(new AppParameterCreatedEvent(appParameter5, _user));

                return(Unit.Value);
            }
            catch (Exception)
            {
                await RollbackTransactionAsync();

                throw;
            }
        }
 public async Task CreateBundleAsync(bool throwException)
 {
     AppParameterCreateBundleCommand createBundleCommand = new AppParameterCreateBundleCommand(throwException);
     await _bus.Send(createBundleCommand);
 }