public string ExecuteAsync(IRead fileReader, Document document) { Debug.Assert(document != null); Debug.Assert(document.Statement != null); var logo64Base = fileReader.GetImagebase64(document.Logo); var quoteTemplate = fileReader.Read(TEMPLATE); var serviceTemplate = fileReader.Read(SERVICE_TEMPLATE); var materialsTemplate = fileReader.Read(MATERIAL_TEMPLATE); var updatedTemplate1 = ApplyHeaderAsync(quoteTemplate, document.Statement, document.Customer, logo64Base); var updatedTemplate2 = ApplySummaryAsync(updatedTemplate1, document.Statement); var statement = document.Statement; var servicesHtml = ApplyServices(statement.Services, serviceTemplate); var html = updatedTemplate2; var htmlWithServices = html.Replace(serviceTemplate, servicesHtml); var materialsBuilder = new StringBuilder(); var services = statement.Services; string htmlWithMaterial = null; bool hasMaterials = false; foreach (var service in services) { string materialsHtml = string.Empty; if (service.Materials == null) { service.Materials = new ObservableCollection <Material>(); } if (service.Materials.Count > 0) { hasMaterials = true; string materialsTable = ApplyMaterials(service, materialsTemplate); materialsBuilder.Append(materialsTable); materialsHtml = materialsBuilder.ToString(); htmlWithMaterial = htmlWithServices.Replace(materialsTemplate, materialsHtml).Replace("~SERVICE_NAME~", string.Empty); } } if (hasMaterials) { var destinationFile = string.Format("{0}{1}", Guid.NewGuid(), HtmlFile); return(fileReader.CreateFile(htmlWithMaterial, destinationFile)); } else { var data = fileReader.Read(SERVICE_MATERIAL_TEMPLATE); bool exists = htmlWithServices.Contains(data); string noMaterialsHtml = htmlWithServices.Replace(data, string.Empty); var destinationFile = string.Format("{0}{1}", Guid.NewGuid(), HtmlFile); return(fileReader.CreateFile(noMaterialsHtml, destinationFile)); } }
public string ExecuteAsync(IRead fileReader, Document document) { Debug.Assert(document != null); Debug.Assert(document.Statement != null); var logo64Base = fileReader.GetImagebase64(document.Logo); var quoteTemplate = fileReader.Read(TEMPLATE); var serviceTemplate = fileReader.Read(SERVICE_TEMPLATE); var materialsTemplate = fileReader.Read(MATERIAL_TEMPLATE); var updatedTemplate1 = ApplyHeaderAsync(quoteTemplate, document.Statement, document.Customer, logo64Base); var updatedTemplate2 = ApplySummaryAsync(updatedTemplate1, document.Statement); var statement = document.Statement; var servicesHtml = ApplyServices(statement.Services, serviceTemplate); var html = updatedTemplate2; var htmlWithServices = html.Replace(serviceTemplate, servicesHtml); var materialsBuilder = new StringBuilder(); var services = statement.Services; string htmlWithMaterial = null; bool hasMaterials = false; foreach (var service in services) { string materialsHtml = string.Empty; if (service.Materials == null) { service.Materials = new ObservableCollection<Material>(); } if (service.Materials.Count > 0) { hasMaterials = true; string materialsTable = ApplyMaterials(service, materialsTemplate); materialsBuilder.Append(materialsTable); materialsHtml = materialsBuilder.ToString(); htmlWithMaterial = htmlWithServices.Replace(materialsTemplate, materialsHtml).Replace("~SERVICE_NAME~", string.Empty); } } if (hasMaterials) { var destinationFile = string.Format("{0}{1}", Guid.NewGuid(), HtmlFile); return fileReader.CreateFile(htmlWithMaterial, destinationFile); } else { var data = fileReader.Read(SERVICE_MATERIAL_TEMPLATE); bool exists = htmlWithServices.Contains(data); string noMaterialsHtml = htmlWithServices.Replace(data, string.Empty); var destinationFile = string.Format("{0}{1}", Guid.NewGuid(), HtmlFile); return fileReader.CreateFile(noMaterialsHtml, destinationFile); } }