public Task <IbisFileGeneratorResult <CustomerFile> > CreateAsync(ulong fileID, InvoiceRun invoiceRun) { CustomerFile customerFile = new CustomerFile("WEE", fileID); var errors = new List <Exception>(); IEnumerable <Scheme> schemes = invoiceRun.MemberUploads .Select(mu => mu.Scheme) .Distinct(); foreach (Scheme scheme in schemes) { try { var postCode = GetIbisPostCode(scheme.Address); Address address = new Address( scheme.Contact.FullName, scheme.Address.Address1, scheme.Address.Address2, null, scheme.Address.TownOrCity, scheme.Address.CountyOrRegion, postCode); Customer customer = new Customer( scheme.IbisCustomerReference, scheme.Organisation.OrganisationName, address); customerFile.AddCustomer(customer); } catch (Exception ex) { errors.Add(new SchemeFieldException(scheme, ex)); } } var ibisFileGeneratorResult = new IbisFileGeneratorResult <CustomerFile>(errors.Count == 0 ? customerFile : null, errors); return(Task.FromResult(ibisFileGeneratorResult)); }
public Task<IbisFileGeneratorResult<CustomerFile>> CreateAsync(ulong fileID, InvoiceRun invoiceRun) { CustomerFile customerFile = new CustomerFile("WEE", fileID); var errors = new List<Exception>(); IEnumerable<Scheme> schemes = invoiceRun.MemberUploads .Select(mu => mu.Scheme) .Distinct(); foreach (Scheme scheme in schemes) { try { var postCode = GetIbisPostCode(scheme.Organisation.OrganisationAddress); Address address = new Address( scheme.Organisation.Contact.FullName, scheme.Organisation.OrganisationAddress.Address1, scheme.Organisation.OrganisationAddress.Address2, null, scheme.Organisation.OrganisationAddress.TownOrCity, scheme.Organisation.OrganisationAddress.CountyOrRegion, postCode); Customer customer = new Customer( scheme.IbisCustomerReference, scheme.Organisation.OrganisationName, address); customerFile.AddCustomer(customer); } catch (Exception ex) { errors.Add(new SchemeFieldException(scheme, ex)); } } var ibisFileGeneratorResult = new IbisFileGeneratorResult<CustomerFile>(errors.Count == 0 ? customerFile : null, errors); return Task.FromResult(ibisFileGeneratorResult); }
public void Write_WithOneCustomer_GeneratesCorrectOutput() { // Arrange Address address = new Address("1 High Street", "Flat 123", "Business Park", "Newtown", "Nr Oldtown", "Testshire", "AA1 1AA"); Customer customer = new Customer("WEE0001", "Test customer", address); CustomerFile file = new CustomerFile("WEE", 0); file.AddCustomer(customer); // Act string result = file.Write(); // Assert string expectedDate = DateTime.UtcNow.Date.ToString("dd-MMM-yyyy").ToUpperInvariant(); string expectedOutput = "\"H\",\"0000000\",\"WEE\",\"H\",\"C\",\"00000\",\"" + expectedDate + "\"" + Environment.NewLine + "\"D\",\"0000001\",\"WEE0001\",\"Test customer\",\"1 High Street\",\"Flat 123\",\"Business Park\",\"Newtown\",\"Nr Oldtown\",\"Testshire\",\"AA1 1AA\"" + Environment.NewLine + "\"T\",\"0000002\",\"0000003\"" + Environment.NewLine; Assert.Equal(expectedOutput, result); }