示例#1
0
        public void CreateToken(ModelToken model, string[] usernames, int testid)
        {
            using (var transaction = _ctx.Database.BeginTransaction())
            {
                try
                {
                    model.TokenActive = true;
                    model.TestID      = testid;

                    Each(usernames, x => {
                        ModelToken check = GetTokenByUsernameAndTest(x, testid);
                        if (check == null)
                        {
                            model.TokenString = RandomString();
                            model.Username    = x;

                            var entity = model.ToEntity();

                            _ctx.Insert(entity);
                            _ctx.SaveChanges();
                        }
                    });

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new ArgumentException(e.Message);
                }
            }
        }
示例#2
0
        public void CreateToken(ModelToken model, string username, int testid)
        {
            using (var transaction = _ctx.Database.BeginTransaction())
            {
                try
                {
                    model.TokenActive = true;
                    model.TokenString = RandomString();
                    model.Username    = username;
                    model.TestID      = testid;

                    var entity = model.ToEntity();

                    _ctx.Insert(entity);
                    _ctx.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new ArgumentException(e.Message);
                }
            }
        }
示例#3
0
        public ConnectedComponent(List <Tuple <int, int> > component, ModelToken token, double [,] corr)
        {
            Component = component;
            double sumx = 0;
            double sumy = 0;

            foreach (var item in component)
            {
                sumx   += item.Item1;
                sumy   += item.Item2;
                CorrMax = Math.Max(CorrMax, corr[item.Item1, item.Item2]);
            }
            MeanX = sumx / component.Count;
            MeanY = sumy / component.Count;
            Token = token;
        }
示例#4
0
        static List <BlockState> GetBlockData(Stream InputStream)
        {
            /*
             * This whole section is just a tangled mess to parse the blockstate JSON files.
             *
             * Rather than even try to parse the JSON myself with string operators (cancer),
             * I decided to use an external function library.
             */
            List <BlockState>           BlockStates     = new List <BlockState>();     //Generate the lists
            List <ModelReference>       ModelList       = new List <ModelReference>(); //before using them
            Dictionary <string, string> ModelDictionary = new Dictionary <string, string>();

            using (StreamReader sr = new StreamReader(InputStream))
            {
                JObject JsonOutput = JObject.Parse(sr.ReadToEnd());
                foreach (KeyValuePair <string, JToken> Token in JsonOutput)
                {
                    if (Token.Key == "variants")
                    {
                        BlockStates = new List <BlockState>();
                        foreach (JToken Variants in Token.Value)
                        {
                            foreach (JToken StateToken in Variants.Values <JToken>())
                            {
                                ModelList       = new List <ModelReference>();
                                ModelDictionary = new Dictionary <string, string>();
                                foreach (JToken ModelToken in StateToken.Children())
                                {
                                    ModelDictionary.Add(ModelToken.ToObject <JProperty>().Name, ModelToken.ToObject <string>());
                                }
                                ModelList.Add(new ModelReference(ModelDictionary));
                                BlockStates.Add(new BlockState(Variants.ToObject <JProperty>().Name, ModelList));
                            }
                        }
                        //PackBlocks.Add(new Block(Entry.Name.Split('.')[0], BlockStates));
                    }
                    else
                    {
                        throw new TrashMonkeyException("Model is multipart!");
                    }
                }
            }
            return(BlockStates);
        }
示例#5
0
        public void UpdateToken(ModelToken model)
        {
            using (var transaction = _ctx.Database.BeginTransaction())
            {
                try
                {
                    var entity = _ctx.Tokens.FirstOrDefault(x => x.TokenString == model.TokenString);

                    model.Update(entity);

                    _ctx.Update(entity);
                    _ctx.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new ArgumentException(e.Message);
                }
            }
        }
示例#6
0
        public void CreateToken(ModelToken model)
        {
            using (var transaction = _ctx.Database.BeginTransaction())
            {
                try
                {
                    model.TokenActive = true;

                    var entity = model.ToEntity();

                    _ctx.Insert(entity);
                    _ctx.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new ArgumentException(e.Message);
                }
            }
        }
示例#7
0
        private List <ConnectedComponent> GetTokens(Bitmap bitmapTemp)
        {
            List <ConnectedComponent>[] component_list_array = new List <ConnectedComponent> [TokenList.Count];

            double[,] imageDouble = ToolsConvolution.BitMapToDoubleArray(bitmapTemp, 0.5);

            Parallel.For(0, TokenList.Count, tokenIndex =>
            {
                ModelToken token = TokenList[tokenIndex];
                var corr         = ToolsConvolution.CorrelationFFT(imageDouble, token.GetKernel());
                component_list_array[tokenIndex] = ToolsConnectedComponent.GetConnectedComponents(corr, token.Threshold.Value, token);
            });

            List <ConnectedComponent> component_list = new List <ConnectedComponent>();

            foreach (List <ConnectedComponent> list in component_list_array)
            {
                component_list.AddRange(list);
            }

            return(component_list);
        }
示例#8
0
        public ActionResult AddStudentsToTest(AddStudentsToTestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            ModelTest    test     = _testStore.GetTest(model.TestID);
            Stream       inStream = model.file.InputStream;
            StreamReader sr       = new StreamReader(inStream);

            try {
                List <string> usernames = new List <string>();
                while (!sr.EndOfStream)
                {
                    ModelUser user        = new ModelUser();
                    string    str         = sr.ReadLine();
                    string[]  userDetails = str.Split(',');
                    user.Username     = userDetails[0];
                    user.PasswordHash = userDetails[1];
                    usernames.Add(userDetails[0]);
                    if (_userStore.GetUser(user.Username) == null)
                    {
                        _userStore.CreateUser(user, "student");
                    }
                }
                sr.Close();
                ModelToken token = new ModelToken();
                token.CreatedTime = DateTime.Now;
                DateTime date = test.Date; DateTime time = test.EndTime; time.AddHours(1);
                date.AddHours(time.Hour); date.AddMinutes(time.Minute);
                token.ExpiredTime = date;
                _tokenStore.CreateToken(token, usernames.ToArray(), model.TestID);
                return(RedirectToAction("ViewTests", "Admin"));
            } catch (Exception e) {
                sr.Close();
                return(RedirectToAction("ViewTests", "Admin"));
            }
        }
示例#9
0
        static void GetBlockStates(string PathInput)
        {
            List <Block> Blocks = new List <Block>();

            using (ZipArchive MinecraftJar = ZipFile.OpenRead(PathInput))
            {
                IEnumerable <ZipArchiveEntry> BlockStateEntries = MinecraftJar.Entries.Where(Entry => (Entry.Name.EndsWith(".json")) && (Entry.FullName.EndsWith(@"minecraft/blockstates/" + Entry.Name)));
                foreach (ZipArchiveEntry Entry in BlockStateEntries)
                {
                    /*
                     * This whole section is just a tangled mess to parse the blockstate JSON files.
                     *
                     * Rather than even try to parse the JSON myself with string operators (cancer),
                     * I decided to use an external function library.
                     */
                    List <BlockState>           BlockStates     = new List <BlockState>();     //Generate the lists
                    List <ModelReference>       ModelList       = new List <ModelReference>(); //before using them
                    Dictionary <string, string> ModelDictionary = new Dictionary <string, string>();
                    using (StreamReader sr = new StreamReader(Entry.Open()))
                    {
                        try
                        {
                            JObject JsonOutput = JObject.Parse(sr.ReadToEnd());
                            foreach (KeyValuePair <string, JToken> Token in JsonOutput)
                            {
                                if (Token.Key == "variants")
                                {
                                    BlockStates = new List <BlockState>();
                                    foreach (JToken Variants in Token.Value)
                                    {
                                        foreach (JToken StateToken in Variants.Values <JToken>())
                                        {
                                            ModelList       = new List <ModelReference>();
                                            ModelDictionary = new Dictionary <string, string>();
                                            foreach (JToken ModelToken in StateToken.Children())
                                            {
                                                ModelDictionary.Add(ModelToken.ToObject <JProperty>().Name, ModelToken.ToObject <string>());
                                            }
                                            ModelList.Add(new ModelReference(ModelDictionary));
                                            BlockStates.Add(new BlockState(Variants.ToObject <JProperty>().Name, ModelList));
                                        }
                                    }
                                    Blocks.Add(new Block(Entry.Name.Split('.')[0], BlockStates));
                                }
                            }
                        }
                        catch
                        {
                            /*
                             * For some reason Mojang has a crappy blockstate for acacia_wall_sign.
                             * It has a random 'n' after all the data, which gives my code AIDS
                             * unless I put it all in a try/catch. :P
                             */
                        }
                    }
                }
                ResourcePack[] ResourcePacks = null;
                foreach (ResourcePack Pack in ResourcePacks)
                {
                    switch (Pack.Type)
                    {
                    case ResourcePack.PackType.Mod:
                    case ResourcePack.PackType.Jar:
                    case ResourcePack.PackType.Zip:

                        break;

                    case ResourcePack.PackType.Folder:

                        break;

                    default:
                        break;
                    }
                }

                List <ZipArchiveEntry> BlockModelEntries = new List <ZipArchiveEntry>();

                foreach (Block block in Blocks)
                {
                    BlockModelEntries.Add(MinecraftJar.GetEntry("assets/minecraft/models/" + block.BlockStates[0].Models[0].ModelData["model"] + ".json"));
                }

                BlockModelEntries = BlockModelEntries.Distinct().ToList();

                List <BlockModel> BlockModels = new List <BlockModel>();

                foreach (ZipArchiveEntry Entry in BlockModelEntries)
                {
                }


                Console.Write("");

                //IEnumerable<ZipArchiveEntry> BlockModelEntries = MinecraftJar.Entries.Where(Entry => (Entry.Name.EndsWith(".json")) && (Entry.FullName.EndsWith(@"minecraft/models/block/" + Entry.Name)));
                //foreach (ZipArchiveEntry Entry in BlockModelEntries)
                //{

                //}
            }
        }
示例#10
0
        public ModelToken GetToken(int tokenid)
        {
            var model = new ModelToken();

            return(model.Get(_ctx).FirstOrDefault(x => x.TokenID == tokenid));
        }
示例#11
0
        public IQueryable <ModelToken> ReadTokens()
        {
            var model = new ModelToken();

            return(model.Get(_ctx));
        }
示例#12
0
        public static List <ConnectedComponent> GetConnectedComponents(double[,] image, double threshold, ModelToken token)
        {
            List <ConnectedComponent> cc = new List <ConnectedComponent>();

            bool[,] blacklist = new bool[image.GetLength(0), image.GetLength(1)];
            for (int i = 0; i < image.GetLength(0); i++)
            {
                for (int j = 0; j < image.GetLength(1); j++)
                {
                    if (!blacklist[i, j])
                    {
                        if (threshold < image[i, j])
                        {
                            Queue <Tuple <int, int> > queue     = new Queue <Tuple <int, int> >();
                            List <Tuple <int, int> >  node_list = new List <Tuple <int, int> >();
                            queue.Enqueue(new Tuple <int, int>(i, j));
                            while (0 < queue.Count)
                            {
                                ProcessNode(image, threshold, blacklist, queue, node_list);
                            }
                            cc.Add(new ConnectedComponent(node_list, token, image));
                        }
                    }
                }
            }
            return(cc);
        }
示例#13
0
        public IQueryable <ModelToken> GetTokensByTokenString(string tokenstring)
        {
            var model = new ModelToken();

            return(model.Get(_ctx).Where(x => x.TokenString == tokenstring));
        }
示例#14
0
        public IQueryable <ModelToken> GetTokensByTest(int testid)
        {
            var model = new ModelToken();

            return(model.Get(_ctx).Where(x => x.TestID == testid));
        }
示例#15
0
        public IQueryable <ModelToken> GetTokensByUsername(string username)
        {
            var model = new ModelToken();

            return(model.Get(_ctx).Where(x => x.Username == username));
        }
示例#16
0
        public ModelToken GetTokenByUsernameAndTest(string username, int testid)
        {
            var model = new ModelToken();

            return(model.Get(_ctx).Where(x => x.Username == username).FirstOrDefault(x => x.TestID == testid));
        }
示例#17
0
        public IActionResult GeneraToken(ModelToken modelToken)
        {
            var Token = TokenServices.BuildToken(modelToken.Email);

            return(Ok(new { Token }));
        }