예제 #1
0
        public void TestInitialize()
        {
            _context = new DbTestContext(Settings.Default.MainConnectionString);
            _fixture = new Fixture();

            _repository = new ClientBalanceRepository(new SqlProcedureExecutor(Settings.Default.MainConnectionString));
        }
예제 #2
0
        internal static IMessageBuilder GetApplicationMessageBuilder(
            IDbConnection connection,
            string mainConnectionString,
            string filesConnectionString)
        {
            var serializer        = new Serializer();
            var passwordConverter = new PasswordConverter();
            var mainExecutor      = new SqlProcedureExecutor(mainConnectionString);
            var filesExecutor     = new SqlProcedureExecutor(filesConnectionString);
            var states            = new StateRepository(mainExecutor);
            var applications      = new ApplicationRepository(connection);
            var awbs                    = new AwbRepository(connection);
            var applicationFiles        = new ApplicationFileRepository(filesExecutor);
            var clientRepository        = new ClientRepository(mainExecutor);
            var clientBalanceRepository = new ClientBalanceRepository(mainExecutor);
            var countries               = new CountryRepository(mainExecutor);
            var cities                  = new CityRepository(mainExecutor);
            var textBulder              = new Application.Helpers.TextBuilder(
                serializer,
                awbs,
                countries,
                cities,
                states,
                applicationFiles,
                clientBalanceRepository,
                new TextBuilder());
            var templates        = new TemplateRepository(mainExecutor);
            var recipientsFacade = new ApplicationEventRecipientsFacade(
                awbs,
                applications,
                new AdminRepository(connection),
                new ManagerRepository(connection),
                new SenderRepository(passwordConverter, mainExecutor),
                clientRepository,
                new CarrierRepository(passwordConverter, mainExecutor),
                new ForwarderRepository(passwordConverter, mainExecutor),
                new BrokerRepository(connection),
                new EventEmailRecipient(mainExecutor));
            var templateRepositoryHelper = new TemplateRepositoryHelper(templates);

            var filesFacade = GetFilesFacade(connection, mainConnectionString, filesConnectionString);

            return(new ApplicationMessageBuilder(
                       EmailsHelper.DefaultFrom,
                       filesFacade,
                       textBulder,
                       recipientsFacade,
                       templateRepositoryHelper,
                       serializer,
                       applications));
        }
예제 #3
0
        private static void RunBalaceJob(string connectionString, string filesConnectionString, int partitionId)
        {
            using (var connection = new SqlConnection(connectionString))
            {
                var executor   = new SqlProcedureExecutor(connectionString);
                var serializer = new Serializer();
                var events     = new EventRepository(executor);
                var clientBalanceRepository = new ClientBalanceRepository(executor);
                var clientRepository        = new ClientRepository(executor);
                var adminRepository         = new AdminRepository(connection);
                var eventEmailRecipient     = new EventEmailRecipient(executor);
                var converter           = new PasswordConverter();
                var senders             = new SenderRepository(converter, executor);
                var localizedDataHelper = new BalanceLocalizedDataHelper(
                    clientBalanceRepository,
                    serializer,
                    clientRepository,
                    senders);
                var managerRepository = new ManagerRepository(connection);
                var recipientsFacade  = new ClientEventRecipientsFacade(
                    adminRepository,
                    managerRepository,
                    clientRepository,
                    eventEmailRecipient);

                var messageBuilder = GetCommonMessageBuilder(
                    connection,
                    connectionString,
                    filesConnectionString,
                    localizedDataHelper,
                    recipientsFacade);
                var emailingProcessor = GetDefaultEmailingProcessor(partitionId, executor, messageBuilder);

                var processors = new Dictionary <EventState, IEventProcessor>
                {
                    { EventState.Emailing, emailingProcessor }
                };

                new SequentialEventJob(
                    events,
                    partitionId,
                    new Dictionary <EventType, IDictionary <EventState, IEventProcessor> >
                {
                    { EventType.BalanceDecreased, processors },
                    { EventType.BalanceIncreased, processors }
                }).Work();
            }
        }
예제 #4
0
        private static CommonFilesFacade GetFilesFacade(
            IDbConnection connection,
            string connectionString,
            string filesConnectionString)
        {
            var mainExecutor            = new SqlProcedureExecutor(connectionString);
            var filesExecutor           = new SqlProcedureExecutor(filesConnectionString);
            var applicationFiles        = new ApplicationFileRepository(filesExecutor);
            var clientRepository        = new ClientRepository(mainExecutor);
            var calculationRepository   = new CalculationRepository(mainExecutor);
            var clientBalanceRepository = new ClientBalanceRepository(mainExecutor);
            var applications            = new ApplicationRepository(connection);
            var excelClientCalculation  = new ExcelClientCalculation(
                calculationRepository,
                clientBalanceRepository,
                clientRepository);
            var awbFiles          = new AwbFileRepository(filesExecutor);
            var clientExcelHelper = new ClientExcelHelper(clientRepository, excelClientCalculation);
            var serializer        = new Serializer();

            return(new CommonFilesFacade(awbFiles, clientExcelHelper, serializer, applicationFiles, applications));
        }