public void FinalGradeTest() { // Assert.AreEqual(100, Kata.FinalGrade(100, 12)); // Assert.AreEqual(90, Kata.FinalGrade(85, 5)); // Assert.AreEqual(100, Kata.FinalGrade(99, 0)); // Assert.AreEqual(100, Kata.FinalGrade(10, 15)); // Assert.AreEqual(90, Kata.FinalGrade(85, 5)); // Assert.AreEqual(75, Kata.FinalGrade(55, 3)); // Assert.AreEqual(0, Kata.FinalGrade(55, 0)); // Assert.AreEqual(0, Kata.FinalGrade(20, 2)); for (int e = 0; e <= 100; e++) { for (int p = 0; p <= 11; p++) { Assert.AreEqual(solution(e, p), StudentFinalGrade.FinalGrade(e, p), $"exam = {e}, projects = {p}"); } } Random rnd = new Random(); for (var i = 0; i < 100; i++) { var a = rnd.Next(0, 100); var b = rnd.Next(0, 20); Assert.AreEqual(solution(a, b), StudentFinalGrade.FinalGrade(a, b)); } }
public CalculateStudentFinalGradeResponse Invoke(CalculateStudentFinalGradeRequest request) { var lectureGrade = new StudentGrade(request.LectureGrade); var exerciseGrade = new StudentGrade(request.ExerciseGrade); var workshopGrade = new StudentGrade(request.WorkshopGrade); var finalGrade = new StudentFinalGrade(lectureGrade, exerciseGrade, workshopGrade); return(new CalculateStudentFinalGradeResponse { FinalGrade = finalGrade.Value, HasPassed = finalGrade.HasPassed }); }
public void CreateObject_WithGivenGrades_ShouldCalculateCorrectlyFinalGradeAndHasPassedFlag( StudentGrade lectureGrade, StudentGrade exerciseGrade, StudentGrade workshopGrade, double expectedFinalGradeValue, bool expectedHasPassed ) { // When var finalGrade = new StudentFinalGrade(lectureGrade, exerciseGrade, workshopGrade); // Then finalGrade.Should().NotBeNull(); finalGrade.Value.Should().Be(expectedFinalGradeValue); finalGrade.HasPassed.Should().Be(expectedHasPassed); }
public void Basic() { Assert.AreEqual(100, StudentFinalGrade.FinalGrade(100, 12)); Assert.AreEqual(90, StudentFinalGrade.FinalGrade(85, 5)); }
public async Task <IActionResult> AddRate(RateModel model) { try { var studentFinalGrade = new StudentFinalGrade(); string mesaj = ""; #region Toplamlar //I. Rapor decimal?toplamRaporPuan = (model.DuzenBicim * model.DuzenBicimWeight) + (model.Alintilama * model.AlintilamaWeight) + (model.YazimveDilkalite * model.YazimveDilkaliteWeight) + (model.RaporBoyut * model.RaporBoyutWeight) + (model.ProjeTanimi * model.ProjeTanimiWeight) + (model.GereksinimAnaliz * model.GereksinimAnalizWeight) + (model.GercekciKisitlama * model.GercekciKisitlamaWeight) + (model.AhlakiKonu * model.AhlakiKonuWeight) + (model.SistemTasarim * model.SistemTasarimWeight) + (model.Uygulama * model.UygulamaWeight) + (model.Standartlar * model.StandartlarWeight) + (model.Testler * model.TestlerWeight) + (model.SistemKullanimKılavuz * model.SistemKullanimKılavuzWeight) + (model.CozumAciklama * model.CozumAciklamaWeight) + (model.Kaynak * model.KaynakWeight) + (model.Ekler * model.EklerWeight); //II. Danışman var toplamDanismanPuan = (model.Toplantisikligi * model.ToplantisikligiWeight) + (model.IlerlemeRapor * model.IlerlemeRaporWeight) + (model.ProjeGelistirme * model.ProjeGelistirmeWeight); //III. Projenin Kalitesi var toplamProjeKalitePuan = (model.DisiplinliGelistirme * model.DisiplinliGelistirmeWeight) + (model.YeniFikir * model.YeniFikirWeight) + (model.UygulamaKalitesi * model.UygulamaKalitesiWeight) + (model.UygulamaAraclari * model.UygulamaAraclariWeight) + (model.ProjeCozum * model.ProjeCozumWeight); //IV. Sunum var toplamSunumPuan = (model.Duzen * model.DuzenWeight) + (model.ZamanKullanim * model.ZamanKullanimWeight) + (model.SlaytKalite * model.SlaytKaliteWeight) + (model.IletisimYetenek * model.IletisimYetenekWeight) + (model.SoruCevap * model.SoruCevapWeight); //Toplam Puanlar var toplamPuan = (toplamRaporPuan + toplamDanismanPuan + toplamProjeKalitePuan + toplamSunumPuan) / 4; //Genel Toplam Puan var genelToplamPuan = toplamRaporPuan + toplamDanismanPuan + toplamProjeKalitePuan + toplamSunumPuan; #endregion #region Reports Ekle studentFinalGrade = new StudentFinalGrade { ReportsId = model.ReportsId, //I. Rapor DuzenBicim = (decimal)model.DuzenBicim, Alintilama = (decimal)model.Alintilama, YazimveDilkalite = (decimal)model.YazimveDilkalite, RaporBoyut = (decimal)model.RaporBoyut, ProjeTanimi = (decimal)model.ProjeTanimi, GereksinimAnaliz = (decimal)model.GereksinimAnaliz, GercekciKisitlama = (decimal)model.GercekciKisitlama, AhlakiKonu = (decimal)model.AhlakiKonu, SistemTasarim = (decimal)model.SistemTasarim, Uygulama = (decimal)model.Uygulama, Standartlar = (decimal)model.Standartlar, Testler = (decimal)model.Testler, SistemKullanimKılavuz = (decimal)model.SistemKullanimKılavuz, CozumAciklama = (decimal)model.CozumAciklama, Kaynak = (decimal)model.Kaynak, Ekler = (decimal)model.Ekler, ToplamRaporPuan = (decimal)toplamRaporPuan, //II. Danışman Toplantisikligi = (decimal)model.Toplantisikligi, IlerlemeRapor = (decimal)model.IlerlemeRapor, ProjeGelistirme = (decimal)model.ProjeGelistirme, ToplamDanismanPuan = (decimal)toplamDanismanPuan, //III. Projenin Kalitesi DisiplinliGelistirme = (decimal)model.DisiplinliGelistirme, YeniFikir = (decimal)model.YeniFikir, UygulamaKalitesi = (decimal)model.UygulamaKalitesi, UygulamaAraclari = (decimal)model.UygulamaAraclari, ProjeCozum = (decimal)model.ProjeCozum, ToplamKalitePuan = (decimal)toplamProjeKalitePuan, //IV. Sunum Duzen = (decimal)model.Duzen, ZamanKullanim = (decimal)model.ZamanKullanim, SlaytKalite = (decimal)model.SlaytKalite, IletisimYetenek = (decimal)model.IletisimYetenek, SoruCevap = (decimal)model.SoruCevap, ToplamSunumPuan = (decimal)toplamSunumPuan, //Toplamlar GenelToplamRaporPuan = (decimal)toplamPuan, GenelBolunmusToplamPuan = (decimal)genelToplamPuan, GenelOzgunluk = (decimal)model.Ozgunluk, GenelSonPuan = ((decimal)toplamPuan * (decimal)model.Ozgunluk) / 100 }; await _studentFinalGradeService.AddAsync(studentFinalGrade); mesaj = "Puanlama Başarıyle Eklendi."; #endregion return(Json(new JsonMessage { HataMi = false, Baslik = "İşlem Başarılı", Mesaj = mesaj })); } catch (Exception ex) { return(Json(new JsonMessage { HataMi = true, Baslik = "İşlem Başarısız", Mesaj = "İşlem Sırasında Hata Oluştu." })); } }
/// <summary> /// Add Update Student Final Grade /// </summary> /// <param name="studentFinalGradeListModel"></param> /// <returns></returns> public StudentFinalGradeListModel AddUpdateStudentFinalGrade(StudentFinalGradeListModel studentFinalGradeListModel) { using (var transaction = this.context.Database.BeginTransaction()) { try { List <StudentFinalGrade> studentFinalGradeList = new List <StudentFinalGrade>(); //List<StudentFinalGradeStandard> studentFinalGradeStandardList = new List<StudentFinalGradeStandard>(); List <StudentFinalGradeComments> studentFinalGradeCommentList = new List <StudentFinalGradeComments>(); int Id = 1; var StudentFinalStandard = this.context?.StudentFinalGradeStandard.ToList(); if (StudentFinalStandard.Count > 0) { Id = Convert.ToInt32(StudentFinalStandard.OrderByDescending(s => s.Id).FirstOrDefault().Id + 1); } int?YrMarkingPeriodId = 0; int?SmstrMarkingPeriodId = 0; int?QtrMarkingPeriodId = 0; if (studentFinalGradeListModel.MarkingPeriodId != null) { var markingPeriodid = studentFinalGradeListModel.MarkingPeriodId.Split("_", StringSplitOptions.RemoveEmptyEntries); if (markingPeriodid.First() == "2") { QtrMarkingPeriodId = Int32.Parse(markingPeriodid.ElementAt(1)); } if (markingPeriodid.First() == "1") { SmstrMarkingPeriodId = Int32.Parse(markingPeriodid.ElementAt(1)); } if (markingPeriodid.First() == "0") { YrMarkingPeriodId = Int32.Parse(markingPeriodid.ElementAt(1)); } } foreach (var studentFinalGrade in studentFinalGradeListModel.studentFinalGradeList) { foreach (var studentFinalGradeStandarddata in studentFinalGrade.StudentFinalGradeStandard) { studentFinalGradeStandarddata.Id = Id; studentFinalGradeStandarddata.QtrMarkingPeriodId = (QtrMarkingPeriodId > 0) ? QtrMarkingPeriodId : null; studentFinalGradeStandarddata.SmstrMarkingPeriodId = (SmstrMarkingPeriodId > 0) ? SmstrMarkingPeriodId : null; studentFinalGradeStandarddata.YrMarkingPeriodId = (YrMarkingPeriodId > 0) ? YrMarkingPeriodId : null; studentFinalGradeStandarddata.CalendarId = studentFinalGradeListModel.CalendarId; studentFinalGradeStandarddata.AcademicYear = studentFinalGradeListModel.AcademicYear; studentFinalGradeStandarddata.TeacherComment = studentFinalGrade.TeacherComment; Id++; } } if (studentFinalGradeListModel.studentFinalGradeList.Count > 0) { var studentFinalGradeData = new List <StudentFinalGrade>(); //if (studentFinalGradeListModel.MarkingPeriodId != null) //{ studentFinalGradeData = this.context?.StudentFinalGrade.Where(e => e.SchoolId == studentFinalGradeListModel.SchoolId && e.TenantId == studentFinalGradeListModel.TenantId && e.CourseId == studentFinalGradeListModel.CourseId && e.CourseSectionId == studentFinalGradeListModel.CourseSectionId && e.CalendarId == studentFinalGradeListModel.CalendarId /*&& (YrMarkingPeriodId > 0 && e.YrMarkingPeriodId == YrMarkingPeriodId || SmstrMarkingPeriodId > 0 && e.SmstrMarkingPeriodId == SmstrMarkingPeriodId || QtrMarkingPeriodId > 0 && e.QtrMarkingPeriodId == QtrMarkingPeriodId)*/).ToList(); //} //else //{ // studentFinalGradeData = this.context?.StudentFinalGrade.Where(e => e.SchoolId == studentFinalGradeListModel.SchoolId && e.TenantId == studentFinalGradeListModel.TenantId && e.CourseId == studentFinalGradeListModel.CourseId && e.CourseSectionId == studentFinalGradeListModel.CourseSectionId && e.CalendarId == studentFinalGradeListModel.CalendarId && e.YrMarkingPeriodId == null && e.SmstrMarkingPeriodId == null && e.QtrMarkingPeriodId == null).ToList(); //} if (studentFinalGradeData.Count > 0) { var containStudentFinalGradeSrlno = studentFinalGradeData.Select(x => x.StudentFinalGradeSrlno).Distinct().ToList(); List <long> studentFinalGradeSrlnos = new List <long> { }; studentFinalGradeSrlnos = containStudentFinalGradeSrlno; var studentFinalGradeStandardData = this.context?.StudentFinalGradeStandard.Where(e => e.SchoolId == studentFinalGradeListModel.SchoolId && e.TenantId == studentFinalGradeListModel.TenantId && e.CalendarId == studentFinalGradeListModel.CalendarId && /*(YrMarkingPeriodId > 0 && e.YrMarkingPeriodId == YrMarkingPeriodId || SmstrMarkingPeriodId > 0 && e.SmstrMarkingPeriodId == SmstrMarkingPeriodId || QtrMarkingPeriodId > 0 && e.QtrMarkingPeriodId == QtrMarkingPeriodId) &&*/ (studentFinalGradeSrlnos == null || (studentFinalGradeSrlnos.Contains(e.StudentFinalGradeSrlno)))).ToList(); if (studentFinalGradeStandardData.Count > 0) { this.context?.StudentFinalGradeStandard.RemoveRange(studentFinalGradeStandardData); } var studentFinalGradeCommentsData = this.context?.StudentFinalGradeComments.Where(e => e.SchoolId == studentFinalGradeListModel.SchoolId && e.TenantId == studentFinalGradeListModel.TenantId && (studentFinalGradeSrlnos == null || (studentFinalGradeSrlnos.Contains(e.StudentFinalGradeSrlno)))).ToList(); if (studentFinalGradeCommentsData.Count > 0) { this.context?.StudentFinalGradeComments.RemoveRange(studentFinalGradeCommentsData); } this.context?.StudentFinalGrade.RemoveRange(studentFinalGradeData); this.context?.SaveChanges(); long?studentFinalGradeSrlno = 1; var studentFinalGradeSrlnoData = this.context?.StudentFinalGrade.Where(x => x.SchoolId == studentFinalGradeListModel.SchoolId && x.TenantId == studentFinalGradeListModel.TenantId).OrderByDescending(x => x.StudentFinalGradeSrlno).FirstOrDefault(); if (studentFinalGradeSrlnoData != null) { studentFinalGradeSrlno = studentFinalGradeSrlnoData.StudentFinalGradeSrlno + 1; } foreach (var studentFinalGrade in studentFinalGradeListModel.studentFinalGradeList) { var studentFinalGradeUpdate = new StudentFinalGrade() { TenantId = studentFinalGradeListModel.TenantId, SchoolId = studentFinalGradeListModel.SchoolId, StudentId = studentFinalGrade.StudentId, CourseId = studentFinalGradeListModel.CourseId, CourseSectionId = studentFinalGradeListModel.CourseSectionId, GradeId = studentFinalGrade.GradeId, GradeScaleId = studentFinalGrade.GradeScaleId, AcademicYear = studentFinalGradeListModel.AcademicYear, CalendarId = studentFinalGradeListModel.CalendarId, YrMarkingPeriodId = (YrMarkingPeriodId > 0) ? YrMarkingPeriodId : null, SmstrMarkingPeriodId = (SmstrMarkingPeriodId > 0) ? SmstrMarkingPeriodId : null, QtrMarkingPeriodId = (QtrMarkingPeriodId > 0) ? QtrMarkingPeriodId : null, IsPercent = studentFinalGradeListModel.IsPercent, PercentMarks = studentFinalGrade.PercentMarks, GradeObtained = studentFinalGrade.GradeObtained, UpdatedBy = studentFinalGradeListModel.CreatedOrUpdatedBy, UpdatedOn = DateTime.UtcNow, StudentFinalGradeSrlno = (long)studentFinalGradeSrlno, BasedOnStandardGrade = studentFinalGrade.BasedOnStandardGrade, TeacherComment = studentFinalGrade.TeacherComment, StudentFinalGradeComments = studentFinalGrade.StudentFinalGradeComments?.Select(c => { c.UpdatedBy = studentFinalGradeListModel.CreatedOrUpdatedBy; c.UpdatedOn = DateTime.UtcNow; return(c); }).ToList(), StudentFinalGradeStandard = studentFinalGrade.StudentFinalGradeStandard?.Select(c => { c.UpdatedBy = studentFinalGradeListModel.CreatedOrUpdatedBy; c.UpdatedOn = DateTime.UtcNow; return(c); }).ToList() }; studentFinalGradeList.Add(studentFinalGradeUpdate); studentFinalGradeSrlno++; } studentFinalGradeListModel._message = "Student Final Grade Updated Succsesfully."; } else { long?studentFinalGradeSrlno = 1; var studentFinalGradeSrlnoData = this.context?.StudentFinalGrade.Where(x => x.SchoolId == studentFinalGradeListModel.SchoolId && x.TenantId == studentFinalGradeListModel.TenantId).OrderByDescending(x => x.StudentFinalGradeSrlno).FirstOrDefault(); if (studentFinalGradeSrlnoData != null) { studentFinalGradeSrlno = studentFinalGradeSrlnoData.StudentFinalGradeSrlno + 1; } foreach (var studentFinalGrade in studentFinalGradeListModel.studentFinalGradeList) { var studentFinalGradeAdd = new StudentFinalGrade() { TenantId = studentFinalGradeListModel.TenantId, SchoolId = studentFinalGradeListModel.SchoolId, StudentId = studentFinalGrade.StudentId, CourseId = studentFinalGradeListModel.CourseId, CourseSectionId = studentFinalGradeListModel.CourseSectionId, GradeId = studentFinalGrade.GradeId, GradeScaleId = studentFinalGrade.GradeScaleId, AcademicYear = studentFinalGradeListModel.AcademicYear, CalendarId = studentFinalGradeListModel.CalendarId, YrMarkingPeriodId = (YrMarkingPeriodId > 0) ? YrMarkingPeriodId : null, SmstrMarkingPeriodId = (SmstrMarkingPeriodId > 0) ? SmstrMarkingPeriodId : null, QtrMarkingPeriodId = (QtrMarkingPeriodId > 0) ? QtrMarkingPeriodId : null, IsPercent = studentFinalGradeListModel.IsPercent, PercentMarks = studentFinalGrade.PercentMarks, GradeObtained = studentFinalGrade.GradeObtained, CreatedBy = studentFinalGradeListModel.CreatedOrUpdatedBy, CreatedOn = DateTime.UtcNow, StudentFinalGradeSrlno = (long)studentFinalGradeSrlno, BasedOnStandardGrade = studentFinalGrade.BasedOnStandardGrade, TeacherComment = studentFinalGrade.TeacherComment, StudentFinalGradeComments = studentFinalGrade.StudentFinalGradeComments?.Select(c => { c.CreatedBy = studentFinalGradeListModel.CreatedOrUpdatedBy; c.CreatedOn = DateTime.UtcNow; return(c); }).ToList(), StudentFinalGradeStandard = studentFinalGrade.StudentFinalGradeStandard?.Select(c => { c.CreatedBy = studentFinalGradeListModel.CreatedOrUpdatedBy; c.CreatedOn = DateTime.UtcNow; return(c); }).ToList() }; studentFinalGradeList.Add(studentFinalGradeAdd); studentFinalGradeSrlno++; } studentFinalGradeListModel._message = "Student Final Grade Added succsesfully."; } this.context?.StudentFinalGrade.AddRange(studentFinalGradeList); //this.context?.StudentFinalGradeStandard.AddRange(studentFinalGradeStandardList); this.context?.SaveChanges(); transaction.Commit(); studentFinalGradeListModel._failure = false; } } catch (Exception es) { transaction.Rollback(); studentFinalGradeListModel._failure = true; studentFinalGradeListModel._message = es.Message; } } return(studentFinalGradeListModel); }