Esempio n. 1
0
 /// <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);
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
 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")))
 };
Esempio n. 7
0
        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)");
        }
Esempio n. 8
0
        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"));
        }
Esempio n. 9
0
 /// <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;
 }
Esempio n. 10
0
        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();
        }
Esempio n. 11
0
 /// <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);
 }
Esempio n. 12
0
        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();
        }
Esempio n. 13
0
 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;
 }