Ejemplo n.º 1
0
        public static void ImportCompanyLogos(MarechaiContext context)
        {
            if (!Directory.Exists("wwwroot/assets/incoming"))
            {
                return;
            }

            foreach (string file in Directory.GetFiles("wwwroot/assets/incoming", "company_*.svg",
                                                       SearchOption.TopDirectoryOnly))
            {
                string filename = Path.GetFileNameWithoutExtension(file);

                if (!filename.StartsWith("company_", StringComparison.InvariantCulture))
                {
                    continue;
                }

                string[] pieces = filename.Split('_');

                if (pieces.Length != 3)
                {
                    continue;
                }

                var guid = Guid.NewGuid();

                if (!int.TryParse(pieces[1], out int companyId))
                {
                    continue;
                }

                if (!int.TryParse(pieces[2], out int year))
                {
                    continue;
                }

                try
                {
                    context.CompanyLogos.Add(new CompanyLogo
                    {
                        CompanyId = companyId,
                        Year      = year,
                        Guid      = guid
                    });

                    context.SaveChanges();
                }
                catch (Exception)
                {
                    continue;
                }

                SKSvg svg = null;

                foreach (int minSize in new[]
                {
                    256, 32
                })
                {
                    foreach (string format in new[]
                    {
                        "png", "webp"
                    })
                    {
                        string outDir = minSize == 32 ? Path.Combine("wwwroot/assets/logos/thumbs", format)
                                            : Path.Combine("wwwroot/assets/logos", format);

                        if (!Directory.Exists(outDir))
                        {
                            Directory.CreateDirectory(outDir);
                        }

                        SKEncodedImageFormat skFormat;

                        switch (format)
                        {
                        case "webp":
                            skFormat = SKEncodedImageFormat.Webp;

                            break;

                        default:
                            skFormat = SKEncodedImageFormat.Png;

                            break;
                        }

                        foreach (int multiplier in new[]
                        {
                            1, 2, 3
                        })
                        {
                            string outPath = Path.Combine(outDir, $"{multiplier}x");

                            if (!Directory.Exists(outPath))
                            {
                                Directory.CreateDirectory(outPath);
                            }

                            string rendered = Path.Combine(outPath, $"{guid}.{format}");

                            if (File.Exists(rendered))
                            {
                                continue;
                            }

                            Console.WriteLine("Rendering {0}", rendered);

                            if (svg == null)
                            {
                                svg = new SKSvg();
                                svg.Load(file);
                            }

                            var outFs = new FileStream(rendered, FileMode.CreateNew);
                            RenderSvg(svg, outFs, skFormat, minSize, multiplier);
                            outFs.Close();
                        }
                    }
                }

                File.Move(file, $"wwwroot/assets/logos/{guid}.svg");
            }
        }
Ejemplo n.º 2
0
        public static void Seed(MarechaiContext context, UserManager <ApplicationUser> userManager,
                                RoleManager <ApplicationRole> roleManager, IConfiguration configuration)
        {
            DateTime start, end;

            start = DateTime.Now;
            Console.WriteLine("\u001b[31;1mImporting ISO-639 codes...\u001b[0m");

            try
            {
                Iso639.Seed(context);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception {0} importing ISO-639 codes, saving changes and continuing...", e);
            }

            context.SaveChanges();

            end = DateTime.Now;

            Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m",
                              (end - start).TotalSeconds);

            start = DateTime.Now;
            Console.WriteLine("\u001b[31;1mImporting ISO-4217 codes...\u001b[0m");

            try
            {
                Iso4217.Seed(context);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception {0} importing ISO-4217 codes, saving changes and continuing...", e);
            }

            context.SaveChanges();

            end = DateTime.Now;

            Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m",
                              (end - start).TotalSeconds);

            start = DateTime.Now;
            Console.WriteLine("\u001b[31;1mSeeding document roles...\u001b[0m");
            DocumentRoles.Seed(context);
            end = DateTime.Now;

            Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m",
                              (end - start).TotalSeconds);

            start = DateTime.Now;
            Console.WriteLine("\u001b[31;1mSeeding licenses...\u001b[0m");
            License.Seed(context);
            end = DateTime.Now;

            Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m",
                              (end - start).TotalSeconds);

            start = DateTime.Now;
            Console.WriteLine("\u001b[31;1mSeeding application roles...\u001b[0m");
            Roles.Seed(roleManager, configuration);
            end = DateTime.Now;

            Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m",
                              (end - start).TotalSeconds);

            start = DateTime.Now;
            Console.WriteLine("\u001b[31;1mSeeding application users...\u001b[0m");
            Users.Seed(userManager, roleManager);
            end = DateTime.Now;

            Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m",
                              (end - start).TotalSeconds);

            start = DateTime.Now;
            Console.WriteLine("\u001b[31;1mSaving changes...\u001b[0m");
            context.SaveChanges();
            end = DateTime.Now;

            Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m",
                              (end - start).TotalSeconds);
        }