Beispiel #1
0
        public ActionResult Corrigir(ImageCandidate ic)
        {
            AccessControl ac = new AccessControl();

            if (ac.GetUser("Administrator") == null)
            {
                return(RedirectToAction("Index", "Login"));
            }

            if (ModelState.IsValid)
            {
                QuestionResult e = new QuestionResult();
                e.CandidateId = ic.CandidateId;
                e.QuestionId  = ic.QuestiontId;
                e.Grade       = Convert.ToDecimal(Request.Form["Grade"].ToString());
                db.QuestionResult.Add(e);
                //db.SaveChanges();

                ic.InUse           = false;
                db.Entry(ic).State = EntityState.Modified;
                db.SaveChanges();

                IEnumerable <Grade> dbList = GetGrade(ic.QuestiontId);
                ViewBag.Grade = new SelectList(dbList, "Id", "Grade1");

                int QuestionId = ic.QuestiontId;
                return(ShowView(QuestionId, true));
            }

            ModelState.AddModelError("error", "Erro inesperado. Tente novamente");
            return(RedirectToAction("Index"));
        }
Beispiel #2
0
        public async Task AddCandidate(CreateViewModel model)
        {
            var candidate = new Candidate
            {
                FullName = model.FullName,
                State    = model.State
            };

            await _context.Candidates.AddAsync(candidate);

            await _context.SaveChangesAsync();

            // add image candidate
            var idImgCandidate = candidate.IdCandidate;

            var imgCandidate = new ImageCandidate
            {
                IdCandidate = idImgCandidate,
                ImagePath   = model.ImagePath
            };

            await _context.ImageCandidates.AddAsync(imgCandidate);

            await _context.SaveChangesAsync();
        }
        private static void Main(string[] args)
        {
            // ugly constants
            const int numberOfCandidates  = 30;
            const int numberOfGenerations = 3000;

            // loading base structures
            var imageModel = new RgbImage("src/image.png");

            var mutator    = new FixedSquareMutator();
            var candidates = new ImageCandidate[numberOfCandidates];

            // creating candidates
            for (var i = 0; i < numberOfCandidates; i++)
            {
                candidates[i] = new ImageCandidate(imageModel);
            }

            // stopwatch for time measurment
            var stopwatch = Stopwatch.StartNew();

            // main iteration loop
            for (var i = 1; i <= numberOfGenerations; i++)
            {
                // mutating loop
                for (var j = 0; j < numberOfCandidates; j++)
                {
                    mutator.Mutate(candidates[j]);
                }

                // scoring loop
                foreach (var candidate in candidates)
                {
                    candidate.Score(imageModel);
                }

                // sorting via score
                candidates = candidates.OrderBy(c => c.Difference).ToArray();

                // coping best candidate as a new generation (crossing)
                for (var j = 1; j < numberOfCandidates; j++)
                {
                    candidates[j].Image.Copy(candidates[0].Image);
                }

                if (i % 10 == 0)
                {
                    candidates[0].Save("src/result" + i + ".png");
                }

                Console.WriteLine("Iteration: " + i +
                                  ", time elapsed: " + stopwatch.Elapsed +
                                  ", difference: " + candidates[0].PercentageDifference + "%");
            }
        }
Beispiel #4
0
        public void Mutate(ImageCandidate candidate)
        {
            var width  = candidate.Image.Width;
            var height = candidate.Image.Height;

            var x0 = Random.Next(width);
            var y0 = Random.Next(height);

            var size = GetSize(width - x0, height - y0);

            var randomColor = GetRandomColor(Random);

            for (var i = 0; i < size.Y; i++)
            {
                for (var j = 0; j < size.X; j++)
                {
                    var color = GetAverageColor(randomColor, candidate.Image.GetPixelColour(x0 + j, y0 + i));
                    candidate.Image.SetPixelColour(x0 + j, y0 + i, color);
                }
            }
        }
Beispiel #5
0
        private ViewResult ShowView(int QuestionId, bool InUse)
        {
            ImageCandidate            ic             = new ImageCandidate();
            DbRawSqlQuery <Candidate> queryCandidate = db.Database.SqlQuery <Candidate>("SELECT TOP 1 Id, Name FROM Candidate c INNER JOIN ImageCandidate ic ON c.Id = ic.CandidateId " +
                                                                                        "WHERE ic.QuestiontId = " + QuestionId + " AND " +
                                                                                        "Id NOT IN (SELECT CandidateId from QuestionResult WHERE " +
                                                                                        "QuestionId = " + QuestionId + ") " +
                                                                                        "ORDER BY NEWID()");
            Int32 candidateId = queryCandidate != null?queryCandidate.Single().Id : 0;

            IQueryable <ImageCandidate> query = db.ImageCandidate.Where(x => x.CandidateId == candidateId && x.QuestiontId == QuestionId);

            ic = query != null && query.Count() > 0 ? query.Single() : null;
            if (query != null && ic != null)
            {
                ic.InUse           = false;
                db.Entry(ic).State = EntityState.Modified;
                db.SaveChanges();

                return(View("Corrigir", ic));
            }
            return(View("Index"));
        }
Beispiel #6
0
        public bool Save(Question q, Candidate c, Bitmap b)
        {
            lock (db)
            {
                ImageCandidate e = new ImageCandidate();
                e.QuestiontId  = q.Id;
                e.CandidateId  = c.Id;
                e.Image        = imageToByteArray(b);
                e.Base64String = Convert.ToBase64String(e.Image);
                e.InUse        = false;

                if (db.ImageCandidate.Count() > 0)
                {
                    IQueryable <ImageCandidate> query = db.ImageCandidate.Where(x => x.CandidateId == c.Id && x.QuestiontId == q.Id);
                    if (query.Count() > 0)
                    {
                        db.Entry(e).State = EntityState.Modified;
                        Console.WriteLine("ImageCandidate updated");
                    }
                    else
                    {
                        db.ImageCandidate.Add(e);
                        Console.WriteLine("ImageCandidate added");
                    }
                }
                else
                {
                    db.ImageCandidate.Add(e);
                    Console.WriteLine("ImageCandidate added");
                }

                db.SaveChanges();
            }

            return(true);
        }