Пример #1
0
        public static MediatorBuilder AddLatransMedaitor(
            this IServiceCollection services,
            Action <IMediatorBuilder>?configure = null
            )
        {
            var builder = new MediatorBuilder();

            services.AddOptions <ActivityExecutionConfigurationOptions>();
            services.AddTransient <ActivityExecutionConfigurationDefaults>();
            services.AddScoped <ILocalDisposables, LocalDisposables>();
            services.AddScoped <IMediatorClientFactory, MediatorClientFactory>();
            services.AddTransient <IMediatorClient, MediatorClient>();
            services.AddSingleton <IMediatorService>((serviceProvider) => {
                IMediatorService result;
                lock (serviceProvider) {
                    builder.Build();
                    var options = builder.GetOptions();
                    result      = new MediatorService(options);
                }
                return(result);
            });
            if (configure is object)
            {
                configure(builder);
            }
            return(builder);
        }
Пример #2
0
        private async Task <SelectList> GetTransactionTypes()
        {
            var response = await MediatorService
                           .Send(new RetrieveTransactionTypesRequest());

            return(new SelectList(response.Result, nameof(TransactionType.Id), nameof(TransactionType.Name)));
        }
Пример #3
0
        public async Task <ActionResult> RegisterAccount([FromForm] RegisterAccountViewModel model)
        {
            var token = GetPayLoad("payload");

            var accountRegistrationClaim = GetClaim <RequestTokenClaim>(token);

            var validateClaimResponse = await MediatorService.Send(new ValidateTokenRequest {
                Token = accountRegistrationClaim.Token
            });

            if (!validateClaimResponse.IsSuccessful)
            {
                return(ResponseResult(validateClaimResponse));
            }

            model.Password = Convert.ToBase64String(
                model.Password.GetBytes(Encoding.UTF8).ToArray());

            var mappedAccount = Map <RegisterAccountViewModel, Account>(model);

            var response = await MediatorService
                           .Send(new RegisterAccountRequest { Account = mappedAccount });

            return(ResponseResult(response));
        }
Пример #4
0
        public static void Main(string[] args)
        {
            var config          = new Config(ConfigPath);
            var mediatorService = new MediatorService(config);

            Console.ReadLine();
        }
Пример #5
0
        public async Task <IActionResult> ChangeProductPrice(string productId, string price)
        {
            var command = new ChangeProductPriceCommand {
                Id = productId, Amount = double.Parse(price)
            };

            return(await GenerateResponseAsync(async() => await MediatorService.Send(command)));
        }
        public async Task <ActionResult> GetBudgetPlanners([Bind(Prefix = "payload")] string token)
        {
            var claimObject = GetClaim(token);

            var request = new RetrieveBudgetPlannersRequest {
                AccountId = claimObject.AccountId
            };

            var response = await MediatorService.Send(request);

            return(Ok(response));
        }
Пример #7
0
 /// <summary>
 /// Consumes the message from  subscription asynchronous.
 /// </summary>
 /// <param name="message">The message to be consumed.</param>
 /// <param name="headers">The custom headers of message.</param>
 /// <param name="cancellationToken">The cancellation token.</param>
 /// <returns></returns>
 public override async Task <bool> ConsumeAsync(ProductCommentAddedMessage message, IDictionary <string, object> headers, CancellationToken cancellationToken)
 {
     try
     {
         var command = MapperService.Map <AddCommentCommand>(message);
         return(await MediatorService.Send(command, cancellationToken));
     }
     catch (Exception)
     {
         return(false);
     }
 }
Пример #8
0
        public async Task <ActionResult> Register([FromForm] RegisterViewModel model)
        {
            var request = Map <RegisterViewModel, RegisterUserRequest>(model);

            var response = await MediatorService.Send(request);

            if (MediatorResponse.IsSuccessful(response))
            {
                return(Ok(response.Result));
            }

            return(BadRequest(response.Errors));
        }
        public async Task <ActionResult> Create(CreateApplicationInstanceViewModel model)
        {
            var request = Map <CreateApplicationInstanceViewModel,
                               RegisterApplicationInstanceRequest>(model);

            var response = await MediatorService.Send(request);

            if (MediatorResponse.IsSuccessful(response))
            {
                return(Ok(response.Result));
            }

            return(BadRequest(response.Errors));
        }
        public async Task <IViewComponentResult> InvokeAsync(BudgetStatisticRequestViewModel model)
        {
            var response = await MediatorService.Send(Map <BudgetStatisticRequestViewModel, BudgetPlannerStatsRequest>(model));

            if (!Response.IsSuccessful(response))
            {
                throw new InvalidOperationException();
            }

            var budgetPlannerStatsViewModel = new BudgetPlannerStatsViewModel {
                Statistics = response.Result
            };

            return(await ViewWithContent(ContentConstants.BudgetStatisticsPanel, budgetPlannerStatsViewModel));
        }
        public async Task <ActionResult> CreateBudgetPlanner([Bind(Prefix = "payload")] string token, [FromForm] CreateBudgetPlannerViewModel model)
        {
            var budgetPlannerClaim = GetClaim <BudgetPlannerClaim>(token);

            if (model.AccountId != budgetPlannerClaim.AccountId)
            {
                throw new UnauthorizedAccessException();
            }

            var request = Map <CreateBudgetPlannerViewModel, CreateBudgetPlannerRequest>(model);

            var response = await MediatorService.Send(request);

            return(ResponseResult(response));
        }
        public async Task <ActionResult> GetBudgetPlanner([Bind(Prefix = "payload")] string token)
        {
            var budgetPlannerClaim = GetClaim <BudgetPlannerClaim>(token);

            var request = new RetrieveBudgetPlannerRequest
            {
                AccountId       = budgetPlannerClaim.AccountId,
                BudgetPlannerId = budgetPlannerClaim.BudgetPlannerId,
                Reference       = budgetPlannerClaim.Reference
            };

            var response = await MediatorService.Send(request);

            return(ResponseResult(response));
        }
Пример #13
0
        public async Task <ActionResult> GetTransactions([Bind(Prefix = "payload")] string token)
        {
            var transactionClaim = GetClaim <TransactionClaim>(token);

            var response = await MediatorService
                           .Send(
                new RetrieveTransactionsRequest
            {
                PageSize   = transactionClaim.PageSize,
                PageNumber = transactionClaim.PageNumber,
                Reference  = transactionClaim.Reference,
                FromDate   = transactionClaim.FromDate,
                ToDate     = transactionClaim.ToDate
            });

            return(ResponseResult(response));
        }
Пример #14
0
        public async Task <ActionResult> Details([FromRoute] string reference, [FromQuery] int pageSize = 8, [FromQuery] int pageNumber = 1)
        {
            var response = await MediatorService
                           .Send(new RetrieveBudgetPlannerRequest {
                AccountId = (await CurrentAccount).Id,
                Reference = reference
            });

            if (!response.IsSuccessful)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var budgetStatsResponse = await MediatorService.Send(new BudgetPlannerStatsRequest
            {
                BudgetId = response.Result.Id,
                FromDate = DateTime.Now.AddDays(-7),
                ToDate   = DateTime.Now
            });

            if (!budgetStatsResponse.IsSuccessful)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var budgetPlannerDetailsViewModel = Map <Budget, BudgetPlannerDetailsViewModel>(response.Result);

            budgetPlannerDetailsViewModel.PageSize   = pageSize;
            budgetPlannerDetailsViewModel.PageNumber = pageNumber;
            budgetPlannerDetailsViewModel.FromDate   = DateTime.Now.AddDays(-30);
            budgetPlannerDetailsViewModel.ToDate     = DateTime.Now;
            budgetPlannerDetailsViewModel.Balance    = response.Amount;
            budgetPlannerDetailsViewModel.BudgetStatisticsRequest = new BudgetStatisticRequestViewModel
            {
                AccountId = (await CurrentAccount).Id,
                FromDate  = DateTime.Now.AddDays(-5),
                ToDate    = DateTime.Now,
                BudgetId  = response.Result.Id
            };

            return(await ViewWithContent(ContentConstants.DetailsContentPath, budgetPlannerDetailsViewModel,
                                         DictionaryBuilder.Create <string, string>(dictionaryBuilder => dictionaryBuilder
                                                                                   .Add("startDate", budgetPlannerDetailsViewModel.FromDate.ToString(FormatConstants.LongDateFormat))
                                                                                   .Add("endDate", budgetPlannerDetailsViewModel.ToDate.ToString(FormatConstants.LongDateFormat)))
                                         .ToDictionary()));
        }
Пример #15
0
        public async Task <ActionResult> SaveTransaction([FromHeader, Bind(Prefix = "payload")] string token,
                                                         AddBudgetTransactionViewModel model)
        {
            var transactionClaim = GetClaim <TransactionClaim>(token);

            if (model.BudgetId != transactionClaim.BudgetPlannerId)
            {
                throw new UnauthorizedAccessException();
            }

            var request = Map <AddBudgetTransactionViewModel, CreateTransactionRequest>(model);

            request.AccountId = transactionClaim.AccountId;

            var response = await MediatorService.Send(request);

            return(ResponseResult(response));
        }
Пример #16
0
        private async Task <IViewComponentResult> List(BudgetPanelDashboardListViewModel model)
        {
            var budgetPanelDashboardViewModel = new BudgetPanelDashboardViewModel();

            var retrieveBudgetPlannersRequest = Map <BudgetPanelDashboardListViewModel, RetrieveBudgetPlannersRequest>(model);

            var response = await MediatorService
                           .Send(retrieveBudgetPlannersRequest);

            budgetPanelDashboardViewModel.BudgetPlanners = Map <Domains.Dto.Budget, BudgetPanelDashboardItemViewModel>(response.Result);

            return(await ViewWithContent(
                       (response.Result.Any())
                       ?ContentConstants.Dashboard
                       : ContentConstants.EmptyDashboard, "List", budgetPanelDashboardViewModel, DictionaryBuilder
                       .Create <string, string>(dictionaryBuilder => dictionaryBuilder.Add("date", model.LastUpdated.ToString(FormatConstants.LongDateFormat)))
                       .ToDictionary()));
        }
Пример #17
0
        public async Task <ActionResult> CreateTransaction([FromRoute] string reference, [FromQuery] bool isModal = false)
        {
            var budgetResponse = await MediatorService
                                 .Send(new RetrieveBudgetPlannerRequest {
                AccountId = (await CurrentAccount).Id,
                Reference = reference
            });

            if (!DomainResponse.IsSuccessful(budgetResponse))
            {
                return(RedirectToAction("Index", "Home"));
            }

            return(await ViewWithContent(ContentConstants.TransactionEditorPath, new AddBudgetTransactionViewModel {
                IsModal = isModal,
                BudgetId = budgetResponse.Result.Id,
                Active = true,
                TransactionTypes = await GetTransactionTypes()
            }));
        }
Пример #18
0
        private async Task AuditAccountAccess(Account account, Microsoft.AspNetCore.Identity.SignInResult identityResult, CancellationToken cancellationToken)
        {
            if (account == null)
            {
                return;
            }

            var loginAccessType = await BudgetPlannerCacheProvider.GetAccessType(DataConstants.LoginAccess, cancellationToken);

            await MediatorService.Send(new CreateAccountAccessRequest
            {
                AccountAccessModel = new Domains.Data.AccountAccess
                {
                    Succeeded    = identityResult.Succeeded,
                    AccountId    = account.Id,
                    Active       = true,
                    AccessTypeId = loginAccessType.Id
                }
            });
        }
Пример #19
0
        public async Task <IViewComponentResult> InvokeAsync(TransactionListRequestViewModel model)
        {
            var response = await MediatorService
                           .Send(
                new RetrieveTransactionsRequest {
                PageSize   = model.PageSize,
                PageNumber = model.PageNumber,
                Reference  = model.Reference,
                FromDate   = model.FromDate,
                ToDate     = model.ToDate
            });

            var viewModel = Map <RetrieveTransactionsResponse, TransactionListViewModel>(response);

            viewModel.SelectPageUrl   = model.SelectPageUrl;
            viewModel.PreviousPageUrl = model.PreviousPageUrl;
            viewModel.NextPageUrl     = model.NextPageUrl;

            return(await ViewWithContent(ContentConstants.TransactionListContentPath, viewModel));
        }
Пример #20
0
        public async Task <ActionResult> SaveTransaction(AddBudgetTransactionViewModel model)
        {
            model.TransactionTypes = await GetTransactionTypes();

            if (!ModelState.IsValid)
            {
                return(View("CreateTransaction", model));
            }

            var createTransactionRequest = Map <AddBudgetTransactionViewModel, CreateTransactionRequest>(model);

            createTransactionRequest.AccountId = (await CurrentAccount).Id;
            var response = await MediatorService.Send(createTransactionRequest);

            if (response.IsSuccessful)
            {
                return(RedirectToAction("Details", "Budget", new { reference = response.Reference }));
            }

            return(await ViewWithContent(ContentConstants.TransactionEditorPath, model));
        }
Пример #21
0
        public async Task <string> CalculateNewBalance(int budgetId, int transactionTypeId, decimal amount)
        {
            var response = await MediatorService.Send(new RetrieveBudgetPlannerRequest
            {
                BudgetPlannerId = budgetId,
                AccountId       = (await CurrentAccount).Id
            });

            var newBalance = response.Amount - amount;

            if (transactionTypeId == 1)
            {
                newBalance = response.Amount + amount;
            }

            return(await GetContent(ContentConstants.TransactionEditorPath,
                                    ContentConstants.EstimatedCostCalculatorLabel,
                                    DictionaryBuilder.Create <string, string>(builder => builder
                                                                              .Add("newBalance", newBalance.ToString(FormatConstants.CurrencyFormat)))
                                    .ToDictionary()));
        }
Пример #22
0
        public async Task <ActionResult> EditTransaction([FromRoute] int id, [FromQuery] bool isModal = false)
        {
            var response = await MediatorService
                           .Send(new RetrieveTransactionRequest {
                AccountId     = (await CurrentAccount).Id,
                TransactionId = id
            });

            if (!response.IsSuccessful || response.Result == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var viewModel = Map <Transaction, AddBudgetTransactionViewModel>(response.Result);

            viewModel.TransactionTypes = await GetTransactionTypes();

            viewModel.IsModal = isModal;

            return(await ViewWithContent(ContentConstants.TransactionEditorPath, viewModel));
        }
Пример #23
0
        public async Task <ActionResult> AuthenticateAccount([FromForm] LoginViewModel model)
        {
            var token = GetPayLoad("payload");

            var accountRegistrationClaim = GetClaim <RequestTokenClaim>(token?.ToString());

            var validateClaimResponse = await MediatorService.Send(new ValidateTokenRequest {
                Token = accountRegistrationClaim.Token
            });

            if (!validateClaimResponse.IsSuccessful)
            {
                return(ResponseResult(validateClaimResponse));
            }

            var response = await MediatorService
                           .Send(new LoginRequest {
                EmailAddress = model.EmailAddress,
                Password     = model.Password
            });

            return(ResponseResult(response));
        }
Пример #24
0
        public async Task <ActionResult> Save([FromForm] CreateBudgetPlannerViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(await ViewWithContent(ContentConstants.BudgetPlannerEditorPath,
                                             model));
            }

            model.AccountId = (await CurrentAccount).Id;

            var createBudgetPlannerRequest = Map <CreateBudgetPlannerViewModel, CreateBudgetPlannerRequest>(model);

            var saveResponse = await MediatorService
                               .Send(createBudgetPlannerRequest);

            if (saveResponse.IsSuccessful)
            {
                return(RedirectToAction("Details", "Budget", new { reference = model.Reference }));
            }

            AddErrorsToModelState(saveResponse);

            return(await ViewWithContent(ContentConstants.BudgetPlannerEditorPath, model));
        }
Пример #25
0
        static void Main(string[] args)
        {
            #region FactoryMethod

            IMap worldMap   = new PrefabricatedMapFactory().Generate(TerrainType.Arid);
            var  whereAreWe = worldMap.WhichImplementationAreWeIn();

            worldMap   = new RandomizedMapFactory().Generate(TerrainType.Oasis);
            whereAreWe = worldMap.WhichImplementationAreWeIn();

            #endregion

            #region Builder (optionals in parameters - not in method invocation, chained interfaces)

            TheQuote quote = new JanushKorwinMikkeQuoteBuilder()
                             .WithBehaviour(new WoeToTheUnionDeliveryMethod())
                             .WithOpeningStatement()
                             .WithAccusedGroup()
                             .WithAccusationSegue()
                             .WithAccusation()
                             .WithCriminalintentExplanation()
                             .WithClosingStatement()
                             .Get();

            // should be a person delivering it, that's why this call is odd ;(
            var quoteString = quote.speechPattern.Deliver(quote.FullQuote);

            #endregion

            #region Abstract Factory

            var gameEngine = new ClientGameEngine(new WpfGuiFactory());

            #endregion


            #region ServiceLocator

            var serviceLocator = new ServiceLocator.ServiceLocator();
            serviceLocator.RegisterService <IGuiFactory, WpfGuiFactory>();

            var retrievedService = serviceLocator.GetService <IGuiFactory>();
            var gameEngineFromSL = new ClientGameEngine(retrievedService);

            #endregion

            #region LazyInitialization

            var lazyInitializedVariable = new LazyInit <JanushKorwinMikkeQuoteBuilder>();
            var retrievedInstance       = lazyInitializedVariable.Value;
            retrievedInstance.WithAccusation("durr");
            #endregion

            #region Multiton

            var singletons = new List <MultitonClass>
            {
                MultitonClass.GetInstance(1),
                MultitonClass.GetInstance(9)
            };

            foreach (var instance in singletons)
            {
                Console.WriteLine($"I is {instance.Identifier}");
            }

            var turningItUpTo9000 = MultitonClass.GetInstance(9000);
            #endregion

            #region Disposable

            using (var disposableLib = new SomeNativeLibraryWrapper("some.dll"))
            {
                var retVal = disposableLib.SomeImpoertedMethod();
            }

            #endregion

            #region ObjectPool

            var objectPool = new ObjectPool <PoolableExpensiveObject>(40);
            objectPool.Initialize();
            var borrowedObject1 = objectPool.BorrowObject();
            var borrowedObject2 = objectPool.BorrowObject();
            var borrowedObject3 = objectPool.BorrowObject();

            objectPool.ReturnObject(borrowedObject2);


            #endregion

            #region Chain of Responsibility

            var normalAccessHandler         = new NormalPrivilegesAccessHandler();
            var uberPrivilegesAccessHandler = new UberPrivilegesAccessHandler(new RaisePrivilegesService());

            normalAccessHandler.SetSuccessor(uberPrivilegesAccessHandler);

            var accessRequest = new AccessRequest(AccessLevel.Elevated);

            normalAccessHandler.HandleRequest(accessRequest);

            #endregion

            #region Observer

            var stockValueNotifier = new StockValueNotifier(sessionOpeningPrice: 100);

            var broker1 = new StockBroker("Johnny Utah");
            var broker2 = new StockBroker("Shmitzi Kibbutz");

            stockValueNotifier.Subscribe(broker1);
            stockValueNotifier.Subscribe(broker2);

            stockValueNotifier.Prop = 1_000_000;


            #endregion

            #region MediatorService

            var mediatorService = new MediatorService();
            //Mediator.ISubscriber sub1 = new Mediator.Subscriber(Mediator.Type.Transponder);
            //Mediator.ISubscriber sub2 = new Mediator.Subscriber(Mediator.Type.Receiver);

            //mediatorService.Register(sub1);
            //mediatorService.Register(sub2);


            #endregion

            #region NullObject

            var coolingModule = MissingModule.Instance;
            var killSwitch    = new FactoryKillSwitch();
            var modulesChain  = new List <IModule>
            {
                new Module("Assembly Module"),
                new Module("Welding Module"),
                MissingModule.Instance,
                new Module("Cooling Module"),
            };



            killSwitch.AddModulesChain(modulesChain);

            killSwitch.Engage();


            #endregion

            #region Registry

            SomeRegistry.Register <FunctionalityClass>("ll");
            SomeRegistry.Register("jeł", new FunctionalityClass());

            var ll = SomeRegistry.GetInstanceOf("ll");
            ll.DoStuff();

            SomeRegistry.GetInstanceOf("jeł").DoStuff();

            #endregion

            #region Strategy

            var shootingActor = new Actor(new ShootAtStrategy());
            shootingActor.CurrentTarget = new Target(x: 1, y: 2);

            shootingActor.PerformAssignedBehaviour();

            shootingActor.Behaviour = new FollowStrategy();

            shootingActor.PerformAssignedBehaviour();
            #endregion

            #region Visitor

            var rootNode = new Node(null);
            rootNode.GenerateChildren();
            foreach (var node in rootNode.Children)
            {
                node.GenerateChildren();
            }


            var visitorInstance = new NestingLevelVisitor();
            rootNode.Accept(visitorInstance);

            var i = 0;
            i++;

            #endregion
        }
Пример #26
0
 public AuthController(AuthService auth, IConfiguration config, MediatorService mediator)
 {
     this.auth     = auth;
     this.config   = config;
     this.mediator = mediator;
 }
Пример #27
0
 public MediatorServiceControl(MediatorService mediatorService)
 {
     this._MediatorService = mediatorService;
 }
Пример #28
0
 public async Task <IActionResult> AddProductsAsync(AddProductCommand request)
 {
     return(await GenerateResponseAsync(async() => await MediatorService.Send(request), HttpStatusCode.Created));
 }
Пример #29
0
 //[SwaggerDeviceHeader]
 public async Task <IActionResult> GetProductsAsync(int productId)
 {
     return(await GenerateResponseAsync(async() => await MediatorService.Send(new GetProductsByIdQuery {
         ProductId = productId
     })));
 }
Пример #30
0
 public async Task <IActionResult> GetProducts()
 {
     return(await GenerateResponseAsync(async() => await MediatorService.Send(new GetProductsQuery())));
 }