Example #1
0
 public string GetImagebase64(string file) => _reader.GetImagebase64(file);
Example #2
0
        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);
            }
        }