/// <summary> /// Evaluates the function. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <param name="args">The function arguments.</param> /// <returns>The result value of the function evaluation.</returns> public override EvaluationValue Evaluate(EvaluationContext context, params inf.IFunctionParameter[] args) { if (context == null) { throw new ArgumentNullException("context"); } if (args == null) { throw new ArgumentNullException("args"); } inf.IFunction function = DataType.EqualFunction; foreach (object par1 in args[0].Elements) { foreach (object par2 in args[1].Elements) { EvaluationValue retVal = function.Evaluate( context, new EvaluationValue(par1, args[0].GetType(context)), new EvaluationValue(par2, args[1].GetType(context))); if (retVal.BoolValue) { return(EvaluationValue.True); } } } return(EvaluationValue.False); }
/// <summary> /// Method called by the EvaluationEngine to evaluate the function. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <param name="args">The IFuctionParameters that will be used as arguments to the function.</param> /// <returns></returns> public override EvaluationValue Evaluate(EvaluationContext context, params inf.IFunctionParameter[] args) { if (context == null) { throw new ArgumentNullException("context"); } if (args == null) { throw new ArgumentNullException("args"); } inf.IFunction function = args[0].GetFunction(0); EvaluationValue value = new EvaluationValue(args[1], args[1].GetType(context)); foreach (object par in args[2].Elements) { EvaluationValue retVal = function.Evaluate( context, value, new EvaluationValue(par, args[2].GetType(context))); if (retVal.BoolValue) { return(retVal); } } return(EvaluationValue.False); }
/// <summary> /// Evaluates the function. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <param name="args">The function arguments.</param> /// <returns>The result value of the function evaluation.</returns> public override EvaluationValue Evaluate(EvaluationContext context, params IFunctionParameter[] args) { if (context == null) { throw new ArgumentNullException("context"); } if (args == null) { throw new ArgumentNullException("args"); } var retBag = new BagValue(DataType); IFunction functionDup = DataType.IsInFunction; foreach (object par1 in args[0].Elements) { EvaluationValue retVal = functionDup.Evaluate(context, new EvaluationValue(par1, args[0].GetType(context)), retBag); if (!retVal.BoolValue) { retBag.Add(new EvaluationValue(par1, args[0].GetType(context))); } } foreach (object par2 in args[1].Elements) { EvaluationValue retVal = functionDup.Evaluate(context, new EvaluationValue(par2, args[1].GetType(context)), retBag); if (!retVal.BoolValue) { retBag.Add(new EvaluationValue(par2, args[1].GetType(context))); } } return(new EvaluationValue(retBag, DataType)); }
/// <summary> /// Method called by the EvaluationEngine to evaluate the function. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <param name="args">The IFuctionParameters that will be used as arguments to the function.</param> /// <returns></returns> public override EvaluationValue Evaluate(EvaluationContext context, params IFunctionParameter[] args) { if (context == null) { throw new ArgumentNullException("context"); } if (args == null) { throw new ArgumentNullException("args"); } IFunction function = args[0].GetFunction(0); if (!Equals(function.Returns, DataTypeDescriptor.Boolean)) { return(EvaluationValue.Indeterminate); } foreach (var par1 in args[1].Elements) { foreach (var par2 in args[2].Elements) { EvaluationValue retVal = function.Evaluate( context, new EvaluationValue(par1, args[1].GetType(context)), new EvaluationValue(par2, args[2].GetType(context))); if (!retVal.BoolValue) { return(EvaluationValue.False); } } } return(EvaluationValue.True); }
/// <summary> /// Method called by the EvaluationEngine to evaluate the function. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <param name="args">The IFuctionParameters that will be used as arguments to the function.</param> /// <returns></returns> public override EvaluationValue Evaluate(EvaluationContext context, params IFunctionParameter[] args) { if (context == null) { throw new ArgumentNullException("context"); } if (args == null) { throw new ArgumentNullException("args"); } IFunction function = args[0].GetFunction(0); foreach (var par1 in args[1].Elements) { bool hasFound = false; foreach (var par2 in args[2].Elements) { EvaluationValue retVal = function.Evaluate( context, new EvaluationValue(par1, args[1].GetType(context)), new EvaluationValue(par2, args[2].GetType(context))); if (retVal.BoolValue) { hasFound = true; break; } } if (!hasFound) { return(EvaluationValue.False); } } return(EvaluationValue.True); }
RelationCalification IEvaluatorService.Evaluate(GithubInfo githubInfo, EvaluationValue evaluationValues, List <Repository> repositories) => new RelationCalification() { User = githubInfo.User, Ejer1 = githubInfo.PullRequests.GetEvaluation(repositories.FirstOrDefault(x => x.Name.Contains("Ejer1"))), Ejer2 = githubInfo.PullRequests.GetEvaluation(repositories.FirstOrDefault(x => x.Name.Contains("Ejer2"))), Ejer3 = githubInfo.PullRequests.GetEvaluation(repositories.FirstOrDefault(x => x.Name.Contains("Ejer3"))), Ejer4 = githubInfo.PullRequests.GetEvaluation(repositories.FirstOrDefault(x => x.Name.Contains("Ejer4"))), Ejer5 = githubInfo.PullRequests.GetEvaluation(repositories.FirstOrDefault(x => x.Name.Contains("Ejer5"))) };
public void TestEvaluationValueToStringMethod() { //empty var eval = new EvaluationValue(); Assert.AreEqual(eval.ToString(), "?b"); eval.Points = 3m; Assert.AreEqual(eval.ToString(), "3b"); eval.Reason = "Reason"; Assert.AreEqual(eval.ToString(), "3b (Reason)"); }
public IActionResult EvaluateComment(int id, bool approved) { if (ViewBag.Username == null) { _logger.LogInformation("User tried to evaluate comment without being logged in"); TempData["Message"] = "You need to login to see this page"; return(RedirectToAction("Login", "Account")); } if (ViewBag.RankLevel < 1) { _logger.LogInformation($"User \"{ViewBag.Username}\" tried to " + "evaluate comment without being high enough rank"); TempData["Message"] = "You are not ranked high enough to see this page"; return(RedirectToAction("Index")); } EvaluationValue evaluationValue = _context.EvaluationValues .SingleOrDefault(e => e.Name.Equals( approved ? EvaluationValues.Approved.ToString() : EvaluationValues.Disapproved.ToString())); if (evaluationValue == null) { _logger.LogError("Evaluation value \"" + (approved ? EvaluationValues.Approved.ToString() : EvaluationValues.Disapproved.ToString()) + $"\" was failed to get obtained from database context during {ViewBag.Username}'s evaluation"); ViewBag.ErrorMessage = "Error: The evaluation value was failed to get obtained. Try again."; return(RedirectToAction("Moderation")); } Evaluation evaluation = new Evaluation { CommentId = id, EvaluationValue = evaluationValue, EvaluatedBy = ViewBag.User, EvaluationTime = DateTime.Now }; _context.Add(evaluation); if (_context.SaveChanges() > 0) { _logger.LogInformation($"Evaluation \"{evaluation.Id}\" was created by \"{ViewBag.Username}\""); TempData["Message"] = "Successfully evaluated comment"; } else { _logger.LogError("Saving changes returned <= 0 after adding " + $"evaluation \"{evaluation.Id}\" made by \"{ViewBag.Username}\" to context"); ViewBag.ErrorMessage = "Error: The database didn't register your evaluation. Try again."; } return(RedirectToAction("Moderation")); }
/// <summary> /// Method called by the EvaluationEngine to evaluate the function. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <param name="args">The IFuctionParameters that will be used as arguments to the function.</param> /// <returns></returns> public override EvaluationValue Evaluate(EvaluationContext context, params IFunctionParameter[] args) { if (context == null) throw new ArgumentNullException("context"); if (args == null) throw new ArgumentNullException("args"); IFunction function = args[0].GetFunction(0); var value = new EvaluationValue(args[1], args[1].GetType(context)); foreach (var par in args[2].Elements) { EvaluationValue retVal = function.Evaluate(context, value, new EvaluationValue(par, args[2].GetType(context))); if (!retVal.BoolValue) { return retVal; } } return EvaluationValue.True; }
static void Main(string[] args) { var repo = new TestRepository(); Console.WriteLine("Number of students: " + repo.StudentsCourseEvaluation.Count); ListStudents(repo); CourseEvaluation student0 = repo.StudentsCourseEvaluation[0].Evaluation; CourseEvaluation student1 = repo.StudentsCourseEvaluation[1].Evaluation; EvaluationValue val0 = student0.Evaluations[0].Value; val0.Points = 5.5m; val0.Reason = "Bad design"; EvaluationValue val1 = student0.Evaluations[1].Value; val1.Points = 4m; val1.Reason = "Bad implementation"; student0.Evaluations[3].Value.Points = 3m; student1.Evaluations[0].Value.Points = 15m; ListStudents(repo); //zmena definice hodnoceni repo.StudentsCourseEvaluation[2].Evaluation.EvaluationDefinitions.RemoveAt(2); repo.StudentsCourseEvaluation[2].Evaluation.EvaluationDefinitions.Move(0, 1); repo.StudentsCourseEvaluation[2].Evaluation.EvaluationDefinitions.Add( new EvaluationDefinition() { Name = "Other", MinPoints = 0m, MaxPoints = 5m }); ListStudents(repo); repo.StudentsCourseEvaluation[2].Evaluation.EvaluationDefinitions[2].MinPoints = 3.5m; student1.Evaluations[3].Value.Points = 4m; ListStudents(repo); repo.StudentsCourseEvaluation[2].Evaluation.EvaluationDefinitions[3] = null; ListStudents(repo); Console.ReadLine(); }
/// <summary> /// Method called by the EvaluationEngine to evaluate the function. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <param name="args">The IFuctionParameters that will be used as arguments to the function.</param> /// <returns></returns> public override EvaluationValue Evaluate(EvaluationContext context, params inf.IFunctionParameter[] args) { if (context == null) { throw new ArgumentNullException("context"); } if (args == null) { throw new ArgumentNullException("args"); } inf.IFunction function = args[0].GetFunction(0); if (function.Returns != DataTypeDescriptor.Boolean) { return(EvaluationValue.Indeterminate); } foreach (object par1 in args[1].Elements) { bool hasFound = false; foreach (object par2 in args[2].Elements) { EvaluationValue retVal = function.Evaluate( context, new EvaluationValue(par1, args[1].GetType(context)), new EvaluationValue(par2, args[2].GetType(context))); if (!retVal.BoolValue) { hasFound = true; break; } } if (!hasFound) { return(EvaluationValue.True); } } return(EvaluationValue.False); }
private static readonly bool ReInitialize = false; // NOTE: when true the DB will be reset with the entries below public static void Initialize(BlogContext context) { context.Database.EnsureCreated(); if (ReInitialize) // removes all entries from database { context.ThreadTags.RemoveRange(context.ThreadTags.Where(t => t.ThreadId == t.ThreadId)); context.Tags.RemoveRange(context.Tags.Where(t => t.Id == t.Id)); context.Evaluations.RemoveRange(context.Evaluations.Where(e => e.Id == e.Id)); context.EvaluationValues.RemoveRange(context.EvaluationValues.Where(e => e.Id == e.Id)); context.Comments.RemoveRange(context.Comments.Where(c => c.Id == c.Id).IgnoreQueryFilters()); context.Threads.RemoveRange(context.Threads.Where(t => t.Id == t.Id)); context.Users.RemoveRange(context.Users.Where(u => u.Id == u.Id)); context.Ranks.RemoveRange(context.Ranks.Where(r => r.Id == r.Id)); context.SaveChanges(); } if (context.Ranks.Any()) // true if the code below have been run before and ReInitialize = false { return; // DB has been seeded, end method } Rank[] ranks = new Rank[] { new Rank { Name = Ranks.Member.ToString() }, new Rank { Name = Ranks.Moderator.ToString() }, new Rank { Name = Ranks.Administrator.ToString() } }; foreach (Rank r in ranks.Reverse()) { context.Ranks.Add(r); } context.SaveChanges(); User[] users = new User[] { new User { Username = "******", Password = Security.ROT13EncryptMessage("pass123"), Rank = Array.Find(ranks, r => r.Name.Equals(Ranks.Administrator.ToString())), JoinTime = DateTime.Now }, new User { Username = "******", Password = Security.ROT13EncryptMessage("pass123"), Rank = Array.Find(ranks, r => r.Name.Equals(Ranks.Moderator.ToString())), JoinTime = DateTime.Now + TimeSpan.FromSeconds(5) }, new User { Username = "******", Password = Security.ROT13EncryptMessage("qwerty"), Rank = Array.Find(ranks, r => r.Name.Equals(Ranks.Member.ToString())), JoinTime = DateTime.Now + TimeSpan.FromSeconds(10) } }; foreach (User u in users.Reverse()) { context.Users.Add(u); } context.SaveChanges(); Thread[] threads = new Thread[] { new Thread { User = Array.Find(users, u => u.Username.Equals("Admin")), Title = "#1", Message = "This is the first thread made!", CreationTime = DateTime.Now }, new Thread { User = Array.Find(users, u => u.Username.Equals("Mikael")), Title = "Second thread test", Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " + "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris " + "nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in " + "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla" + " pariatur. Excepteur sint occaecat cupidatat non proident, sunt in " + "culpa qui officia deserunt mollit anim id est laborum.", CreationTime = DateTime.Now + TimeSpan.FromSeconds(30) } }; foreach (Thread t in threads.Reverse()) { context.Threads.Add(t); } context.SaveChanges(); Tag[] tags = new Tag[] { new Tag { Name = Tags.Comedy.ToString() }, new Tag { Name = Tags.Information.ToString() }, new Tag { Name = Tags.Political.ToString() }, new Tag { Name = Tags.Sponsored.ToString() }, new Tag { Name = Tags.Discussion.ToString() }, new Tag { Name = Tags.Announcement.ToString() } }; foreach (Tag t in tags.Reverse()) { context.Tags.Add(t); } context.SaveChanges(); ThreadTag[] threadTags = new ThreadTag[] { new ThreadTag { Thread = threads[0], Tag = Array.Find(tags, t => t.Name.Equals(Tags.Discussion.ToString())) }, new ThreadTag { Thread = threads[0], Tag = Array.Find(tags, t => t.Name.Equals(Tags.Announcement.ToString())) } }; foreach (ThreadTag t in threadTags.Reverse()) { context.ThreadTags.Add(t); } context.SaveChanges(); Comment[] comments = new Comment[] { new Comment { User = Array.Find(users, u => u.Username.Equals("Billy")), Thread = threads[0], Message = "Cool!", CreationTime = DateTime.Now + TimeSpan.FromSeconds(20) }, new Comment { User = Array.Find(users, u => u.Username.Equals("Billy")), Thread = threads[0], Message = "Disapprove this comment", CreationTime = DateTime.Now + TimeSpan.FromSeconds(40) }, new Comment { User = Array.Find(users, u => u.Username.Equals("Mikael")), Thread = threads[1], Message = "Sed ut perspiciatis unde omnis iste natus error " + "sit voluptatem accusantium doloremque laudantium, totam rem" + " aperiam, eaque ipsa quae ab illo inventore veritatis et quasi" + " architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam" + " voluptatem quia voluptas sit aspernatur aut odit aut fugit, " + "sed quia consequuntur magni dolores eos qui ratione voluptatem" + " sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum " + "quia dolor sit amet, consectetur, adipisci velit, sed quia non" + " numquam eius modi tempora incidunt ut labore et dolore magnam" + " aliquam quaerat voluptatem. Ut enim ad minima veniam, quis " + "nostrum exercitationem ullam corporis suscipit laboriosam, " + "nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum" + " iure reprehenderit qui in ea voluptate velit esse quam nihil " + "molestiae consequatur, vel illum qui dolorem eum fugiat quo " + "voluptas nulla pariatur?", CreationTime = DateTime.Now + TimeSpan.FromSeconds(60) }, new Comment { User = Array.Find(users, u => u.Username.Equals("Billy")), Thread = threads[0], Message = "Can I get mod?", CreationTime = DateTime.Now + TimeSpan.FromSeconds(80) }, new Comment { User = Array.Find(users, u => u.Username.Equals("Billy")), Thread = threads[0], Message = "Hello???", CreationTime = DateTime.Now + TimeSpan.FromSeconds(600) } }; foreach (Comment c in comments.Reverse()) { context.Comments.Add(c); } context.SaveChanges(); EvaluationValue[] evaluationValues = new EvaluationValue[] { new EvaluationValue { Name = EvaluationValues.Approved.ToString() }, new EvaluationValue { Name = EvaluationValues.Disapproved.ToString() } }; foreach (EvaluationValue e in evaluationValues.Reverse()) { context.EvaluationValues.Add(e); } context.SaveChanges(); Evaluation[] evaluations = new Evaluation[] { new Evaluation { Comment = comments[0], EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Approved.ToString())), EvaluatedBy = Array.Find(users, u => u.Username.Equals("Admin")), EvaluationTime = DateTime.Now + TimeSpan.FromSeconds(40) }, new Evaluation { Comment = comments[0], EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Approved.ToString())), EvaluatedBy = Array.Find(users, u => u.Username.Equals("Mikael")), EvaluationTime = DateTime.Now + TimeSpan.FromSeconds(60) }, new Evaluation { Comment = comments[1], EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Disapproved.ToString())), EvaluatedBy = Array.Find(users, u => u.Username.Equals("Mikael")), EvaluationTime = DateTime.Now + TimeSpan.FromSeconds(80) }, new Evaluation { Comment = comments[2], EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Approved.ToString())), EvaluatedBy = Array.Find(users, u => u.Username.Equals("Mikael")), EvaluationTime = DateTime.Now + TimeSpan.FromSeconds(100) } }; foreach (Evaluation e in evaluations.Reverse()) { context.Evaluations.Add(e); } context.SaveChanges(); }
RelationCalification IEvaluatorService.Evaluate(GithubInfo githubInfo, EvaluationValue evaluationValues) => new RelationCalification() { User = githubInfo.User, Calification = Math.Round(((double)githubInfo.PullRequests.Count / (double)evaluationValues.TotalExercises) * evaluationValues.MaxNoteForPRs, 2) };
public Judgment(FactorName name, EvaluationValue value) { this.name = name; this.value = value; }