public override void Init()
        {
            if (string.IsNullOrWhiteSpace(Context))
            {
                throw new ArgumentNullException("Context");
            }

            if (string.IsNullOrWhiteSpace(TemplateName))
            {
                throw new ArgumentNullException("TemplateName");
            }

            if (!CacheManager.Instance.Table.ContainsKey(TemplateName))
            {
                try
                {
                    m_Generator = new RazorTemplateGenerator();
                    m_Generator.RegisterTemplate <IDataProvider>(Context);
                    m_Generator.CompileTemplates();

                    CacheManager.Instance.Table[TemplateName] = m_Generator;
                }
                catch (TemplateCompileException ex)
                {
                    throw new Exception(ex.ToString());
                }
            }
            else
            {
                m_Generator = (RazorTemplateGenerator)CacheManager.Instance.Table[TemplateName];
            }
        }
        public void Will_throw_NullArgumentException_if_attempt_to_register_template_with_null_name()
        {
            var testable = new RazorTemplateGenerator();

            var ex = Record.Exception(() => testable.RegisterTemplate <TestModel1>(null, "this is a test for @Model.Param1"));

            Assert.True(ex is ArgumentNullException);
            Assert.Equal("templateName", (ex as ArgumentNullException).ParamName);
        }
Example #3
0
        public void Will_throw_NullArgumentException_if_attempt_to_register_template_with_null_templatestring()
        {
            var testable = new RazorTemplateGenerator();

            var ex = Record.Exception(() => testable.RegisterTemplate <test1>(null));

            Assert.IsTrue(ex is ArgumentNullException);
            Assert.AreEqual("templateString", (ex as ArgumentNullException).ParamName);
        }
Example #4
0
 public TemplateFactoryCache(CommonViewNamespaces commonViewNamespaces,
                             RazorEngineSettings razorEngineSettings, ITemplateCompiler templateCompiler, RazorTemplateGenerator templateGenerator)
 {
     _commonViewNamespaces = commonViewNamespaces;
     _razorEngineSettings  = razorEngineSettings;
     _templateCompiler     = templateCompiler;
     _templateGenerator    = templateGenerator;
     _cache             = new Dictionary <string, Type>();
     _lastModifiedCache = new Cache <string, long>(name => name.LastModified());
 }
Example #5
0
        public void Will_throw_InvalidOperationException_if_attempt_to_register_another_template_after_compiling()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <test1>("this is a test for @Model.Param1");
            testable.CompileTemplates();
            var ex = Record.Exception(() => testable.RegisterTemplate <test2>("this is another test for @Model.Param1"));

            Assert.IsTrue(ex is InvalidOperationException);
        }
Example #6
0
        public void TestMethod1()
        {
            var generator = new RazorTemplateGenerator();

            string str = File.ReadAllText("c:\\test.txt");

            generator.RegisterTemplate <Data>("__", str);

            generator.CompileTemplates();
        }
Example #7
0
        public void Will_throw_NullArgumentException_if_attempt_to_compile_template_with_null_name()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <test1>("this is a test for @Model.Param1");
            testable.CompileTemplates();
            var ex = Record.Exception(() => testable.GenerateOutput(new test1(), null));

            Assert.IsTrue(ex is ArgumentNullException);
            Assert.AreEqual("templateName", (ex as ArgumentNullException).ParamName);
        }
Example #8
0
        public void Will_throw_InvalidOperationException_if_attempt_to_generate_without_compiling()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <test1>("this is a test for @Model.Param1");
            var ex = Record.Exception(() => testable.GenerateOutput(new test1()
            {
                Param1 = "p1"
            }));

            Assert.IsTrue(ex is InvalidOperationException);
        }
Example #9
0
        public void Will_Compile_single_Template_String_registered()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <test1>("this is a test for @Model.Param1");
            testable.CompileTemplates();
            var result = testable.GenerateOutput(new test1()
            {
                Param1 = "p1"
            });

            Assert.AreEqual("this is a test for p1", result);
        }
Example #10
0
        public void Will_overwrite_existing_Template()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <test1>("this is a test for @Model.Param1");
            testable.RegisterTemplate <test1>("this is another test for @Model.Param1");
            testable.CompileTemplates();
            var result1 = testable.GenerateOutput(new test1()
            {
                Param1 = "p1"
            });

            Assert.AreEqual("this is another test for p1", result1);
        }
Example #11
0
        public void Test()
        {
            IRazorTemplateGenerator generator = new RazorTemplateGenerator();

            generator.RegisterTemplate <SampleModel>(SampleTemplateStrings.Sample1);
            generator.CompileTemplates();
            var output = generator.GenerateOutput(new SampleModel()
            {
                Prop1 = "p1", Prop2 = "p2", Prop3 = new List <string> {
                    "pe1", "pe2", "pe3"
                }
            });

            Console.WriteLine(output);
            Console.ReadLine();
        }
Example #12
0
        public void Will_throw_argument_out_of_range_exception_if_trying_to_generate_unregistered_template()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <test1>("this is a test for @Model.Param1");
            testable.CompileTemplates();
            testable.GenerateOutput(new test1()
            {
                Param1 = "p1"
            });
            var ex = Record.Exception(() => testable.GenerateOutput(new test2()
            {
                Param1 = "p2"
            }));

            Assert.IsTrue(ex is ArgumentOutOfRangeException);
        }
Example #13
0
        static void Main(string[] args)
        {
            IRazorTemplateGenerator generator = new RazorTemplateGenerator();

            generator.RegisterTemplate <SampleModel>(SampleTemplateStrings.Sample1);
            generator.CompileTemplates();
            var output =
                generator.GenerateOutput(new SampleModel()
            {
                Prop1 = "p1", Prop2 = "p2", Prop3 = new List <string> {
                    "pe1", "pe2", "pe3"
                }
            });

            System.Console.Out.WriteLine(output);
            System.Console.In.ReadLine();
        }
Example #14
0
        public override void Init()
        {
            if (string.IsNullOrWhiteSpace(Context))
            {
                throw new ArgumentNullException("Context");
            }

            if (string.IsNullOrWhiteSpace(TemplateName))
            {
                throw new ArgumentNullException("TemplateName");
            }

            if (!CacheManager.Instance.Table.ContainsKey(TemplateName))
            {
                var ma = m_BodyRegEx.Match(Context);

                if (!ma.Groups[1].Success)
                {
                    throw new Exception("Can not find body tag");
                }

                string compressedContext = m_BodyRegEx.Replace(Context, new MatchEvaluator((m) =>
                {
                    string str = m.Value.Clean();
                    return(str);
                }));

                try
                {
                    m_Generator = new RazorTemplateGenerator();
                    m_Generator.RegisterTemplate <IDataProvider>(compressedContext);
                    m_Generator.CompileTemplates();

                    CacheManager.Instance.Table[TemplateName] = m_Generator;
                }
                catch (TemplateCompileException ex)
                {
                    throw new Exception(ex.ToString());
                }
            }
            else
            {
                m_Generator = (RazorTemplateGenerator)CacheManager.Instance.Table[TemplateName];
            }
        }
Example #15
0
        public void Will_Compile_multiple_Template_String_with_same_model()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <test1>("this is a test for @Model.Param1");
            testable.RegisterTemplate <test1>("namedTemplate", "this is another test for @Model.Param1");
            testable.CompileTemplates();
            var result1 = testable.GenerateOutput(new test1()
            {
                Param1 = "p1"
            });
            var result2 = testable.GenerateOutput(new test1()
            {
                Param1 = "p2"
            }, "namedTemplate");

            Assert.AreEqual("this is a test for p1", result1);
            Assert.AreEqual("this is another test for p2", result2);
        }
        public void Will_Compile_multiple_Template_String_registered()
        {
            var testable = new RazorTemplateGenerator();

            testable.RegisterTemplate <TestModel1>("this is a test for @Model.Param1");
            testable.RegisterTemplate <TestModel2>("this is another test for @Model.Param1");
            testable.CompileTemplates();
            var result1 = testable.GenerateOutput(new TestModel1()
            {
                Param1 = "p1"
            });
            var result2 = testable.GenerateOutput(new TestModel2()
            {
                Param1 = "p2"
            });

            Assert.Equal("this is a test for p1", result1);
            Assert.Equal("this is another test for p2", result2);
        }
Example #17
0
        public void Test()
        {
            IRazorTemplateGenerator generator = new RazorTemplateGenerator();

            var p = new policy
            {
                policyholders = new PolicyHolders
                {
                    primarypolicyholder = new PolicyHolder
                    {
                        firstname = "jane",
                        lastname  = "doe"
                    }
                }
            };

            generator.RegisterTemplate <policy>(ResourceHelper.TestView);

            generator.CompileTemplates();

            var output = generator.GenerateOutput(p);

            string byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());

            if (output.StartsWith(byteOrderMarkUtf8))
            {
                output = output.Remove(0, byteOrderMarkUtf8.Length);
            }

            output = output.Replace(Environment.NewLine, string.Empty);

            var xmldoc = XDocument.Parse(output);

            //Console.Out.WriteLine(output2);

            string formattedXml = XElement.Parse(output).ToString();

            Console.WriteLine(formattedXml);

            Console.In.ReadLine();
        }
Example #18
0
        public override void RunOnce()
        {
            Trace.WriteLine("Mailer started.", "EML");

            Program.LogSafe("BtRetryService: Mailer started.", EventLogEntryType.Information);

            List <Task> emailTasks = new List <Task>();

            try
            {
                if (!Force)
                {
                    Thread.CurrentThread.WaitUntil(StartAt);
                }

                TransferDbEntities transferDb = new TransferDbEntities();
                var emails = from em in transferDb.EmailLists
                             where em.el_active == true
                             select em;

                if (emails.Count() == 0)
                {
                    Trace.WriteLine("No email addresses found", "EML");
                    Program.LogSafe("BtRetryService: No email addresses found.", EventLogEntryType.Warning);
                    return;
                }

                var generator = new RazorTemplateGenerator();



                //em.el_body_template -> "
                //<table>
                //      <tr><th>iso</th><th>date</th><th>description</th><th>created by</th></tr>
                //@foreach (var i in Model.Results)
                // {<tr>
                //      <td>@i.vt_v_country_iso_id</td><td>@i.vt_last_modification_date</td><td>@i.vt_status_description</td><td>@i.vt_created_by</td>
                //  </tr>}
                //</table>"
                foreach (var em in emails)
                {
                    generator.RegisterTemplate <Data>("__" + em.el_id, em.el_body_template);
                }

                generator.CompileTemplates();

                var date = Force ? ForceDate : DateTime.Now.Yesterday();

                foreach (var em in emails)
                {
                    if (!em.IsValid())
                    {
                        Trace.WriteLine("Invalid emailList entry: ".concat(em.ToString()), "EML");
                        Program.LogSafe("BtRetryService: Invalid emailList entry: ".concat(em.ToString()), EventLogEntryType.Warning);
                        continue;
                    }

                    int iso   = em.el_iso_id;
                    int em_id = em.el_id;

                    TransferDBDataAccess.RetailersTable = Hashtable.Synchronized(PTFDbDataAccess.GetAllRetailers(iso));

                    Data data = new Data();
                    data.Db = transferDb;

                    foreach (var filter in em.el_filter.Split(';'))
                    {
                        var voucherTransfers = from vt in transferDb.VoucherTransfers
                                               where vt.vt_v_country_iso_id == iso &&
                                               //select yesterday's transfers only
                                               vt.vt_last_modification_date >= date
                                               select vt;
                        CString str = "vt_status_description != null && (" + filter + ")";
                        var     voucherTransfers2 = voucherTransfers.Where(str);
                        data.Results.AddRange(voucherTransfers2);
                    }

                    if (!data.IsEmpty)
                    {
                        //em.el_list - > [email protected],[email protected],[email protected]
                        //em.el_subject -> Error in voucher import
                        var emd = new EmailData {
                            AddrList = (EmailMe ? Strings.ROSENRUSEV : em.el_list), Subject = em.el_subject
                        };
                        string str = generator.GenerateOutput(data, "__" + em.el_id);
                        emd.Body = str.Replace("SHOW_BEGIN", "<a href='http://192.168.53.117/VoucherTransferXmls/XmlDataHandler.ashx?id=").Replace("SHOW_END", "'>Show</a>");

                        Trace.WriteLine("emailing:".concat(em.el_list), "EML");

                        var task = Task.Factory.StartNew <bool>((o) =>
                        {
                            var ed = (EmailData)o;
                            Program.LogSafe("Email : ".concat(ed.AddrList.FirstOf(35), "..."), EventLogEntryType.Information);
                            EmailSender.SendSafe(ed.AddrList, "", ed.Subject, ed.Body, true);
                            return(true);
                        }, emd);
                        emailTasks.Add(task);
                    }

                    thread.Yield();
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex, "EML");
                Program.LogSafe(ex.ToString(), EventLogEntryType.Error);
            }
            finally
            {
                Task.WaitAll(emailTasks.ToArray());
                Trace.WriteLine("Mailer stopped.", "EML");
                Program.LogSafe("Mailer stopped.", EventLogEntryType.Information);
            }
        }