public void TestTable() { var args = new SqlConnectionStringBuilder("Server=192.168.100.12;Initial Catalog=InSysProMaxLive20181126;User ID=sa;Password=dev123sql$%^;"); using (var dfg = new ZTable(args, "tSellerHRIS", false)) { dfg.Load(100); } }
public IActionResult GetSubjectData(string subject, string faculty) { var sheets = ExamSheetManager.Get(faculty, subject, true); var model = new SubjectChartJsonModel(); if (!sheets?.Any() ?? true) { return(Json(model)); } var ids = sheets.Select(x => x.Id); var groupedByYears = sheets.GroupBy(x => x.Year).OrderBy(x => x.Key); model.AverageRatings = new Dictionary <string, float>(); model.RatingFrequency = new Dictionary <short, short>(); var ratings = new List <RatingModel>(); foreach (var year in groupedByYears) { var groupedBySemesters = year.GroupBy(x => x.Semester).OrderByDescending(x => x.Key); foreach (var semester in groupedBySemesters) { var sum = 0; var count = 0; foreach (var item in semester) { ratings.AddRange(item.Ratings); sum += item.Ratings.Sum(x => x.Mark); count += item.Ratings.Count; } var average = sum / (float)count; var title = string.Format("{0} {1}", year.Key, semester.Key); model.AverageRatings.Add(title, average); } } foreach (var rating in ratings) { if (model.RatingFrequency.ContainsKey(rating.Mark)) { model.RatingFrequency[rating.Mark]++; } else { model.RatingFrequency.Add(rating.Mark, 1); } } var M = ratings.Sum(x => x.Mark) / ratings.Count; var D = ratings.Sum(x => Math.Pow(x.Mark - M, 2)) / (ratings.Count - 1); var sigma = Math.Sqrt(D); var size = 4; model.NormalDistributions = new Dictionary <short, double> [size]; for (int i = 0; i < size; ++i) { model.NormalDistributions[i] = new Dictionary <short, double>(); } var eScore = calcZScore(60, M, sigma); var cScore = calcZScore(74, M, sigma); var aScore = calcZScore(90, M, sigma); var eProbability = ZTable.GetProbability(eScore); var cProbability = ZTable.GetProbability(cScore); var aProbability = ZTable.GetProbability(aScore); var probFail = eProbability * 100; var probSatisfactorily = (cProbability - eProbability) * 100; var probGood = (aProbability - cProbability) * 100; var probExcellent = (1 - aProbability) * 100; model.NormalDistributionLabels = new List <string>() { string.Format("Ймовірність не здати предмет: {0}%", probFail.ToString("0.0")), string.Format("Ймовірність здати на 60-74: {0}%", probSatisfactorily.ToString("0.0")), string.Format("Ймовірність здати на 74-90: {0}%", probGood.ToString("0.0")), string.Format("Ймовірність здати на 90+: {0}%", probExcellent.ToString("0.0")) }; for (short i = 0; i < 100; ++i) { double func = (1 / (sigma * Math.Sqrt(2 * Math.PI))) * Math.Exp(-(Math.Pow((i - M), 2)) / (2 * sigma * sigma)); if (i < 60) { model.NormalDistributions[0].Add(i, func * 1000); } else if (i < 74) { model.NormalDistributions[1].Add(i, func * 1000); } else if (i < 90) { model.NormalDistributions[2].Add(i, func * 1000); } else { model.NormalDistributions[3].Add(i, func * 1000); } } return(Json(model)); }