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")); }
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 + "%"); } }
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); } } }
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")); }
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); }