public void Before_each_test()
            {
                //ServicesRepository servicesRepository = new ServicesRepository(new ScutexEntities());
                //CommonRepository commonRepository = new CommonRepository(new ScutexServiceEntities());

                AsymmetricEncryptionProvider asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                SymmetricEncryptionProvider symmetricEncryptionProvider = new SymmetricEncryptionProvider();
                ObjectSerializationProvider objectSerializationProvider = new ObjectSerializationProvider();
                NumberDataGenerator numberDataGenerator = new NumberDataGenerator();
                PackingService packingService = new PackingService(numberDataGenerator);
                MasterService masterService = new MasterService(commonRepository);

                CommonService commonService = new CommonService();
                KeyPairService keyPairService = new KeyPairService(commonService, commonRepository);

                ServiceStatusProvider serviceStatusProvider = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);
                servicesService = new ServicesService(servicesRepository, serviceStatusProvider, packingService, null, null, null, null, null, null);

                controlService = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider);

                service = new Scutex.Model.Service();
                service.OutboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
                service.InboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
                service.ManagementInboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
                service.ManagementOutboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
            }
 public List <ContainerPackingResult> Post([FromBody] ContainerPackingRequest request)
 {
     return(PackingService.Pack(request.Containers, request.ItemsToPack, new List <int>()
     {
         1
     }));                                                                                                   //request.AlgorithmTypeIDs
 }
示例#3
0
        public static void HashTokenWithSalt()
        {
            HashingProvider provider = new HashingProvider();

            Console.WriteLine(provider.ComputeHashWithSalt("b$7SDt%43J*a!9", "SHA256", null));

            PackingService service = new PackingService(new NumberDataGenerator());
            Token          t       = new Token();

            t.Data      = "MXLBEcLe6/i1CjdyomC7T0vTlACTXpdRmnxcDXDE8yDuCal0xA==";
            t.Timestamp = DateTime.Now;

            Console.WriteLine(service.PackToken(t));

            SymmetricEncryptionProvider encryption = new SymmetricEncryptionProvider();
            EncryptionInfo ei = new EncryptionInfo();

            ei.HashAlgorithm = "SHA1";
            ei.InitVector    = "a01JQ3481Ahnqwe9";
            ei.Iterations    = 2;
            ei.KeySize       = 256;
            ei.PassPhrase    = "Da*eW6_EzU4_swuk8*hU";
            ei.SaltValue     = "VuW9uDrE";

            Console.WriteLine(encryption.Encrypt("861641072009MXLBEcLe6/i1CjdyomC7T0vTlACTXpdRmnxcDXDE8yDuCal0xA==41410860", ei));

            Console.WriteLine();
            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();
        }
        private static void PackAndAssert(string[] containerDims, List <Item> itemsToPack, string[] testResults)
        {
            List <Container> containers = new List <Container>();

            containers.Add(new Container(0, Convert.ToDecimal(containerDims[0]), Convert.ToDecimal(containerDims[1]),
                                         Convert.ToDecimal(containerDims[2])));

            List <ContainerPackingResult> result =
                PackingService.Pack(containers, itemsToPack, new List <int> {
                (int)AlgorithmType.EB_AFIT
            });

            // Assert that the number of items we tried to pack equals the number stated in the published reference.
            Assert.AreEqual(
                result[0].AlgorithmPackingResults[0].PackedItems.Count +
                result[0].AlgorithmPackingResults[0].UnpackedItems.Count, Convert.ToDecimal(testResults[1]));

            // Assert that the number of items successfully packed equals the number stated in the published reference.
            Assert.AreEqual(result[0].AlgorithmPackingResults[0].PackedItems.Count, Convert.ToDecimal(testResults[2]));

            // Assert that the packed container volume percentage is equal to the published reference result.
            // Make an exception for a couple of tests where this algorithm yields 87.20% and the published result
            // was 87.21% (acceptable rounding error).
            Assert.IsTrue(
                result[0].AlgorithmPackingResults[0].PercentContainerVolumePacked == Convert.ToDecimal(testResults[3]) ||
                (result[0].AlgorithmPackingResults[0].PercentContainerVolumePacked == 87.20M &&
                 Convert.ToDecimal(testResults[3]) == 87.21M));

            // Assert that the packed item volume percentage is equal to the published reference result.
            Assert.AreEqual(result[0].AlgorithmPackingResults[0].PercentItemVolumePacked, Convert.ToDecimal(testResults[4]));
        }
            public void Before_each_test()
            {
                //ServicesRepository servicesRepository = new ServicesRepository(new ScutexEntities());
                //CommonRepository commonRepository = new CommonRepository(new ScutexServiceEntities());

                AsymmetricEncryptionProvider asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                SymmetricEncryptionProvider  symmetricEncryptionProvider  = new SymmetricEncryptionProvider();
                ObjectSerializationProvider  objectSerializationProvider  = new ObjectSerializationProvider();
                NumberDataGenerator          numberDataGenerator          = new NumberDataGenerator();
                PackingService packingService = new PackingService(numberDataGenerator);
                MasterService  masterService  = new MasterService(commonRepository);

                CommonService  commonService  = new CommonService();
                KeyPairService keyPairService = new KeyPairService(commonService, commonRepository);

                ServiceStatusProvider serviceStatusProvider = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);

                servicesService = new ServicesService(servicesRepository, serviceStatusProvider, packingService, null, null, null, null, null, null);


                controlService = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider);

                service = new Scutex.Model.Service();
                service.OutboundKeyPair           = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
                service.InboundKeyPair            = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
                service.ManagementInboundKeyPair  = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
                service.ManagementOutboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);
            }
示例#6
0
        public FoxlinkSfcController()
        {
            var unitOfWork = new UnitOfWork();

            packService = new PackingService(unitOfWork);
            smtService  = new SMTService(unitOfWork);
            testService = new TestService(unitOfWork);
        }
        public override void Export(IDocumentComponent docs, string destDirFullPath)
        {
            this.exporter.Export(docs, destDirFullPath);

            var packingService = new PackingService();

            packingService.Pack(destDirFullPath, docs.Name);
        }
            public void Before_each_test()
            {
                clientLicenseRepoistory = new ClientLicenseRepository(objectSerializationProvider, symmetricEncryptionProvider);
                clientLicenseService = new ClientLicenseService(clientLicenseRepoistory);
                serviceProductsRepository = new ServiceProductsRepository(new ScutexServiceEntities());
                symmetricEncryptionProvider = new SymmetricEncryptionProvider();
                asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                hashingProvider = new HashingProvider();
                objectSerializationProvider = new ObjectSerializationProvider();
                numberDataGenerator = new NumberDataGenerator();
                packingService = new PackingService(numberDataGenerator);
                commonRepository = new CommonRepository(new ScutexServiceEntities());
                clientRepository = new ClientRepository(new ScutexServiceEntities());
                keyGenerator = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
                masterService = new MasterService(commonRepository);
                activationLogRepository = new ActivationLogRepoistory(new ScutexServiceEntities());

                activationLogService = new ActivationLogService(activationLogRepository, hashingProvider);
                keyService = new KeyManagementService(clientRepository, licenseKeyService, activationLogService, hashingProvider, serviceProductsRepository);
                commonService = new CommonService();

                string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
                path = path.Replace("file:\\", "");

                var mockCommonService = new Mock<ICommonService>();
                mockCommonService.Setup(common => common.GetPath()).Returns(path + "\\Data\\Client\\");

                string masterServiceDataText;

                using (TextReader reader = new StreamReader(path + "\\Data\\MasterService.dat"))
                {
                    masterServiceDataText = reader.ReadToEnd().Trim();
                }

                masterServiceData = objectSerializationProvider.Deserialize<MasterServiceData>(masterServiceDataText);

                var mockCommonRepository = new Mock<ICommonRepository>();
                mockCommonRepository.Setup(repo => repo.GetMasterServiceData()).Returns(masterServiceData);

                keyPairService = new KeyPairService(mockCommonService.Object, mockCommonRepository.Object);
                controlService = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider);
                servicesRepository = new ServicesRepository(new ScutexEntities());
                serviceStatusProvider = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);
                licenseActiviationProvider = new LicenseActiviationProvider(asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
                servicesService = new ServicesService(servicesRepository, serviceStatusProvider, packingService, licenseActiviationProvider, null, null, null, null, null);
                licenseKeyService = new LicenseKeyService(keyGenerator, packingService, clientLicenseService);
                activationService = new ActivationService(controlService, keyService, keyPairService, objectSerializationProvider, asymmetricEncryptionProvider, null, null);

                string serviceData;

                using (TextReader reader = new StreamReader(path + "\\Data\\Service.dat"))
                {
                    serviceData = reader.ReadToEnd().Trim();
                }

                service = objectSerializationProvider.Deserialize<Service>(serviceData);
            }
示例#9
0
        public static void BatchSmallLicenseKeyGenrationTest()
        {
            IAsymmetricEncryptionProvider asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
            ISymmetricEncryptionProvider  symmetricEncryptionProvider  = new SymmetricEncryptionProvider();
            IHashingProvider             hashingProvider             = new HashingProvider();
            IObjectSerializationProvider objectSerializationProvider = new ObjectSerializationProvider();
            ILicenseActiviationProvider  licenseActiviationProvider  = new LicenseActiviationProvider(
                asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
            INumberDataGeneratorProvider numberDataGeneratorProvider = new NumberDataGenerator();
            IPackingService             packingService             = new PackingService(numberDataGeneratorProvider);
            IHardwareFingerprintService hardwareFingerprintService = new HardwareFingerprintService(new WmiDataProvider(), hashingProvider);

            IClientLicenseRepository clientLicenseRepository = new ClientLicenseRepository(objectSerializationProvider,
                                                                                           symmetricEncryptionProvider);
            IClientLicenseService clientLicenseService = new ClientLicenseService(clientLicenseRepository);

            ISmallKeyGenerator smallKeyGenerator       = new WaveTech.Scutex.Generators.StaticKeyGeneratorSmall.KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
            ILargeKeyGenerator staticKeyGeneratorLarge = new WaveTech.Scutex.Generators.StaticKeyGeneratorLarge.KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider, hardwareFingerprintService);
            LicenseKeyService  licenseKeyService       = new LicenseKeyService(smallKeyGenerator, staticKeyGeneratorLarge, packingService, clientLicenseService);

            ClientLicense            license           = new ClientLicense();
            LicenseGenerationOptions generationOptions = new LicenseGenerationOptions();

            license.UniqueId          = Guid.NewGuid();
            license.Product           = new Product();
            license.Product.Name      = "My Great Uber Cool Product, with new juice!";
            license.Product.ProductId = 1;
            string productHash = hashingProvider.Checksum32(license.GetLicenseProductIdentifier()).ToString("X");

            DateTime start = DateTime.Now;

            List <string> licenseKeys = licenseKeyService.GenerateLicenseKeys("TEST", license, generationOptions, 100000);
            Dictionary <string, string> doubleCheck = new Dictionary <string, string>();


            DateTime end = DateTime.Now;

            foreach (string s in licenseKeys)
            {
                doubleCheck.Add(s, "");
                Console.WriteLine(s);
            }

            Console.WriteLine();
            Console.WriteLine("=================================");

            Console.WriteLine(string.Format("Key Generation took {0}", end - start));
            Console.WriteLine(string.Format("Generated {0} unique license keys", licenseKeys.Count));

            Console.WriteLine();
            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();
        }
示例#10
0
        static void Main(string[] args)
        {
            var container   = new Container(1, 300, 200, 100);
            var itemsToPack = new List <Item>()
            {
                new Item(1, 150, 100, 50, 1),
            };

            var result = PackingService.Pack(container, itemsToPack);

            PackingService.RenderPackingResult(container, result);
        }
示例#11
0
        public void calcular(List <produto> produtos)
        {
            using (Entities ef = new Entities())
            {
                List <pacote>       pacotes    = ef.pacotes.ToList();
                List <BinContainer> containers = new List <BinContainer>();
                List <Item>         items      = new List <Item>();

                List <int> algorithms = new List <int>();
                algorithms.Add((int)AlgorithmType.EB_AFIT);

                foreach (pacote item in pacotes)
                {
                    containers.Add(new BinContainer(item.PAid, item.PAprofundidade, item.PAlargura, item.PAaltura));
                }

                foreach (produto produto in produtos)
                {
                    items.Add(new Item(produto.PRid, produto.PRprofundidade, produto.PRlargura, produto.PRaltura, Convert.ToInt32(produto.PRquantidade)));
                }

                List <ContainerPackingResult> result = PackingService.Pack(containers, items, algorithms);

                List <ItemTabelaResultado> resultado = new List <ItemTabelaResultado>();

                foreach (ContainerPackingResult container in result)
                {
                    pacote pct = ef.pacotes.Find(container.ContainerID);
                    ItemTabelaResultado tblItem = new ItemTabelaResultado(pct.PAtipo);

                    foreach (AlgorithmPackingResult algResult in container.AlgorithmPackingResults)
                    {
                        foreach (Item altItem in algResult.PackedItems)
                        {
                            if (altItem.IsPacked)
                            {
                                produto p = ef.produtos.Find(altItem.ID);
                                tblItem.produtos = tblItem.produtos + p.PRnome + Environment.NewLine;
                            }
                        }
                    }

                    resultado.Add(tblItem);
                }

                dgvResultado.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
                dgvResultado.Columns[1].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
                dgvResultado.DataSource = resultado;
            }
        }
示例#12
0
        public static void LicenseKeyGenerationTest()
        {
            IAsymmetricEncryptionProvider asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
            ISymmetricEncryptionProvider  symmetricEncryptionProvider  = new SymmetricEncryptionProvider();
            IHashingProvider             hashingProvider             = new HashingProvider();
            IObjectSerializationProvider objectSerializationProvider = new ObjectSerializationProvider();
            ILicenseActiviationProvider  licenseActiviationProvider  = new LicenseActiviationProvider(
                asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
            INumberDataGeneratorProvider numberDataGeneratorProvider = new NumberDataGenerator();
            IPackingService             packingService             = new PackingService(numberDataGeneratorProvider);
            IHardwareFingerprintService hardwareFingerprintService = new HardwareFingerprintService(new WmiDataProvider(), hashingProvider);

            IClientLicenseRepository clientLicenseRepository = new ClientLicenseRepository(objectSerializationProvider,
                                                                                           symmetricEncryptionProvider);
            IClientLicenseService clientLicenseService = new ClientLicenseService(clientLicenseRepository);

            KeyGenerator       staticKeyGenerator      = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
            ILargeKeyGenerator staticKeyGeneratorLarge = new WaveTech.Scutex.Generators.StaticKeyGeneratorLarge.KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider, hardwareFingerprintService);
            LicenseKeyService  licenseKeyService       = new LicenseKeyService(staticKeyGenerator, staticKeyGeneratorLarge, packingService, clientLicenseService);

            ClientLicense            license           = new ClientLicense();
            LicenseGenerationOptions generationOptions = new LicenseGenerationOptions();

            license.UniqueId = Guid.NewGuid();

            license.Product           = new Product();
            license.Product.Name      = "My Great Uber Cool Product, with new juice!";
            license.Product.ProductId = 1;

            string productHash = hashingProvider.Checksum32(license.GetLicenseProductIdentifier()).ToString("X");

            Dictionary <string, string> licenseKeys = new Dictionary <string, string>();

            DateTime start = DateTime.Now;

            for (int i = 0; i < 100000; i++)
            {
                string key = licenseKeyService.GenerateLicenseKey("TEST", license, generationOptions);
                licenseKeys.Add(key, key.GetHashCode().ToString());
                Console.WriteLine(key);
            }
            DateTime end = DateTime.Now;

            Console.WriteLine(start - end);
        }
示例#13
0
        public void CanPackAndUnpackToken()
        {
            NumberDataGenerator numberDataGenerator = new NumberDataGenerator();
            PackingService      packingService      = new PackingService(numberDataGenerator);

            Token t = new Token();

            t.Data      = tokenData;
            t.Timestamp = DateTime.Now;

            string packedToken   = packingService.PackToken(t);
            Token  unpackedToken = packingService.UnpackToken(packedToken);

            Assert.AreEqual(tokenData, unpackedToken.Data);
            Assert.AreEqual(t.Timestamp.Day, unpackedToken.Timestamp.Day);
            Assert.AreEqual(t.Timestamp.Month, unpackedToken.Timestamp.Month);
            Assert.AreEqual(t.Timestamp.Year, unpackedToken.Timestamp.Year);
            Assert.AreEqual(t.Timestamp.Hour, unpackedToken.Timestamp.Hour);
            Assert.AreEqual(t.Timestamp.Minute, unpackedToken.Timestamp.Minute);
        }
示例#14
0
        public void TestLicenseKeyHashing()
        {
            IAsymmetricEncryptionProvider asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
            ISymmetricEncryptionProvider  symmetricEncryptionProvider  = new SymmetricEncryptionProvider();
            IHashingProvider             hashingProvider             = new HashingProvider();
            IObjectSerializationProvider objectSerializationProvider = new ObjectSerializationProvider();
            ILicenseActiviationProvider  licenseActiviationProvider  = new LicenseActiviationProvider(
                asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
            INumberDataGeneratorProvider numberDataGeneratorProvider = new NumberDataGenerator();
            IHardwareFingerprintService  hardwareFingerprintService  = new HardwareFingerprintService(new WmiDataProvider(), new HashingProvider());
            IPackingService          packingService          = new PackingService(numberDataGeneratorProvider);
            IClientLicenseRepository clientLicenseRepository = new ClientLicenseRepository(objectSerializationProvider,
                                                                                           symmetricEncryptionProvider);
            IClientLicenseService clientLicenseService = new ClientLicenseService(clientLicenseRepository);

            ILargeKeyGenerator largeKeyGenerator = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider, hardwareFingerprintService);
            ISmallKeyGenerator smallKeyGenerator = new WaveTech.Scutex.Generators.StaticKeyGeneratorSmall.KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
            LicenseKeyService  licenseKeyService = new LicenseKeyService(smallKeyGenerator, largeKeyGenerator, packingService, clientLicenseService);

            ClientLicense            license           = new ClientLicense();
            LicenseGenerationOptions generationOptions = new LicenseGenerationOptions();

            license.UniqueId          = Guid.NewGuid();
            license.Product           = new Product();
            license.Product.Name      = "My Great Uber Cool Product, with new juice!";
            license.Product.ProductId = 1;
            string productHash = hashingProvider.Checksum32(license.GetLicenseProductIdentifier()).ToString("X");

            Dictionary <string, string> licenseKeys = new Dictionary <string, string>();
            List <string> keys = licenseKeyService.GenerateLicenseKeys("TEST", license, generationOptions, 100000);

            foreach (string key in keys)
            {
                string hash = hashingProvider.ComputeHash(key, "SHA256");
                licenseKeys.Add(hash, key);
                Console.WriteLine(key + "\t" + hash);

                Assert.IsTrue(hash.Equals(hashingProvider.ComputeHash(key, "SHA256")));
                Assert.IsFalse(hash.Contains("'"));
            }
        }
示例#15
0
            public void Before_each_test()
            {
                asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                hashingProvider = new HashingProvider();
                objectSerializationProvider = new ObjectSerializationProvider();
                numberDataGenerator = new NumberDataGenerator();
                packingService = new PackingService(numberDataGenerator);
                servicesService = new ServicesService(null, null, packingService, null, null, null, null, null, null);

                string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
                path = path.Replace("file:\\", "");

                string serviceData;

                using (TextReader reader = new StreamReader(path + "\\Data\\Service.dat"))
                {
                    serviceData = reader.ReadToEnd().Trim();
                }

                service = objectSerializationProvider.Deserialize<Service>(serviceData);
            }
示例#16
0
            public void Before_each_test()
            {
                asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                hashingProvider             = new HashingProvider();
                objectSerializationProvider = new ObjectSerializationProvider();
                numberDataGenerator         = new NumberDataGenerator();
                packingService  = new PackingService(numberDataGenerator);
                servicesService = new ServicesService(null, null, packingService, null, null, null, null, null, null);

                string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);

                path = path.Replace("file:\\", "");

                string serviceData;

                using (TextReader reader = new StreamReader(path + "\\Data\\Service.dat"))
                {
                    serviceData = reader.ReadToEnd().Trim();
                }

                service = objectSerializationProvider.Deserialize <Service>(serviceData);
            }
示例#17
0
        public LicenseHelper()
        {
            asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
            hashingProvider             = new HashingProvider();
            encodingService             = new EncodingService();
            objectSerializationProvider = new ObjectSerializationProvider();
            symmetricEncryptionProvider = new SymmetricEncryptionProvider();
            clientLicenseRepository     = new ClientLicenseRepository(objectSerializationProvider, symmetricEncryptionProvider);
            clientLicenseService        = new ClientLicenseService(clientLicenseRepository);
            serviceStatusProvider       = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);
            numberDataGenerator         = new NumberDataGenerator();
            packingService             = new PackingService(numberDataGenerator);
            hardwareFingerprintService = new HardwareFingerprintService(new WmiDataProvider(), new HashingProvider());
            keygen            = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
            keyGeneratorLarge = new Scutex.Generators.StaticKeyGeneratorLarge.KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider, hardwareFingerprintService);

            licenseActiviationProvider = new LicenseActiviationProvider(asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
            service                = new LicenseKeyService(keygen, keyGeneratorLarge, packingService, clientLicenseService);
            productsProvider       = new ProductsProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);
            zipCompressionProvider = new ZipCompressionProvider();
            wcfPackagingService    = new WcfPackagingService(zipCompressionProvider);

            //licenseSetsRepository = new LicenseSetsRepository();

            //licenseSetService = new LicenseSetService();
            //licenseService = new LicenseService();

            License          = new License();
            License.Name     = "UnitTest License";
            License.UniqueId = Guid.NewGuid();
            License.KeyPair  = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High);

            //string path = System.Reflection.Assembly.GetAssembly(typeof(LicenseHelper)).Location;
            string path = Helper.AssemblyDirectory;

            DllHash   = encodingService.Encode(hashingProvider.HashFile(path + "\\WaveTech.Scutex.Licensing.dll"));
            PublicKey = encodingService.Encode(License.KeyPair.PublicKey);
        }
        public void EB_AFIT_Passes_700_Standard_Reference_Tests()
        {
            // ORLibrary.txt is an Embedded Resource in this project.
            var resourceName = "CromulentBisgetti.ContainerPackingTests.DataFiles.ORLibrary.txt";
            var assembly     = Assembly.GetExecutingAssembly();

            using (var stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (var reader = new StreamReader(stream))
                {
                    // Counter to control how many tests are run in dev.
                    var counter = 1;

                    while (reader.ReadLine() != null && counter <= 700)
                    {
                        var itemsToPack = new List <Item>();

                        // First line in each test case is an ID. Skip it.

                        // Second line states the results of the test, as reported in the EB-AFIT master's thesis, appendix E.
                        var testResults = reader.ReadLine().Split(' ');

                        // Third line defines the container dimensions.
                        var containerDims = reader.ReadLine().Split(' ');

                        // Fourth line states how many distinct item types we are packing.
                        var itemTypeCount = Convert.ToInt32(reader.ReadLine());

                        for (var i = 0; i < itemTypeCount; i++)
                        {
                            var itemArray = reader.ReadLine().Split(' ');

                            var item = new Item(0, Convert.ToDecimal(itemArray[1]), Convert.ToDecimal(itemArray[3]), Convert.ToDecimal(itemArray[5]), Convert.ToInt32(itemArray[7]));
                            itemsToPack.Add(item);
                        }

                        var containers = new List <Container>();
                        containers.Add(new Container(0, Convert.ToDecimal(containerDims[0]), Convert.ToDecimal(containerDims[1]), Convert.ToDecimal(containerDims[2])));

                        var result = PackingService.Pack(containers, itemsToPack, new List <Int32> {
                            (Int32)AlgorithmType.EB_AFIT
                        });

                        // Assert that the number of items we tried to pack equals the number stated in the published reference.
                        Assert.AreEqual(result[0].AlgorithmPackingResults[0].PackedItems.Count + result[0].AlgorithmPackingResults[0].UnpackedItems.Count, Convert.ToDecimal(testResults[1]));

                        // Assert that the number of items successfully packed equals the number stated in the published reference.
                        Assert.AreEqual(result[0].AlgorithmPackingResults[0].PackedItems.Count, Convert.ToDecimal(testResults[2]));

                        // Assert that the packed container volume percentage is equal to the published reference result.
                        // Make an exception for a couple of tests where this algorithm yields 87.20% and the published result
                        // was 87.21% (acceptable rounding error).
                        Assert.IsTrue(result[0].AlgorithmPackingResults[0].PercentContainerVolumePacked == Convert.ToDecimal(testResults[3]) ||
                                      (result[0].AlgorithmPackingResults[0].PercentContainerVolumePacked == 87.20M && Convert.ToDecimal(testResults[3]) == 87.21M));

                        // Assert that the packed item volume percentage is equal to the published reference result.
                        Assert.AreEqual(result[0].AlgorithmPackingResults[0].PercentItemVolumePacked, Convert.ToDecimal(testResults[4]));

                        counter++;
                    }
                }
            }
        }
            public void Before_each_test()
            {
                clientLicenseRepoistory      = new ClientLicenseRepository(objectSerializationProvider, symmetricEncryptionProvider);
                clientLicenseService         = new ClientLicenseService(clientLicenseRepoistory);
                serviceProductsRepository    = new ServiceProductsRepository(new ScutexServiceEntities());
                symmetricEncryptionProvider  = new SymmetricEncryptionProvider();
                asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                hashingProvider             = new HashingProvider();
                objectSerializationProvider = new ObjectSerializationProvider();
                numberDataGenerator         = new NumberDataGenerator();
                packingService             = new PackingService(numberDataGenerator);
                commonRepository           = new CommonRepository(new ScutexServiceEntities());
                clientRepository           = new ClientRepository(new ScutexServiceEntities());
                keyGenerator               = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
                masterService              = new MasterService(commonRepository);
                hardwareFingerprintService = new HardwareFingerprintService(new WmiDataProvider(), new HashingProvider());
                keyGeneratorLarge          = new Scutex.Generators.StaticKeyGeneratorLarge.KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider, hardwareFingerprintService);

                var mockActivationLogRepository = new Mock <IActivationLogRepoistory>();

                mockActivationLogRepository.Setup(log => log.SaveActivationLog(It.IsAny <Scutex.Model.ActivationLog>()));

                activationLogService = new ActivationLogService(mockActivationLogRepository.Object, hashingProvider);
                commonService        = new CommonService();

                string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);

                path = path.Replace("file:\\", "");

                var mockCommonService = new Mock <ICommonService>();

                mockCommonService.Setup(common => common.GetPath()).Returns(path + "\\Data\\Client\\");

                string masterServiceDataText;

                using (TextReader reader = new StreamReader(path + "\\Data\\MasterService.dat"))
                {
                    masterServiceDataText = reader.ReadToEnd().Trim();
                }

                masterServiceData = objectSerializationProvider.Deserialize <MasterServiceData>(masterServiceDataText);

                var mockCommonRepository = new Mock <ICommonRepository>();

                mockCommonRepository.Setup(repo => repo.GetMasterServiceData()).Returns(masterServiceData);

                masterService = new MasterService(mockCommonRepository.Object);

                keyPairService             = new KeyPairService(mockCommonService.Object, mockCommonRepository.Object);
                controlService             = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider);
                servicesRepository         = new ServicesRepository(new ScutexEntities());
                serviceStatusProvider      = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);
                licenseActiviationProvider = new LicenseActiviationProvider(asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
                servicesService            = new ServicesService(servicesRepository, serviceStatusProvider, packingService, licenseActiviationProvider, null, null, null, null, null);
                licenseKeyService          = new LicenseKeyService(keyGenerator, keyGeneratorLarge, packingService, clientLicenseService);
                keyService        = new KeyManagementService(clientRepository, licenseKeyService, activationLogService, hashingProvider, serviceProductsRepository);
                activationService = new ActivationService(controlService, keyService, keyPairService, objectSerializationProvider, asymmetricEncryptionProvider, activationLogService, masterService, commonService, null);

                string serviceData;

                using (TextReader reader = new StreamReader(path + "\\Data\\Service.dat"))
                {
                    serviceData = reader.ReadToEnd().Trim();
                }

                service = objectSerializationProvider.Deserialize <Service>(serviceData);
            }
示例#20
0
    /// <summary>
    /// Auto packing implementation. Reference: https://github.com/davidmchapman/3DContainerPacking
    /// </summary>
    public bool PackingItems()
    {
        //retrieve the container size
        Vector3 containerSize = m_MyCar.GetComponent <MyCar>().GetTrunkSize();

        //map the item id to the GameObject on the left-UI pane
        Dictionary <int, GameObject> UIItemMap = new Dictionary <int, GameObject>();

        //container for the packing algorithm
        List <Container> containers = new List <Container>();
        //items for the packing algorithm
        List <Item> itemsToPack = new List <Item>();
        //the packing algorithm
        List <int> algorithms = new List <int>();

        m_MyCar.GetComponent <MyCar>().ClearTrunk();
        float scale = 1000f;

        containers.Add(new Container(1, new Decimal(containerSize.x * scale), new Decimal(containerSize.y * scale), new Decimal(containerSize.z * scale)));

        //convert items to the Item instances
        for (int i = 0; i < this.transform.childCount; i++)
        {
            GameObject child = this.transform.GetChild(i).gameObject;
            if (child == this.AddIcon)
            {
                continue;
            }

            Vector3 dims = child.GetComponent <ARItem>().size;
            int     id   = child.GetComponent <ARItem>().id;
            itemsToPack.Add(new Item(id, new Decimal(dims.x * scale), new Decimal(dims.y * scale), new Decimal(dims.z * scale), 1));
            UIItemMap[id] = child;
        }

        algorithms.Add((int)AlgorithmType.EB_AFIT);
        List <ContainerPackingResult> result = PackingService.Pack(containers, itemsToPack, algorithms);

        if (result.Count < 1)
        {
            return(false);
        }
        AlgorithmPackingResult resultDetail = result[0].AlgorithmPackingResults[0];


        float total_volume = (float)containers[0].Volume;
        float item_volume  = 0;

        //check the packing result
        foreach (Item i in resultDetail.PackedItems)
        {
            Vector3 localPosition = new Vector3((float)i.CoordX / scale, (float)i.CoordY / scale, (float)i.CoordZ / scale);
            Vector3 size          = new Vector3((float)i.Dim1 / scale, (float)i.Dim2 / scale, (float)i.Dim3 / scale);

            //Debug.Log("[BMWAR] item #+"+i.ID+": "+ localPosition + "   size: " + size);
            //visualize it in the trunk
            GameObject itemInContainer = m_MyCar.GetComponent <MyCar>().AddObjectToTrunk(localPosition, size);
            if (UIItemMap.ContainsKey(i.ID))
            {
                //change the UI color
                UIItemMap[i.ID].GetComponent <ARItem>().proxyItemBox = itemInContainer;
                UIItemMap[i.ID].GetComponent <RawImage>().color      = PackedItemColor;
                UIItemMap.Remove(i.ID);
            }
            item_volume += (float)i.Volume;
        }

        //check the unpacked items and update their colors in the left UI pane.
        foreach (var key in UIItemMap.Keys)
        {
            UIItemMap[key].GetComponent <ARItem>().proxyItemBox = null;
            UIItemMap[key].GetComponent <RawImage>().color      = UnPackedItemColor;
        }
        //calculate and update the free space
        float free_space = 100 - (item_volume * 100 / total_volume);

        m_MyCar.GetComponent <MyCar>().SetFreeSpace((int)free_space);
        if (resultDetail.IsCompletePack)
        {
            return(true);
        }
        return(false);
    }
        public async Task <ActionResult> GetWeatherObject(SearchModel model)
        {
            if (ModelState.IsValid)
            {
                var vm   = new WeatherViewModel();
                var trip = new Trip()
                {
                    Location  = model.Location,
                    StartDate = model.StartDate,
                    Duration  = model.Duration
                };
                var tripId            = _tripPackingService.CreateTrip(trip);
                var historicalWeather = await _weatherClient.GetHistoricalWeather(model.Location, model.StartDate, model.Duration);

                var cityName   = historicalWeather.Select(x => x.Location).Select(x => x.Name).Distinct().FirstOrDefault();
                var regionName = historicalWeather.Select(x => x.Location).Select(x => x.Region).Distinct().FirstOrDefault();
                vm.Historicals = MapForecast(historicalWeather);
                vm.CityName    = cityName;
                vm.RegionName  = regionName;
                vm.StartDate   = model.StartDate.ToString("d");
                vm.EndDate     = model.StartDate.AddDays(model.Duration - 1).ToString("d");
                if (model.StartDate <= DateTime.Now.AddDays(5))
                {
                    TimeSpan interval = model.StartDate - DateTime.Today;
                    var      days     = model.Duration + interval.Days;
                    if (days > 10)
                    {
                        var forecastWeather10Days = await _weatherClient.GetForecastWeather(model.Location, 10);

                        vm.Forecasts = MapForecast(forecastWeather10Days);
                    }
                    var forecastWeather = await _weatherClient.GetForecastWeather(model.Location, days);

                    vm.Forecasts = MapForecast(forecastWeather);
                }

                // the ?: is a ternary operator: this is what it does
                // if vm.forecasts is not null, then get items based on forcasts; otherwise, get items based on historicals
                var itemsToPack = GetPackingItems(
                    vm.Forecasts != null
                        ? vm.Forecasts
                        : vm.Historicals,
                    model.Duration, tripId);

                List <Container> containers = new List <Container>();
                containers.Add(new Container(1, "Carry-On", 104M, 20.5M, 15M, 8M));            //samsonite 21" Spinner - 43.5 total
                containers.Add(new Container(2, "Medium Suitcase", 144.88M, 23M, 17M, 9M));    //samsonite 27" Spinner (27M, 18.5M,9.5M) - 55 total
                containers.Add(new Container(3, "Large Suitcase", 145.6M, 29.5M, 20.5M, 11M)); //62" (must be 62" and 50 lbs or less)
                List <Item> itemsToContainer = new List <Item>();

                foreach (var item in itemsToPack)
                {
                    itemsToContainer.Add(new Item(item.Name, item.Height, item.Length, item.Width, Convert.ToInt32(item.Quantity)));
                }
                List <int> algorithms = new List <int>();
                algorithms.Add((int)AlgorithmType.EB_AFIT);
                List <ContainerPackingResult> packingResults = new List <ContainerPackingResult>();
                var totalItemWeight = itemsToPack.Select(x => x.TotalWeight).Sum();
                for (int i = containers.Count - 1; i >= 0; i--)
                {
                    packingResults = PackingService.Pack(containers[i], itemsToContainer, algorithms);
                    var packResult = packingResults.SelectMany(x => x.AlgorithmPackingResults).SelectMany(x => x.UnpackedItems).Count();
                    if (packResult == 0)
                    {
                        var containerWeight = packingResults.Select(x => x.Weight).Sum();
                        var totalWeight     = (containerWeight + totalItemWeight) * .0625M; //converts weight in ounces to pounds
                        vm.PackingItems            = itemsToPack;
                        vm.ContainerPackingResults = packingResults;
                        vm.TotalWeightInLbs        = totalWeight;
                    }
                }

                return(View("Result", vm));
            }

            return(RedirectToAction("Index", "Home"));
        }
示例#22
0
 public IPackingAlgorithm Get(int algorithmTypeId)
 {
     return(PackingService.GetPackingAlgorithmFromTypeID(algorithmTypeId));
 }
示例#23
0
 public ContainerPackingResultSummary Calculate([FromBody] ContainerCalculateRequest request, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(PackingService.Packing(request.Container, request.ItemsToPack, cancellationToken));
 }
 public ActionResult <List <ContainerPackingResult> > Post([FromBody] ContainerPackingRequest request)
 {
     return(PackingService.Pack(request.Containers, request.ItemsToPack, request.AlgorithmTypeIDs));
 }
 public List <ContainerPackingResult> Post([FromBody] ContainerPackingRequest request)
 {
     return(PackingService.Pack(request.Containers, request.ItemsToPack.OrderByDescending(i => i.Volume).ToList(), request.AlgorithmTypeIDs));
 }
示例#26
0
        private void PackingInMoreBox(List <Model.Item> list, List <int> boxID)
        {
            List <Box> boxes = new List <Box>();

            foreach (var i in boxID)
            {
                boxes.Add(boxDAO.getBox(i));
            }


            List <Packing.Item> itemsToPack = convertListItem(list);

            List <int> algorithms = new List <int>();

            algorithms.Add((int)AlgorithmType.EB_AFIT);

            if (list.Count != 0)
            {
                foreach (var z in boxes)
                {
                    Console.WriteLine("Provo pacco " + z.Name);
                    if (itemsToPack.Count != 0)
                    {
                        boxDAO.resetBox(z.Id);
                        List <Packing.Entities.Container> containers = new List <Packing.Entities.Container>();
                        containers.Add(convertBox(z));


                        //Avvio algoritmo EB-AFIT
                        List <ContainerPackingResult> result = PackingService.Pack(containers, itemsToPack, algorithms);

                        List <Packing.Item> listPacked   = new List <Packing.Item>();
                        List <Packing.Item> listUnpacked = new List <Packing.Item>();

                        var container = 0;
                        foreach (var a in result)
                        {
                            container = a.ContainerID;

                            foreach (var i in a.AlgorithmPackingResults)
                            {
                                listPacked   = i.PackedItems;
                                listUnpacked = i.UnpackedItems;
                            }
                        }

                        foreach (var v in listPacked)
                        {
                            var item = itemDAO.getItem(v.ID);
                            item.updateCoordinate(v.CoordX, v.CoordY, v.CoordZ, v.PackDimX, v.PackDimY, v.PackDimZ);
                            itemDAO.updateItem(item);
                        }

                        insertPackedItem(listPacked, container);
                        itemsToPack = listUnpacked;
                    }
                    else
                    {
                        alert("Completato", "tutti gli oggetti sono stati imballati", "ok");
                        break;
                    }
                }
                if (itemsToPack.Count != 0)
                {
                    alert("Non tutti gli oggetti entrano nei pacchi", "Apri i dettagli del pacco per controllare quali sono stati inseriti", "ok");
                }
            }
        }
示例#27
0
        private void PackingInOneBox(List <Model.Item> list, int boxID)
        {
            var box = boxDAO.getBox(boxID);

            if (list.Count != 0)
            {
                boxDAO.resetBox(boxID);

                List <Packing.Item> itemsToPack = convertListItem(list);

                List <Packing.Entities.Container> containers = new List <Packing.Entities.Container>();

                containers.Add(convertBox(box));

                List <int> algorithms = new List <int>();
                algorithms.Add((int)AlgorithmType.EB_AFIT);

                //Avvio algoritmo EB-AFIT
                List <ContainerPackingResult> result = PackingService.Pack(containers, itemsToPack, algorithms);

                List <Packing.Item> listPacked   = new List <Packing.Item>();
                List <Packing.Item> listUnpacked = new List <Packing.Item>();

                var container = 0;
                foreach (var a in result)
                {
                    container = a.ContainerID;

                    foreach (var i in a.AlgorithmPackingResults)
                    {
                        listPacked   = i.PackedItems;
                        listUnpacked = i.UnpackedItems;
                    }
                }

                foreach (var v in listPacked)
                {
                    var item = itemDAO.getItem(v.ID);
                    item.updateCoordinate(v.CoordX, v.CoordY, v.CoordZ, v.PackDimX, v.PackDimY, v.PackDimZ);
                    itemDAO.updateItem(item);
                }


                if (listUnpacked.Count == 0 && listPacked.Count == 0)
                {
                    alert("Impossibile completare", "Non è stato possibile inserire nessun oggetto nel pacco", "ok");
                }
                else
                {
                    if (listUnpacked.Count == 0)
                    {
                        alert("Completato", "Tutti gli oggetti sono stati inseriti", "ok");
                        insertPackedItem(listPacked, container);
                    }
                    else
                    {
                        alert("Non tutti gli oggetti entrano nel pacco", "Apri i dettagli del pacco per controllare quali sono stati inseriti", "ok");
                        insertPackedItem(listPacked, container);
                    }
                }
            }
        }