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

			var executor = new SqlProcedureExecutor(Settings.Default.MainConnectionString);
			_userRepository = new UserRepository(new PasswordConverter(), executor);
			_clientRepository = new ClientRepository(executor);
		}
예제 #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 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);
		}
예제 #4
0
		private static void RunClientJob(string mainConnectionString, string filesConnectionString, int partitionId)
		{
			using(var connection = new SqlConnection(mainConnectionString))
			{
				var executor = new SqlProcedureExecutor(mainConnectionString);
				var serializer = new Serializer();
				var events = new EventRepository(executor);
				var clientRepository = new ClientRepository(executor);
				var adminRepository = new AdminRepository(connection);
				var converter = new PasswordConverter();
				var senders = new SenderRepository(converter, executor);
				var localizedDataHelper = new CommonLocalizedDataHelper(serializer, clientRepository, senders);
				var recipients = new EventEmailRecipient(executor);
				var managerRepository = new ManagerRepository(connection);
				var recipientsFacade = new ClientEventRecipientsFacade(
					adminRepository,
					managerRepository,
					clientRepository,
					recipients);

				var messageBuilder = GetCommonMessageBuilder(
					connection,
					mainConnectionString,
					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.ClientAdded, processors },
					}).Work();
			}
		}
예제 #5
0
		public void Test_AwbRepository_GetClientEmails()
		{
			var data1 = CreateApplicationData(TestConstants.TestClientId1);
			var data2 = CreateApplicationData(TestConstants.TestClientId2);

			var id = _awbs.Add(CreateAirWaybillData(), TestConstants.DefaultStateId, TestConstants.TestAdminUserId);

			var a1 = _applicationEditor.Add(data1);
			var a2 = _applicationEditor.Add(data2);

			_applicationEditor.SetAirWaybill(a1, id);
			_applicationEditor.SetAirWaybill(a2, id);

			var emails = _awbs.GetClientEmails(id).Select(x => x.Email).ToArray();

			var clientRepository = new ClientRepository(_executor);

			var client1 = clientRepository.Get(TestConstants.TestClientId1);
			var client2 = clientRepository.Get(TestConstants.TestClientId2);
			var clients = new[] { client1, client2 };

			emails.ShouldAllBeEquivalentTo(clients.Select(x => x.Emails).ToArray());
		}