public void TestInitialize()
		{
			_context = new DbTestContext(Settings.Default.MainConnectionString);
			_fixture = new Fixture();

			_repository = new ClientBalanceRepository(new SqlProcedureExecutor(Settings.Default.MainConnectionString));
		}
示例#2
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();
			}
		}
示例#3
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);
		}
示例#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);
		}