Пример #1
0
        private string GetDump(Lite <IEntity> target)
        {
            var entity = target.RetrieveAndForget();

            using (CultureInfoUtils.ChangeBothCultures(Schema.Current.ForceCultureInfo))
                return(entity.Dump());
        }
Пример #2
0
        static IDisposable OperationLogic_SurroundOperation(IOperation operation, OperationLogEntity log, Entity?entity, object?[]?args)
        {
            if (entity != null && ShouldLog.Invoke(entity, operation))
            {
                if (operation.OperationType == OperationType.Execute && !entity.IsNew && ((IEntityOperation)operation).CanBeModified)
                {
                    entity = RetrieveFresh(entity);
                }

                using (CultureInfoUtils.ChangeBothCultures(Schema.Current.ForceCultureInfo))
                {
                    log.Mixin <DiffLogMixin>().InitialState = entity.Dump();
                }
            }

            return(new Disposable(() =>
            {
                var target = log.GetTemporalTarget();

                if (target != null && ShouldLog.Invoke(target, operation) && operation.OperationType != OperationType.Delete)
                {
                    using (CultureInfoUtils.ChangeBothCultures(Schema.Current.ForceCultureInfo))
                    {
                        log.Mixin <DiffLogMixin>().FinalState = target.Dump();
                    }
                }
            }));
        }
        public void CanAssignDoubleInDeCulture()
        {
            string parameterName = "p1Dbl";

            const double doubleValue          = 0.123d;
            const string stringValueInvariant = "0.123";

            Type dataType           = typeof(double);
            var  testParameterValue = new ScalarTestParameterValue(parameterName, dataType);

            string stringValueDe = null;

            CultureInfoUtils.ExecuteUsing("de-DE",
                                          () =>
            {
                stringValueDe = doubleValue.ToString(
                    CultureInfo.CreateSpecificCulture("DE-de"));
                testParameterValue.StringValue = stringValueDe;
            });

            Assert.AreEqual(stringValueInvariant, testParameterValue.PersistedStringValue);

            testParameterValue.SetValue(doubleValue);
            Assert.AreEqual(stringValueInvariant, testParameterValue.PersistedStringValue);

            CultureInfoUtils.ExecuteUsing("de-DE",
                                          () =>
            {
                Assert.AreEqual(stringValueDe,
                                testParameterValue.GetDisplayValue());
            });
        }
Пример #4
0
        public SqlPreCommand SynchronizationScript(bool interactive = true, bool schemaOnly = false, string replaceDatabaseName = null)
        {
            OnBeforeDatabaseAccess();

            if (Synchronizing == null)
            {
                return(null);
            }

            using (CultureInfoUtils.ChangeBothCultures(ForceCultureInfo))
                using (ExecutionMode.Global())
                {
                    Replacements replacements = new Replacements()
                    {
                        Interactive = interactive, ReplaceDatabaseName = replaceDatabaseName, SchemaOnly = schemaOnly
                    };
                    SqlPreCommand command = Synchronizing
                                            .GetInvocationListTyped()
                                            .Select(e =>
                    {
                        try
                        {
                            return(e(replacements));
                        }
                        catch (Exception ex)
                        {
                            return(new SqlPreCommandSimple("-- Exception on {0}.{1}\r\n{2}".FormatWith(e.Method.DeclaringType.Name, e.Method.Name, ex.Message.Indent(2, '-'))));
                        }
                    })
                                            .Combine(Spacing.Triple);

                    return(command);
                }
        }
        public async Task <HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func <Task <HttpResponseMessage> > continuation)
        {
            string action = ProfilerActionSplitterAttribute.GetActionDescription(actionContext);

            try
            {
                using (TimeTracker.Start(action))
                {
                    using (HeavyProfiler.Log("Web.API " + actionContext.Request.Method, () => actionContext.Request.RequestUri.ToString()))
                    {
                        var user = (IUserEntity)GetProp(actionContext, SignumAuthenticationFilterAttribute.UserKey);
                        using (user != null ? UserHolder.UserSession(user) : null)
                        {
                            var culture = SignumAuthenticationFilterAttribute.GetCurrentCultures?.Invoke(actionContext);
                            using (culture != null ? CultureInfoUtils.ChangeBothCultures(culture) : null)
                            {
                                var result = await continuation();

                                return(result);
                            }
                        }
                    }
                }
            }
            finally
            {
                Statics.CleanThreadContextAndAssert();
            }
        }
        byte[] CreateFile(CultureInfo ci)
        {
            using (CultureInfoUtils.ChangeBothCultures(ci))
                using (MemoryStream ms = new MemoryStream())
                {
                    using (StreamWriter sw = new StreamWriter(ms, Encoding.UTF8))
                    {
                        var config = new
                        {
                            days        = CultureInfo.CurrentCulture.DateTimeFormat.DayNames,
                            daysShort   = CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames,
                            daysMin     = CultureInfo.CurrentCulture.DateTimeFormat.ShortestDayNames,
                            months      = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames,
                            monthsShort = CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames,

                            today = CalendarMessage.Today.NiceToString(),
                        };

                        sw.WriteLine("//Autogenerated {0} translation for bootstrap-datepicker".FormatWith(ci.EnglishName));
                        sw.WriteLine(";(function($){");
                        sw.WriteLine("	$.fn.datepicker.dates['{0}'] = {1};", ci.TwoLetterISOLanguageName, Newtonsoft.Json.JsonConvert.SerializeObject(config));
                        sw.WriteLine("}(jQuery));");
                    }

                    return(ms.ToArray());
                }
        }
Пример #7
0
 public static string LoadKDString(string description, string resourceID, string systemType, params object[] args)
 {
     if (TryGetSlKDString(resourceID, description, systemType, out description))
     {
         return(description);
     }
     return(LoadKDString(description, resourceID, CultureInfoUtils.GetCurrentCulture().Name, systemType, args));
 }
Пример #8
0
        public SqlPreCommand?SynchronizationScript(bool interactive = true, bool schemaOnly = false, string?replaceDatabaseName = null)
        {
            OnBeforeDatabaseAccess();

            if (Synchronizing == null)
            {
                return(null);
            }

            using (CultureInfoUtils.ChangeBothCultures(ForceCultureInfo))
                using (ExecutionMode.Global())
                {
                    Replacements replacements = new Replacements()
                    {
                        Interactive         = interactive,
                        ReplaceDatabaseName = replaceDatabaseName,
                        SchemaOnly          = schemaOnly
                    };
                    SqlPreCommand?command = Synchronizing
                                            .GetInvocationListTyped()
                                            .Select(e =>
                    {
                        try
                        {
                            SafeConsole.WriteColor(ConsoleColor.White, e.Method.DeclaringType !.TypeName());
                            Console.Write(".");
                            SafeConsole.WriteColor(ConsoleColor.DarkGray, e.Method.MethodName());
                            Console.Write("...");

                            var result = e(replacements);

                            if (result == null)
                            {
                                SafeConsole.WriteLineColor(ConsoleColor.Green, "OK");
                            }
                            else
                            {
                                SafeConsole.WriteLineColor(ConsoleColor.Yellow, "Changes");
                            }

                            return(result);
                        }
                        catch (Exception ex)
                        {
                            SafeConsole.WriteColor(ConsoleColor.Red, "Error");
                            SafeConsole.WriteLineColor(ConsoleColor.DarkRed, " (...it's probably ok, execute this script and try again)");

                            return(new SqlPreCommandSimple("-- Exception on {0}.{1}\r\n{2}".FormatWith(e.Method.DeclaringType !.Name, e.Method.Name, ex.Message.Indent(2, '-'))));
                        }
                    })
                                            .Combine(Spacing.Triple);

                    return(command);
                }
        }
Пример #9
0
        public static void Start(SchemaBuilder sb, DynamicQueryManager dqm)
        {
            sb.Include <WordAttachmentEntity>()
            .WithQuery(dqm, () => s => new
            {
                Entity = s,
                s.Id,
                s.FileName,
                s.WordTemplate,
                s.OverrideModel,
            });

            EmailTemplateLogic.FillAttachmentTokens.Register((WordAttachmentEntity wa, EmailTemplateLogic.FillAttachmentTokenContext ctx) =>
            {
                if (wa.FileName != null)
                {
                    EmailTemplateParser.Parse(wa.FileName, ctx.QueryDescription, ctx.ModelType).FillQueryTokens(ctx.QueryTokens);
                }
            });

            Validator.PropertyValidator((WordAttachmentEntity e) => e.FileName).StaticPropertyValidation = WordAttachmentFileName_StaticPropertyValidation;

            EmailTemplateLogic.GenerateAttachment.Register((WordAttachmentEntity wa, EmailTemplateLogic.GenerateAttachmentContext ctx) =>
            {
                var entity = wa.OverrideModel?.Retrieve() ?? (Entity)ctx.Entity ?? ctx.SystemEmail.UntypedEntity;

                if (wa.ModelConverter != null)
                {
                    entity = wa.ModelConverter.Convert(entity);
                }

                using (CultureInfoUtils.ChangeBothCultures(ctx.Culture))
                {
                    WordTemplateEntity template = WordTemplateLogic.GetFromCache(wa.WordTemplate);

                    var fileName = GetTemplateString(wa.FileName, ref wa.FileNameNode, ctx);

                    var systemWordTemplate = template.SystemWordTemplate != null && !SystemWordTemplateLogic.RequiresExtraParameters(template.SystemWordTemplate) ?
                                             SystemWordTemplateLogic.CreateDefaultSystemWordTemplate(template.SystemWordTemplate, entity) : null;

                    var bytes = WordTemplateLogic.CreateReport(template, entity, systemWordTemplate);

                    return(new List <EmailAttachmentEmbedded>
                    {
                        new EmailAttachmentEmbedded
                        {
                            File = Files.FilePathEmbeddedLogic.SaveFile(new Entities.Files.FilePathEmbedded(EmailFileType.Attachment, fileName, bytes)),
                            Type = EmailAttachmentType.Attachment,
                        }
                    });
                }
            });
        }
Пример #10
0
        public static IDisposable CultureFromOperationContext()
        {
            MessageHeaders headers = OperationContext.Current.IncomingMessageHeaders;

            int culture   = headers.FindHeader("CurrentCulture", "http://www.signumsoftware.com/Culture");
            int cultureUI = headers.FindHeader("CurrentUICulture", "http://www.signumsoftware.com/Culture");

            var changeCulture   = culture == -1 ? null : CultureInfoUtils.ChangeCulture(headers.GetHeader <string>(culture));
            var changeUICulture = cultureUI == -1 ? null : CultureInfoUtils.ChangeCulture(headers.GetHeader <string>(cultureUI));

            return(Disposable.Combine(changeCulture, changeUICulture));
        }
Пример #11
0
        public static void Start(SchemaBuilder sb)
        {
            sb.Include <ExcelAttachmentEntity>()
            .WithQuery(() => s => new
            {
                Entity = s,
                s.Id,
                s.FileName,
                s.UserQuery,
                s.Related,
            });

            EmailTemplateLogic.FillAttachmentTokens.Register((ExcelAttachmentEntity ea, EmailTemplateLogic.FillAttachmentTokenContext ctx) =>
            {
                if (ea.FileName != null)
                {
                    TextTemplateParser.Parse(ea.FileName, ctx.QueryDescription, ctx.ModelType).FillQueryTokens(ctx.QueryTokens);
                }

                if (ea.Title != null)
                {
                    TextTemplateParser.Parse(ea.Title, ctx.QueryDescription, ctx.ModelType).FillQueryTokens(ctx.QueryTokens);
                }
            });

            Validator.PropertyValidator((ExcelAttachmentEntity e) => e.FileName).StaticPropertyValidation = ExcelAttachmentFileName_StaticPropertyValidation;
            Validator.PropertyValidator((ExcelAttachmentEntity e) => e.Title).StaticPropertyValidation    = ExcelAttachmentTitle_StaticPropertyValidation;

            EmailTemplateLogic.GenerateAttachment.Register((ExcelAttachmentEntity ea, EmailTemplateLogic.GenerateAttachmentContext ctx) =>
            {
                var finalEntity = ea.Related?.RetrieveAndRemember() ?? (Entity?)ctx.Entity ?? ctx.Model !.UntypedEntity as Entity;

                using (finalEntity == null ? null : CurrentEntityConverter.SetCurrentEntity(finalEntity))
                    using (CultureInfoUtils.ChangeBothCultures(ctx.Culture))
                    {
                        QueryRequest request = UserQueryLogic.ToQueryRequest(ea.UserQuery.RetrieveAndRemember());

                        var title    = GetTemplateString(ea.Title, ref ea.TitleNode, ctx);
                        var fileName = GetTemplateString(ea.FileName, ref ea.FileNameNode, ctx);

                        var bytes = ExcelLogic.ExecutePlainExcel(request, title);

                        return(new List <EmailAttachmentEmbedded>
                        {
                            new EmailAttachmentEmbedded
                            {
                                File = Files.FilePathEmbeddedLogic.SaveFile(new Entities.Files.FilePathEmbedded(EmailFileType.Attachment, fileName, bytes)),
                                Type = EmailAttachmentType.Attachment,
                            }
                        });
                    }
            });
        }
Пример #12
0
        private static IEnumerable <T> CreateSemiSymbols()
        {
            IEnumerable <T> should = getSemiSymbols().ToList();

            using (CultureInfoUtils.ChangeCulture(Schema.Current.ForceCultureInfo))
                foreach (var item in should)
                {
                    item.Name = item.NiceToString() !;
                }

            return(should);
        }
Пример #13
0
        public async Task OnResourceExecutionAsync(ResourceExecutingContext precontext, ResourceExecutionDelegate next)
        {
            //Eagerly reading the whole body just in case to avoid "Cannot access a disposed object"
            //TODO: Make it more eficiently when https://github.com/aspnet/AspNetCore/issues/14396
            var body = ReadAllBody(precontext.HttpContext);

            var context = await next();

            if (context.Exception != null)
            {
                if (!AvoidLogException.Contains(context.Exception.GetType()))
                {
                    var req = context.HttpContext.Request;

                    var connFeature = context.HttpContext.Features.Get <IHttpConnectionFeature>();

                    var exLog = context.Exception.LogException(e =>
                    {
                        e.ActionName      = Try(100, () => (context.ActionDescriptor as ControllerActionDescriptor)?.ActionName);
                        e.ControllerName  = Try(100, () => (context.ActionDescriptor as ControllerActionDescriptor)?.ControllerName);
                        e.UserAgent       = Try(300, () => req.Headers["User-Agent"].FirstOrDefault());
                        e.RequestUrl      = Try(int.MaxValue, () => req.GetDisplayUrl());
                        e.UrlReferer      = Try(int.MaxValue, () => req.Headers["Referer"].ToString());
                        e.UserHostAddress = Try(100, () => connFeature.RemoteIpAddress.ToString());
                        e.UserHostName    = Try(100, () => Dns.GetHostEntry(connFeature.RemoteIpAddress).HostName);
                        e.User            = (UserHolder.Current ?? (IUserEntity)context.HttpContext.Items[SignumAuthenticationFilter.Signum_User_Key])?.ToLite() ?? e.User;
                        e.QueryString     = Try(int.MaxValue, () => req.QueryString.ToString());
                        e.Form            = Try(int.MaxValue, () => Encoding.UTF8.GetString(body));
                        e.Session         = null;
                    });
                }

                if (ExpectsJsonResult(context))
                {
                    var statusCode = GetStatus(context.Exception.GetType());

                    var ci = TranslateExceptionMessage(context.Exception) ? SignumCultureSelectorFilter.GetCurrentCulture?.Invoke(precontext) : null;

                    using (ci == null ? null : CultureInfoUtils.ChangeBothCultures(ci))
                    {
                        var error = new HttpError(context.Exception, IncludeErrorDetails(context.Exception));

                        var response = context.HttpContext.Response;
                        response.StatusCode  = (int)statusCode;
                        response.ContentType = "application/json";
                        await response.WriteAsync(JsonConvert.SerializeObject(error, SignumServer.JsonSerializerSettings));

                        context.ExceptionHandled = true;
                    }
                }
            }
        }
Пример #14
0
        public static MList <EmailTemplateMessageEmbedded> CreateMessages(Func <EmailTemplateMessageEmbedded> func)
        {
            var list = new MList <EmailTemplateMessageEmbedded>();

            foreach (var ci in CultureInfoLogic.ApplicationCultures)
            {
                using (CultureInfoUtils.ChangeBothCultures(ci))
                {
                    list.Add(func());
                }
            }
            return(list);
        }
Пример #15
0
 private static string GetFieldValues(
     [NotNull] IRow row,
     [NotNull] TableView filterHelper,
     [NotNull] IEnumerable <TableView> parentHelpers)
 {
     return(CultureInfoUtils.ExecuteUsing(
                CultureInfo.InvariantCulture,
                () =>
     {
         var sb = new StringBuilder();
         AppendFieldValues(row, sb, filterHelper, parentHelpers);
         return sb.ToString().Trim();
     }));
 }
Пример #16
0
    public static IEnumerable <T> ForEachCulture <T>(Func <CultureInfoEntity, T> func)
    {
        if (EntityToCultureInfo.Value.Count == 0)
        {
            throw new InvalidOperationException("No {0} found in the database".FormatWith(typeof(CultureInfoEntity).Name));
        }

        foreach (var c in EntityToCultureInfo.Value.Where(a => a.Value.IsNeutralCulture))
        {
            using (CultureInfoUtils.ChangeBothCultures(c.Value))
            {
                yield return(func(c.Key));
            }
        }
    }
Пример #17
0
 public void ReportCurrentCulture()
 {
     Console.WriteLine(@"CurrentCulture:");
     Console.WriteLine(
         CultureInfoUtils.GetCultureInfoDescription(CultureInfo.CurrentCulture));
     Console.WriteLine();
     Console.WriteLine(@"CurrentUICulture:");
     Console.WriteLine(
         CultureInfoUtils.GetCultureInfoDescription(CultureInfo.CurrentUICulture));
     Console.WriteLine();
     Console.WriteLine(@"InstalledUICulture:");
     Console.WriteLine(
         CultureInfoUtils.GetCultureInfoDescription(CultureInfo.InstalledUICulture));
     Console.WriteLine();
     Console.WriteLine(@"InvariantCulture:");
     Console.WriteLine(
         CultureInfoUtils.GetCultureInfoDescription(CultureInfo.InvariantCulture));
 }
Пример #18
0
        internal SqlPreCommand GenerationScipt()
        {
            OnBeforeDatabaseAccess();

            if (Generating == null)
            {
                return(null);
            }

            using (CultureInfoUtils.ChangeBothCultures(ForceCultureInfo))
                using (ExecutionMode.Global())
                {
                    return(Generating
                           .GetInvocationListTyped()
                           .Select(e => e())
                           .Combine(Spacing.Triple));
                }
        }
Пример #19
0
        private static string LoadKDString(string description, string resourceID, string language, string systemType, params object[] args)
        {
            string format = "";

            if (language == "zh-CN")
            {
                if ((args == null) || (args.Length <= 0))
                {
                    return(description);
                }
                return(string.Format(description, args));
            }
            if ((language == null) || (language.Trim() == ""))
            {
                language = CultureInfoUtils.GetOSSelectLanguageLocaleCode();
            }
            try
            {
                ResourceManager resManagerInstance = GetResManagerInstance(language, systemType);
                if (language.Equals(Thread.CurrentThread.CurrentUICulture.Name, StringComparison.InvariantCultureIgnoreCase) || (systemType.ToString() != resManagerInstance.BaseName))
                {
                    resManagerInstance = LoadResourceAssembly(language, systemType);
                    if (HttpContext.Current != null)
                    {
                        CallContext.SetData("KINGDEE_K3_RESMANAGER", resManagerInstance);
                    }
                }
                format = resManagerInstance.GetString(resourceID, new CultureInfo(language));
                if (((format != null) && (args != null)) && (args.Length > 0))
                {
                    format = string.Format(CultureInfo.CurrentCulture, format, args);
                }
            }
            catch
            {
            }
            if ((format == null) || (format.Length == 0))
            {
                format = (description.Trim().Length == 0) ? resourceID : description;
            }
            return(format);
        }
Пример #20
0
    public static void Start(SchemaBuilder sb)
    {
        sb.Settings.AssertImplementedBy((EmailTemplateEntity e) => e.Attachments.First(), typeof(ImageAttachmentEntity));

        sb.Include <ImageAttachmentEntity>()
        .WithQuery(() => s => new
        {
            Entity = s,
            s.Id,
            s.FileName,
            s.ContentId
        });

        Validator.PropertyValidator((ImageAttachmentEntity e) => e.FileName).StaticPropertyValidation = ImageAttachmentFileName_StaticPropertyValidation;

        EmailTemplateLogic.FillAttachmentTokens.Register((ImageAttachmentEntity wa, EmailTemplateLogic.FillAttachmentTokenContext ctx) =>
        {
            if (wa.FileName != null)
            {
                TextTemplateParser.Parse(wa.FileName, ctx.QueryDescription, ctx.ModelType).FillQueryTokens(ctx.QueryTokens);
            }
        });

        EmailTemplateLogic.GenerateAttachment.Register((ImageAttachmentEntity a, EmailTemplateLogic.GenerateAttachmentContext ctx) =>
        {
            using (CultureInfoUtils.ChangeBothCultures(ctx.Culture))
            {
                var fileName = !a.FileName.HasText() ? a.File.FileName : GetTemplateString(a.FileName, ref a.FileNameNode, ctx);

                return(new List <EmailAttachmentEmbedded>
                {
                    new EmailAttachmentEmbedded
                    {
                        File = new FilePathEmbedded(EmailFileType.Attachment, fileName, a.File.BinaryFile),
                        Type = a.Type,
                        ContentId = a.ContentId,
                    }
                });
            }
        });
    }
Пример #21
0
        private static DateTime GetDateTimeRelativeToNow(
            [CanBeNull] string maximumDateTimeRelativeToNow)
        {
            DateTime now = DateTime.Now;

            if (string.IsNullOrEmpty(maximumDateTimeRelativeToNow))
            {
                return(now);
            }

            if (StringUtils.IsNullOrEmptyOrBlank(maximumDateTimeRelativeToNow))
            {
                return(now);
            }

            TimeSpan timeSpan = CultureInfoUtils.ExecuteUsing(
                CultureInfo.InvariantCulture,
                () => TimeSpan.Parse(maximumDateTimeRelativeToNow));

            return(now.Add(timeSpan));
        }
Пример #22
0
        public void UseTempCultureInfo()
        {
            Console.WriteLine(@"CurrentCulture:");
            Console.WriteLine(
                CultureInfoUtils.GetCultureInfoDescription(CultureInfo.CurrentCulture));
            Console.WriteLine();

            const string tempCulture = "uk-UA";

            using (
                new CultureInfoUtils.TempCultureInfo(CultureInfo.GetCultureInfo(tempCulture)))
            {
                CultureInfo ci = Thread.CurrentThread.CurrentCulture;
                Console.WriteLine(@"TemporaryCulture:");
                Console.WriteLine(CultureInfoUtils.GetCultureInfoDescription(ci));
            }

            Console.WriteLine();
            Console.WriteLine(@"CurrentCulture:");
            Console.WriteLine(
                CultureInfoUtils.GetCultureInfoDescription(CultureInfo.CurrentCulture));
        }
 protected int ComputeHashCodeForCulture(string name)
 {
     return(CultureInfoUtils.FastHash(name));
 }
Пример #24
0
    static int Main(string[] args)
    {
        try
        {
            using (AuthLogic.Disable())
                using (CultureInfoUtils.ChangeCulture("en"))
                    using (CultureInfoUtils.ChangeCultureUI("en"))
                    {
                        var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
                        Configuration = new ConfigurationBuilder()
                                        .SetBasePath(Directory.GetCurrentDirectory())
                                        .AddJsonFile("appsettings.json")
                                        .AddJsonFile($"appsettings.{env}.json", true)
                                        .AddUserSecrets <Program>(optional: true)
                                        .Build();

                        Starter.Start(
                            Configuration.GetConnectionString("ConnectionString"),
                            Configuration.GetValue <bool>("IsPostgres"),
                            Configuration.GetConnectionString("AzureStorageConnectionString"),
                            Configuration.GetValue <string>("BroadcastSecret"),
                            Configuration.GetValue <string>("BroadcastUrls"));

                        Console.WriteLine("..:: Welcome to Southwind Loading Application ::..");
                        SafeConsole.WriteLineColor(env == "live" ? ConsoleColor.Red : env == "test" ? ConsoleColor.Yellow : ConsoleColor.Gray, Connector.Current.ToString());
                        Console.WriteLine();

                        if (args.Any())
                        {
                            switch (args.First().ToLower().Trim('-', '/'))
                            {
                            case "sql": SqlMigrationRunner.SqlMigrations(true); return(0);

                            case "csharp": SouthwindMigrations.CSharpMigrations(true); return(0);

                            case "load": Load(args.Skip(1).ToArray()); return(0);

                            default:
                            {
                                SafeConsole.WriteLineColor(ConsoleColor.Red, "Unkwnown command " + args.First());
                                Console.WriteLine("Examples:");
                                Console.WriteLine("   sql: SQL Migrations");
                                Console.WriteLine("   csharp: C# Migrations");
                                Console.WriteLine("   load 1-4,7: Load processes 1 to 4 and 7");
                                return(-1);
                            }
                            }
                        } //if(args.Any())

                        while (true)
                        {
                            Action?action = new ConsoleSwitch <string, Action>
                            {
                                { "N", Administrator.NewDatabase },
                                { "G", CodeGenerator.GenerateCodeConsole },
                                { "SQL", SqlMigrationRunner.SqlMigrations },
                                { "CS", () => SouthwindMigrations.CSharpMigrations(false), "C# Migrations" },
                                { "S", Administrator.Synchronize },
                                { "L", () => Load(null), "Load" },
                            }.Choose();

                            if (action == null)
                            {
                                return(0);
                            }

                            action();
                        }
                    }
        }
        catch (Exception e)
        {
            SafeConsole.WriteColor(ConsoleColor.DarkRed, e.GetType().Name + ": ");
            SafeConsole.WriteLineColor(ConsoleColor.Red, e.Message);
            SafeConsole.WriteLineColor(ConsoleColor.DarkRed, e.StackTrace !.Indent(4));
            return(-1);
        }
    }
Пример #25
0
        static int Main(string[] args)
        {
            try
            {
                using (AuthLogic.Disable())
                    using (CultureInfoUtils.ChangeCulture("en"))
                        using (CultureInfoUtils.ChangeCultureUI("en"))
                        {
                            DynamicLogicStarter.AssertRoslynIsPresent();
                            Starter.Start(UserConnections.Replace(Settings.Default.ConnectionString));

                            Console.WriteLine("..:: Welcome to Southwind Loading Application ::..");
                            Console.WriteLine("Database: {0}", Regex.Match(((SqlConnector)Connector.Current).ConnectionString, @"Initial Catalog\=(?<db>.*)\;").Groups["db"].Value);
                            Console.WriteLine();

                            if (args.Any())
                            {
                                switch (args.First().ToLower().Trim('-', '/'))
                                {
                                case "sql": SqlMigrationRunner.SqlMigrations(true); return(0);

                                case "csharp": SouthwindMigrations.CSharpMigrations(true); return(0);

                                case "load": Load(args.Skip(1).ToArray()); return(0);

                                default:
                                {
                                    SafeConsole.WriteLineColor(ConsoleColor.Red, "Unkwnown command " + args.First());
                                    Console.WriteLine("Examples:");
                                    Console.WriteLine("   sql: SQL Migrations");
                                    Console.WriteLine("   csharp: C# Migrations");
                                    Console.WriteLine("   load 1-4,7: Load processes 1 to 4 and 7");
                                    return(-1);
                                }
                                }
                            } //if(args.Any())

                            while (true)
                            {
                                Action action = new ConsoleSwitch <string, Action>
                                {
                                    { "N", NewDatabase },
                                    { "G", CodeGenerator.GenerateCodeConsole },
                                    { "SQL", SqlMigrationRunner.SqlMigrations },
                                    { "CS", () => SouthwindMigrations.CSharpMigrations(false), "C# Migrations" },
                                    { "S", Synchronize },
                                    { "L", () => Load(null), "Load" },
                                }.Choose();

                                if (action == null)
                                {
                                    return(0);
                                }

                                action();
                            }
                        }
            }
            catch (Exception e)
            {
                SafeConsole.WriteColor(ConsoleColor.DarkRed, e.GetType().Name + ": ");
                SafeConsole.WriteLineColor(ConsoleColor.Red, e.Message);
                SafeConsole.WriteLineColor(ConsoleColor.DarkRed, e.StackTrace.Indent(4));
                return(-1);
            }
        }
Пример #26
0
        private EmailMessageEntity CreateEmailMessageInternal(EmailFromEmbedded from, List <EmailOwnerRecipientData> recipients)
        {
            EmailMessageEntity email;

            try
            {
                var ci = this.cultureInfo ??
                         EmailTemplateLogic.GetCultureInfo?.Invoke(entity ?? model?.UntypedEntity as Entity) ??
                         recipients.Where(a => a.Kind == EmailRecipientKind.To).Select(a => a.OwnerData.CultureInfo).FirstOrDefault()?.ToCultureInfo() ??
                         EmailLogic.Configuration.DefaultCulture.ToCultureInfo();

                email = new EmailMessageEntity
                {
                    Target     = entity?.ToLite() ?? (this.model !.UntypedEntity as Entity)?.ToLite(),
                    Recipients = recipients.Select(r => new EmailRecipientEmbedded(r.OwnerData)
                    {
                        Kind = r.Kind
                    }).ToMList(),
                    From            = from,
                    IsBodyHtml      = template.IsBodyHtml,
                    EditableMessage = template.EditableMessage,
                    Template        = template.ToLite(),
                    Attachments     = template.Attachments.SelectMany(g => EmailTemplateLogic.GenerateAttachment.Invoke(g,
                                                                                                                        new EmailTemplateLogic.GenerateAttachmentContext(this.qd, template, dicTokenColumn, currentRows, ci)
                    {
                        ModelType = template.Model?.ToType(),
                        Model     = model,
                        Entity    = entity,
                    })).ToMList()
                };

                EmailTemplateMessageEmbedded?message =
                    template.GetCultureMessage(ci) ??
                    template.GetCultureMessage(ci.Parent) ??
                    template.GetCultureMessage(EmailLogic.Configuration.DefaultCulture.ToCultureInfo()) ??
                    template.GetCultureMessage(EmailLogic.Configuration.DefaultCulture.ToCultureInfo().Parent);

                if (message == null)
                {
                    throw new InvalidOperationException("Message {0} does not have a message for CultureInfo {1} (or Default)".FormatWith(template, ci));
                }

                using (CultureInfoUtils.ChangeBothCultures(ci))
                {
                    email.Subject = SubjectNode(message).Print(
                        new TextTemplateParameters(entity, ci, dicTokenColumn, currentRows)
                    {
                        IsHtml = false,
                        Model  = model
                    });

                    email.Body = new BigStringEmbedded(TextNode(message).Print(
                                                           new TextTemplateParameters(entity, ci, dicTokenColumn, currentRows)
                    {
                        IsHtml = template.IsBodyHtml,
                        Model  = model,
                    }));
                }
            }
            catch (Exception ex)
            {
                ex.Data["Template"] = this.template.ToLite();
                ex.Data["Model"]    = this.model;
                ex.Data["Entity"]   = this.entity;
                throw;
            }

            return(email);
        }
Пример #27
0
        public static byte[] CreateReport(this WordTemplateEntity template, ModifiableEntity model = null, ISystemWordTemplate systemWordTemplate = null, bool avoidConversion = false)
        {
            WordTemplatePermission.GenerateReport.AssertAuthorized();

            Entity entity = null;

            if (template.SystemWordTemplate != null)
            {
                if (systemWordTemplate == null)
                {
                    systemWordTemplate = SystemWordTemplateLogic.CreateDefaultSystemWordTemplate(template.SystemWordTemplate, model);
                }
                else if (template.SystemWordTemplate.ToType() != systemWordTemplate.GetType())
                {
                    throw new ArgumentException("systemWordTemplate should be a {0} instead of {1}".FormatWith(template.SystemWordTemplate.FullClassName, systemWordTemplate.GetType().FullName));
                }
            }
            else
            {
                entity = model as Entity ?? throw new InvalidOperationException("Model should be an Entity");
            }

            using (template.DisableAuthorization ? ExecutionMode.Global() : null)
                using (CultureInfoUtils.ChangeBothCultures(template.Culture.ToCultureInfo()))
                {
                    QueryDescription qd = DynamicQueryManager.Current.QueryDescription(template.Query.ToQueryName());

                    var array = template.ProcessOpenXmlPackage(document =>
                    {
                        Dump(document, "0.Original.txt");

                        var parser = new TemplateParser(document, qd, template.SystemWordTemplate.ToType(), template);
                        parser.ParseDocument(); Dump(document, "1.Match.txt");
                        parser.CreateNodes(); Dump(document, "2.BaseNode.txt");
                        parser.AssertClean();

                        if (parser.Errors.Any())
                        {
                            throw new InvalidOperationException("Error in template {0}:\r\n".FormatWith(template) + parser.Errors.ToString(e => e.Message, "\r\n"));
                        }

                        var renderer = new TemplateRenderer(document, qd, entity, template.Culture.ToCultureInfo(), systemWordTemplate, template);
                        renderer.MakeQuery();
                        renderer.RenderNodes(); Dump(document, "3.Replaced.txt");
                        renderer.AssertClean();

                        FixDocument(document); Dump(document, "4.Fixed.txt");

                        if (template.WordTransformer != null)
                        {
                            Transformers.GetOrThrow(template.WordTransformer)(new WordContext
                            {
                                Template           = template,
                                Entity             = entity,
                                SystemWordTemplate = systemWordTemplate
                            }, document);
                        }
                    });

                    if (!avoidConversion && template.WordConverter != null)
                    {
                        array = Converters.GetOrThrow(template.WordConverter)(new WordContext
                        {
                            Template           = template,
                            Entity             = entity,
                            SystemWordTemplate = systemWordTemplate
                        }, array);
                    }

                    return(array);
                }
        }
Пример #28
0
 Dictionary <string, string> ReadAllKeys(CultureInfo ci)
 {
     using (CultureInfoUtils.ChangeCultureUI(ci))
         return(Enum.GetValues(MessageType).Cast <Enum>().ToDictionary(a => a.ToString(), a => a.NiceToString()));
 }
Пример #29
0
 private string GetDump(Entity entity)
 {
     using (CultureInfoUtils.ChangeBothCultures(Schema.Current.ForceCultureInfo))
         return(entity.Dump());
 }
Пример #30
0
        static int Main(string[] args)
        {
            try
            {
                using (AuthLogic.Disable())
                    using (CultureInfoUtils.ChangeCulture("en"))
                        using (CultureInfoUtils.ChangeCultureUI("en"))
                        {
                            ConfigRoot = new ConfigurationBuilder()
                                         .SetBasePath(Directory.GetCurrentDirectory())
                                         .AddJsonFile("appsettings.json")
                                         .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", true)
                                         .AddUserSecrets <Program>().Build();

                            var connectionString = ConfigRoot.GetConnectionString("ConnectionString");
                            Starter.Start(connectionString);

                            Console.WriteLine("..:: Welcome to Southwind Loading Application ::..");
                            Console.WriteLine("Database: {0}", Regex.Match(((SqlConnector)Connector.Current).ConnectionString, @"Initial Catalog\=(?<db>.*)\;").Groups["db"].Value);
                            Console.WriteLine();

                            if (args.Any())
                            {
                                switch (args.First().ToLower().Trim('-', '/'))
                                {
                                case "sql": SqlMigrationRunner.SqlMigrations(true); return(0);

                                case "csharp": SouthwindMigrations.CSharpMigrations(true); return(0);

                                case "load": Load(args.Skip(1).ToArray()); return(0);

                                default:
                                {
                                    SafeConsole.WriteLineColor(ConsoleColor.Red, "Unkwnown command " + args.First());
                                    Console.WriteLine("Examples:");
                                    Console.WriteLine("   sql: SQL Migrations");
                                    Console.WriteLine("   csharp: C# Migrations");
                                    Console.WriteLine("   load 1-4,7: Load processes 1 to 4 and 7");
                                    return(-1);
                                }
                                }
                            } //if(args.Any())

                            while (true)
                            {
                                Action action = new ConsoleSwitch <string, Action>
                                {
                                    { "N", NewDatabase },
                                    { "G", CodeGenerator.GenerateCodeConsole },
                                    { "SQL", SqlMigrationRunner.SqlMigrations },
                                    { "CS", () => SouthwindMigrations.CSharpMigrations(false), "C# Migrations" },
                                    { "S", Synchronize },
                                    { "L", () => Load(null), "Load" },
                                }.Choose();

                                if (action == null)
                                {
                                    return(0);
                                }

                                action();
                            }
                        }
            }
            catch (Exception e)
            {
                SafeConsole.WriteColor(ConsoleColor.DarkRed, e.GetType().Name + ": ");
                SafeConsole.WriteLineColor(ConsoleColor.Red, e.Message);
                SafeConsole.WriteLineColor(ConsoleColor.DarkRed, e.StackTrace.Indent(4));
                return(-1);
            }
        }