コード例 #1
0
        public static void Main()
        {
            var context = new FactoryDbContext();

            context.Database.CreateIfNotExists();

            var mongoData = GetDataFromMongoDb(Constants.DataName, Constants.CollectionName);
            var reports   = GetReportsDataFromExcel(Constants.ZipFilePath, Constants.UnzipedFilesPath);

            var productData = ProductMigrator.Instance.GetProductData(mongoData, context);

            PopulateSQLDbWithProducts(productData, context);

            var reportsData = ReportMigrator.Instance.GetReports(reports);

            PopulateSqlDbWithReports(reportsData, context);

            ImportXmlToMongoDb();
            ImportXMLToSqlServer();

            GenerateXMLReport(context, Constants.XmlReportsPath);
            GeneratePDFReport(context, Constants.PdfReportsPath);
            GenerateJSONReports(context, Constants.JsonReportsPath);

            var mySqlContext = new FactoryMySqlDbContext();

            mySqlContext.UpdateDatabase();
            PopulateMySQLDataBase(context, mySqlContext);

            //    var expensesPerModel = GetDataFromSQLite();
            //    var incomesPerModel = GetIncomePerModel(mySqlContext);
            //    CreateExcelYearlyFinancialResult(expensesPerModel, incomesPerModel);
        }
コード例 #2
0
ファイル: Cache.cs プロジェクト: Coolkaru-can/DocumentImport
        public static Guid?GetProjectId(string projectNumber, string fullPath)
        {
            if (_excludedPath.Any(x => x.Equals(fullPath, StringComparison.InvariantCultureIgnoreCase)))
            {
                return(Guid.Empty);
            }
            if (_projects == null)
            {
                using (var context = FactoryDbContext.Create())
                {
                    _projects = context.Projects.Select(x => new { x.Id, x.ProjectNumber }).ToDictionary(x => x.ProjectNumber.Trim(), x => x.Id);
                }
            }

            if (_projects.ContainsKey(projectNumber))
            {
                return(_projects[projectNumber]);
            }

            foreach (var x in _replaceEnd)
            {
                var match = _projects.Where(p => ReplaceEnd(p.Key, x).Equals(ReplaceEnd(projectNumber, x), StringComparison.InvariantCultureIgnoreCase)).Select(p => p.Value).FirstOrDefault();

                if (match != Guid.Empty)
                {
                    return(match);
                }
            }
            ;


            return(null);
        }
        protected override int Execute()
        {
            ILogger logger = GetLogger();

            Hashtable args            = GetArguments();
            string    defaultHost     = Environment.GetEnvironmentVariable("ONIX_ERP_DB_HOST");
            string    defaultPassword = Environment.GetEnvironmentVariable("ONIX_ERP_DB_PASSWORD");
            string    user            = Environment.GetEnvironmentVariable("ONIX_ERP_DB_USER");
            string    dbname          = Environment.GetEnvironmentVariable("ONIX_ERP_DB_NAME");

            string host = GetOptionValue(args, "host", defaultHost);
            int    port = Int32.Parse(GetOptionValue(args, "port", "5432"));

            string db       = GetOptionValue(args, "database", dbname);;
            string uname    = GetOptionValue(args, "user", user);
            string passwd   = GetOptionValue(args, "password", defaultPassword);
            string provider = GetOptionValue(args, "provider", "pgsql");

            string msg = "Migrating data : host=[{0}] port=[{1}] db=[{2}] provider=[{3}]...";

            LogUtils.LogInformation(logger, msg, host, port, db, provider);

            DbCredential crd = new DbCredential(host, port, db, uname, passwd);
            var          ctx = (OnixErpDbContextPgSql)FactoryDbContext.CreateDbContextObject("OnixErpDbContextPgSql", crd);

            ctx.Database.Migrate();

            LogUtils.LogInformation(logger, "Migrating done");

            return(0);
        }
コード例 #4
0
        public static void Test()
        {
            var builder = new DbContextOptionsBuilder <FactoryDbContext>();

            builder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var options = builder.Options;
            var db      = new FactoryDbContext(options);

            var productsRepository = new Repository <Product>(db);

            var product = new Product {
                Name = "Test PP", ManufacturerId = 1, Price = 9.99m
            };
            var id = productsRepository.Create(product);

            product.Price = 19m;
            productsRepository.Update(product);

            var productAfterChanges = productsRepository.Get(id);

            Console.WriteLine($"Id: {productAfterChanges.Id}, " +
                              $"Name: {productAfterChanges.Name}, " +
                              $"Price: {productAfterChanges.Price}");

            var productToDelete = new Product {
                Name = "Test PP 2", ManufacturerId = 1, Price = 9.99m
            };
            var idToDelete        = productsRepository.Create(productToDelete);
            var countBeforeDelete = productsRepository.Get().Count();

            productsRepository.Delete(idToDelete);
            var countAfter = productsRepository.Get().Count();

            Console.WriteLine($"Before: {countBeforeDelete}, after: {countAfter}");
        }
コード例 #5
0
        private static void ImportXMLToSqlServer()
        {
            Console.WriteLine("Importing Data from Xml to Sql Server...");
            var db = new FactoryDbContext();

            var collection = FactoryXmlImporter.ImportSpaceships(Constants.XmlDataToImport);

            foreach (var spaceship in collection)
            {
                var sp = new SpaceshipMission
                {
                    SpaceshipName       = spaceship.SpaceshipName,
                    Captain             = spaceship.Captain,
                    HomePlanet          = spaceship.HomePlanet,
                    NumberOfCrewMembers = spaceship.NumberOfCrewMembers,
                    MissionType         = spaceship.MissionType,
                    Commision           = spaceship.Commission,
                    MissionStatus       = spaceship.MissionStatus
                };

                db.SpaceshipMissions.Add(sp);

                db.SaveChanges();
                db = new FactoryDbContext();
            }

            db.SaveChanges();
        }
コード例 #6
0
        private static void Init()
        {
            var serviceCollection = new ServiceCollection();

            serviceCollection.AddLogging(builder => builder.AddSerilog());
            var serviceProvider = serviceCollection.BuildServiceProvider();

            Log.Logger = new LoggerConfiguration()
                         .Enrich.FromLogContext()
                         .WriteTo.Console()
                         .CreateLogger();

            var loggerFactory = serviceProvider.GetService <ILoggerFactory>();

            FactoryApplication.SetLoggerFactory(loggerFactory);

            FactoryBusinessOperation.ClearRegisteredItems();
            FactoryBusinessOperation.RegisterBusinessOperations(BusinessErpOperations.GetInstance().ExportedServicesList());

            string       host     = Environment.GetEnvironmentVariable("ONIX_ERP_DB_HOST");
            string       dbname   = Environment.GetEnvironmentVariable("ONIX_ERP_DB_NAME");
            string       user     = Environment.GetEnvironmentVariable("ONIX_ERP_DB_USER");
            string       password = Environment.GetEnvironmentVariable("ONIX_ERP_DB_PASSWORD");
            DbCredential crd      = new DbCredential(host, 5432, dbname, user, password, "pgsql");

            OnixErpDbContext ctx = new OnixErpDbContext(crd);

            ctx.SetLoggerFactory(loggerFactory);
            FactoryBusinessOperation.SetDatabaseContext(ctx);
            FactoryBusinessOperation.SetLoggerFactory(loggerFactory);

            Assembly asm = Assembly.GetExecutingAssembly();

            FactoryDbContext.RegisterDbContext(asm, "OnixErpDbContextPgSql", "OnixBusinessErpApp.OnixErpDbContextPgSql");
        }
コード例 #7
0
        private static void GeneratePDFReport(FactoryDbContext context, string resultFilePath)
        {
            Console.WriteLine("Generating Pdf Reports...");
            var salesReports = context.Reports.OrderBy(r => r.Date).ToList();
            var pdfWriter    = new PdfReportsWriter(salesReports);

            pdfWriter.WriteAggregatedSalesReportsToPdf(resultFilePath);
        }
        public static void Execute()
        {
            var manager = DocumentManagerProvider.Get() as SharepointDocumentManager;

            if (manager != null && manager.SharepointUseInternalTagFolder)
            {
                using (var db = FactoryDbContext.Create())
                {
                    var sql = @"WITH Folders (Id, Name, FullPath, EntityId, ReferenceId, InternalTag, IsProcessed, Level)
                                AS
                                (
                                    SELECT F.Id, F.Name, F.FullPath, EF.EntityId, EF.ReferenceId, CAST(InternalId AS NVARCHAR(MAX)) AS InternalTag, EF.IsProcessed, 0 AS Level
                                    FROM Folder F
                                    INNER JOIN EntityFolder EF ON F.Id = EF.Id
                                    WHERE F.ParentId IS NULL
                                    UNION ALL
                                    SELECT F.Id, F.Name, F.FullPath, EF.EntityId, EF.ReferenceId, CAST(F.InternalId AS NVARCHAR(MAX)) AS InternalTag, EF.IsProcessed, P.Level + 1
                                    FROM Folder F
                                    INNER JOIN Folders P ON F.ParentId = P.Id
                                    INNER JOIN EntityFolder EF ON F.Id = EF.Id
                                )
                                SELECT Id, Name, FullPath, EntityId, ReferenceId, InternalTag AS Tag, IsProcessed
                                FROM Folders
                                ORDER BY EntityId, ReferenceId, Level DESC;";

                    var folders = db.Database.SqlQuery <FolderImport>(sql).ToList().Where(x => !x.IsProcessed).ToList();
                    var errors  = new List <string>();
                    var i       = 0;
                    var count   = folders.Count;

                    folders.ForEach(folder =>
                    {
                        try
                        {
                            manager.RenameFolder(folder.EntityId, folder.ReferenceId, folder.Tag, folder.Name, folder.FullPath.HasValue() ? folder.FullPath : folder.Name, db);
                            db.Database.ExecuteSqlCommand("UPDATE EntityFolder SET IsProcessed = 1 WHERE Id = {0}", folder.Id);
                            i++;
                        }
                        catch (Exception ex)
                        {
                            errors.Add(string.Format("Id: {0}; Name: {1}; FullPath: {2}", folder.Id, folder.Name, folder.FullPath) + Environment.NewLine + ex.Message);

                            Console.WriteLine(ex.Message);
                        }
                    });

                    if (errors.HasValue())
                    {
                        var message = errors.JoinBy(Environment.NewLine);

                        MailUtilities.SendMail(new List <string>()
                        {
                            ConfigurationManager.AppSettings["AlertRecipient"]
                        }, "ERROR Rename Folder SharePoint", message);
                    }
                }
            }
        }
コード例 #9
0
        private static void GenerateXMLReport(FactoryDbContext context, string resultFilePath)
        {
            Console.WriteLine("Generating Xml Reports...");
            var shipModels = context.Spaceships.Select(sh => sh.Model).ToList();
            var reports    = context.Reports.OrderBy(r => r.Date).ToList();
            var xmlWriter  = new XmlReportsWriter(shipModels, reports);

            xmlWriter.WriteReportsToXml(resultFilePath);
        }
コード例 #10
0
        private static void GenerateJSONReports(FactoryDbContext context, string resultFilesPath)
        {
            Console.WriteLine("Generating Json Reports...");
            var spaceships = context.Spaceships.ToList();
            var sales      = context.Sales.ToList();
            var reports    = new List <ProductReport>();
            var jsonWriter = new JsonReportsHandler(spaceships, sales, reports);

            jsonWriter.WriteReportsToJson(resultFilesPath);
        }
コード例 #11
0
        public void Setup()
        {
            var builder = new DbContextOptionsBuilder <FactoryDbContext>();

            builder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var options = builder.Options;

            _db = new FactoryDbContext(options);
            _manufacturersRepository = new ManufacturersRepository(_db);
        }
コード例 #12
0
        private static void Init()
        {
            var container = UnityContainerProvider.Initialize();

            ModuleLoader.Initialize(container);
            var catalog = new ModuleCatalog();

            container.RegisterInstance <IModuleCatalog>(catalog, new ContainerControlledLifetimeManager());
            ModuleLoader.Run(container);

            FactoryDbContext.InitDatabase(false);
        }
コード例 #13
0
ファイル: Cache.cs プロジェクト: Coolkaru-can/DocumentImport
        public static Guid GetProjectProgramId(string programName)
        {
            if (_programs == null)
            {
                _programs = new Dictionary <string, Guid>();
                using (var context = FactoryDbContext.Create())
                {
                    var program = context.Lookups.Include("Items.Descriptions").Where(x => x.Tag == "LST_PROJECT_PROGRAM").FirstOrDefault();

                    if (program != null)
                    {
                        _programs = program.Items.Select(x => new { x.Id, x.Descriptions.First(d => d.CultureId == Constants.Culture.Francais).Text }).ToDictionary(x => x.Text, x => x.Id);
                    }
                }
            }

            return(_programs.First(x => x.Key.ToUpper().Contains(programName.ToUpper())).Value);
        }
コード例 #14
0
        private static void PopulateMySQLDataBase(FactoryDbContext sqlContext, FactoryMySqlDbContext mySqlContext)
        {
            Console.WriteLine("Populating MySql Database...");
            var spaceships  = sqlContext.Spaceships.ToList();
            var sales       = sqlContext.Sales.ToList();
            var reports     = new List <ProductReport>();
            var jsonHandler = new JsonReportsHandler(spaceships, sales, reports);
            var jsonData    = jsonHandler.GetReportsInJsonFormat();

            if (mySqlContext.ProductsReports.Count() == 0)
            {
                foreach (var json in jsonData)
                {
                    var report = JsonConvert.DeserializeObject <MySqlReport>(json);
                    mySqlContext.Add(report);
                }

                mySqlContext.SaveChanges();
            }
        }
コード例 #15
0
        private void UpdateProjectProgram(Guid projectId, string programName)
        {
            var projectNeedsToBeUpdated = false;
            var programId = Cache.GetProjectProgramId(programName);

            using (var context = FactoryDbContext.Create())
            {
                projectNeedsToBeUpdated = context.Projects.Any(x => x.Id == projectId && x.ProgramId != programId);
            }

            if (projectNeedsToBeUpdated)
            {
                var project = Project.Get(projectId);

                project.ProgramId          = programId;
                project.CurrentUserId      = Constants.User.Admin;
                project.IsModifiedByImport = true;
                project.Save();
                CLLogger.LogVerbose(string.Format("The project '{0}' program as been updated to '{1}'", project.Name, programName));
                project = null;
            }
        }
コード例 #16
0
 public BackUpServiceDB(FactoryDbContext context)
 {
     this.context = context;
 }
コード例 #17
0
 public ReportServiceDB(FactoryDbContext context)
 {
     this.context = context;
 }
コード例 #18
0
ファイル: TankRepository.cs プロジェクト: RateRouz/Web_API
 public TankRepository(FactoryDbContext context)
 {
     this._context = context;
 }
コード例 #19
0
        private void ProcessFile(FileInfo file, Guid projectId, string comboxPath)
        {
            CLLogger.LogVerbose(string.Format("The file '{0}' --> '{2}' will be associated to project '{1}'", file.FullName.Substring(_rootFolder.Length), Cache.GetProjectName(projectId), comboxPath));
            totalSize += (file.Length * 1d) / 1024 / 1024;

            var  cleanPath = comboxPath.TrimEnd('\\').Split('\\');
            Guid?folderId  = null;

            using (var context = FactoryDbContext.Create())
            {
                for (var i = 0; i < cleanPath.Length; i++)
                {
                    var currentFolder    = CleanStringForWeb(cleanPath[i]);
                    var existingFolderId = context.EntityFolders.Where(x => x.ReferenceId == projectId && x.ParentId == folderId && x.Name == currentFolder).Select(x => x.Id).FirstOrDefault();

                    if (existingFolderId == Guid.Empty)
                    {
                        var folder = EntityFolder.New();
                        folder.CurrentUserId = Constants.User.Admin;
                        folder.Id            = Guid.NewGuid();
                        folder.EntityId      = Constants.EntityType.Project;
                        folder.ReferenceId   = projectId;
                        folder.ParentId      = folderId;
                        folder.Name          = currentFolder;
                        folder.Save();

                        folderId = folder.Id;
                    }
                    else
                    {
                        folderId = existingFolderId;
                    }
                }
            }

            var document = Document.New();

            document.ReferenceId     = projectId;
            document.EntityId        = Constants.EntityType.Project;
            document.CurrentUserId   = Constants.User.Admin;
            document.CreatedOn       = DateTime.Now;
            document.LastUpdatedOn   = DateTime.Now;
            document.CreatedById     = Constants.User.Admin;
            document.LastUpdatedById = Constants.User.Admin;
            document.Id              = Guid.NewGuid();
            document.FolderId        = folderId;
            document.DocumentTypeId  = LookupServices.GetLookupItemIdFromTag("LST_DOCUMENT_TYPE_NOT_CLASSIFIED");
            document.Filename        = CleanStringForWeb(file.Name).Replace("..", ".");
            document.FileExtension   = file.Extension;
            document.FileContentType = ContentTypes.GetContentTypeFromFileExtension(document.FileExtension);

            try
            {
                using (var stream = file.OpenRead())
                {
                    document.Insert <JMSL.Framework.DAL.Entities.Document, Document>(DocumentManagerProvider.Get(),
                                                                                     new TransferDocument()
                    {
                        FileName       = document.Filename,
                        FileLength     = file.Length,
                        FileByteStream = stream
                    });
                }
            }
            catch (Exception ex)
            {
                CLLogger.LogError(ex);
            }
        }
コード例 #20
0
ファイル: UnitRepository.cs プロジェクト: RateRouz/Web_API
 public UnitRepository(FactoryDbContext context)
 {
     this._context = context;
 }
コード例 #21
0
        public ICollection <Spaceship> GetProductData(ICollection <SpaceshipMap> maps, FactoryDbContext context)
        {
            var categories = this.GetCategories(maps);

            context.Categories.AddRange(categories);
            context.SaveChanges();

            var countries = this.GetCountries(maps);

            context.Countries.AddRange(countries);
            context.SaveChanges();

            var cities = this.GetCities(maps, context.Countries);

            context.Cities.AddRange(cities);
            context.SaveChanges();

            var partTypes = this.GetPartTypes(maps);

            context.PartTypes.AddRange(partTypes);
            context.SaveChanges();

            var suppliers = this.GetSuppliers(maps, context.Cities);

            context.Suppliers.AddRange(suppliers);
            context.SaveChanges();

            var parts = this.GetParts(maps, context.Suppliers, context.PartTypes).ToList();

            context.Parts.AddRange(parts);
            context.SaveChanges();

            var products = new Collection <Spaceship>();

            foreach (var spaceshipMap in maps)
            {
                var existingParts = spaceshipMap.Parts.Select(x => new
                {
                    Supplier = x.Supplier.Name,
                    x.Name,
                    Part  = x.PartType.Name,
                    Price = (decimal)x.Price,
                    x.Quantity
                });

                var spaceshipParts = context.Parts
                                     .ToList()
                                     .Select(x => new
                {
                    Supplier = x.Supplier.Name,
                    x.Name,
                    Part = x.PartType.Name,
                    x.Price,
                    x.Quantity
                })
                                     .Where(x => existingParts.Contains(x))
                                     .Select(x => x.Name);

                var currentShipParts = context.Parts.Where(x => spaceshipParts.Contains(x.Name)).ToList();

                var spaceship = new Spaceship
                {
                    Category = context.Categories.FirstOrDefault(x => x.Name.Equals(spaceshipMap.Category)),
                    Color    = spaceshipMap.Color,
                    Model    = spaceshipMap.Model,
                    Price    = (decimal)spaceshipMap.Price,
                    Year     = spaceshipMap.Year,
                    Parts    = currentShipParts
                };

                products.Add(spaceship);
            }


            return(products);
        }
コード例 #22
0
 private static void PopulateSQLDbWithProducts(IEnumerable <Spaceship> productData, FactoryDbContext context)
 {
     Console.WriteLine("Populating Sql Database with Models...");
     context.Spaceships.AddRange(productData);
     context.SaveChanges();
 }
コード例 #23
0
 public OrderServiceDB(FactoryDbContext context)
 {
     this.context = context;
 }
コード例 #24
0
 public ProductServiceDB(FactoryDbContext context)
 {
     this.context = context;
 }
コード例 #25
0
 public ClientMainServiceDB(FactoryDbContext context)
 {
     this.context = context;
 }
コード例 #26
0
 public AuthRepository(FactoryDbContext context, IConfiguration config)
 {
     _config  = config;
     _context = context;
 }
コード例 #27
0
 public MaterialServiceDB(FactoryDbContext context)
 {
     this.context = context;
 }
コード例 #28
0
 private static void PopulateSqlDbWithReports(IEnumerable <Report> reportsForSql, FactoryDbContext context)
 {
     Console.WriteLine("Populating Sql Database with Reports...");
     context.Reports.AddRange(reportsForSql);
     context.SaveChanges();
 }
コード例 #29
0
 public GlobalFactoryService(FactoryDbContext context)
 {
     _context = context;
 }
コード例 #30
0
 public ProductRepository(FactoryDbContext db)
 {
     this.db = db;
 }