public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (String.IsNullOrEmpty(Name)) yield return new RuleViolation("Name is required", "Name"); if (Name.Equals("courses", StringComparison.CurrentCultureIgnoreCase)) yield return new RuleViolation(@"Course cannot be named ""Courses""", "Name"); if (ShortName.Equals("courses", StringComparison.CurrentCultureIgnoreCase)) yield return new RuleViolation(@"Course cannot have Short Name ""Courses""", "ShortName"); if (!Regex.IsMatch(ShortName, @"\A[a-zA-Z0-9_-]+\Z")) yield return new RuleViolation("Short Name can only contain letters, numbers, underscores (_) and dashes (-)", "ShortName"); //TODO update this check to include Site constraint //Course nameCheckCourse = dataRepository.GetCourseByName(Name); //if (nameCheckCourse != null && nameCheckCourse.CourseID != CourseID) //{ // yield return new RuleViolation(Name + " already exists", "Name"); //} //Course shortnameCheckCourse = dataRepository.GetCourseByShortName(ShortName); //if (shortnameCheckCourse != null && shortnameCheckCourse.CourseID != CourseID) //{ // yield return new RuleViolation(@"Short Name """ + ShortName + @""" already exists", "ShortName"); //} yield break; }
public ActionResult GetAssessmentImportForm(Guid id) { AssessTrackDataRepository repo = new AssessTrackDataRepository(); Assessment assessment = repo.GetAssessmentByID(id); string importform = SubmissionFormHelpers.RenderImportForm(assessment); return Content(importform); }
public GradeSection(AssessmentType assessmentType, Profile profile, AssessTrackDataRepository repo, bool includeExtraCredit, DateTime date) { AssessmentType = assessmentType; TotalPoints = MaxPoints = 0; Grades = new List<Grade>(); CourseTermMember member = repo.GetCourseTermMemberByMembershipID(assessmentType.CourseTerm, profile.MembershipID); List<Assessment> assessments = repo.GetAllNonTestBankAssessments(assessmentType.CourseTerm, includeExtraCredit, assessmentType, member).Where(test => test.DueDate.CompareTo(date) < 0).ToList(); foreach (Assessment assessment in assessments) { Grade grade = new Grade(assessment, profile); Grades.Add(grade); if ((grade.SubmissionRecord != null && grade.SubmissionRecord.GradedBy != null) || (DateTime.Now.CompareTo(assessment.DueDate) > 0 && grade.SubmissionRecord == null)) { MaxPoints += assessment.Weight; TotalPoints += grade.Points; } } //if (TotalPoints > 0 && MaxPoints == 0) //if everything is extra credit //{ // MaxPoints = 1; //to avoid division by zero //} if (MaxPoints == 0) { Percentage = 0; Weight = 0; } else { Percentage = (TotalPoints / MaxPoints) * 100; Weight = assessmentType.Weight; } }
public static string CurrentSiteLink(this HtmlHelper html, string before, string after) { AssessTrackDataRepository data = new AssessTrackDataRepository(); if (html.ViewContext.RouteData.Values["siteShortName"] != null) { string siteShortName = html.ViewContext.RouteData.Values["siteShortName"].ToString(); Site site = data.GetSiteByShortName(siteShortName); if (site == null) { return string.Empty; } string sitelink = HtmlHelper.GenerateRouteLink(html.ViewContext.RequestContext, html.RouteCollection, site.Title, null, new System.Web.Routing.RouteValueDictionary( new { action = "Details", controller = "Site", siteShortName = siteShortName }), null); if (site != null) { string finallink = before + sitelink + after; return finallink; } } return string.Empty; }
public double GetFinalGrade(bool includeExtraCredit) { if (this.AccessLevel != 1) { throw new Exception("Only Students have Final Grades."); } double finalgrade = 0.0; double coursTermPoints = 0.0; double courseTermMaxPoints = 0.0; AssessTrackDataRepository repo = new AssessTrackDataRepository(); foreach (AssessmentType asmtType in this.CourseTerm.AssessmentTypes.Where(type => !type.QuestionBank)) { GradeSection section = new GradeSection(asmtType, this.Profile,repo,includeExtraCredit); if (section.Weight > 0) { coursTermPoints += ((section.TotalPoints / section.MaxPoints) * asmtType.Weight); courseTermMaxPoints += section.Weight; } } finalgrade = ((coursTermPoints / courseTermMaxPoints) * 100); if (finalgrade >= 0) { return finalgrade; } return 0.0; }
// // GET: /QuizBuilderImport/ public ActionResult GetCourseOfferings() { AssessTrackDataRepository repo = new AssessTrackDataRepository(); List<CourseTerm> courseTerms = repo.GetUserCourseTerms(5); var jsonCourseTerms = from ct in courseTerms select new { name = ct.Name, id = ct.CourseTermID }; return Json(jsonCourseTerms); }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (String.IsNullOrEmpty(Name)) yield return new RuleViolation("Name is required", "Name"); if (Regex.IsMatch(Name,"assessmentTypes|terms|Details|Edit|Delete",RegexOptions.IgnoreCase)) yield return new RuleViolation(@"Term cannot be named """+ Name +"\"", "Name"); if (this.Site != null) { int nameCount = Site.Terms.Count(t => t.Name == Name); if (nameCount > 1) { yield return new RuleViolation(@"A Term named """ + Name + "\" already exists for this Site", "Name"); } } if (StartDate == null) yield return new RuleViolation("Start Date is required", "StartDate"); if (EndDate == null) yield return new RuleViolation("End Date is required", "EndDate"); if ((EndDate != null && StartDate != null) && (EndDate.CompareTo(StartDate) < 0)) { yield return new RuleViolation("End Date must be later than Start Date", "EndDate"); } yield break; }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (DueDate.CompareTo(DateTime.Now) < 1) { yield return new RuleViolation("DueDate must be in the future!", "DueDate"); } yield break; }
public ActionResult GetAssessments(Guid id) { AssessTrackDataRepository repo = new AssessTrackDataRepository(); CourseTerm term = repo.GetCourseTermByID(id); var assessments = from assessment in term.Assessments orderby assessment.Name select new { name = assessment.Name, id = assessment.AssessmentID }; return Json(assessments); }
public static string GetFullNameForID(Guid? id) { try { AssessTrackDataRepository repo = new AssessTrackDataRepository(); Profile user = repo.GetProfileByID(id.Value); return user.FirstName + " " + user.LastName; } catch { return "N/A"; } }
public ActionResult GetQuestion(Guid id) { AssessTrackDataRepository repo = new AssessTrackDataRepository(); Question question = repo.GetQuestionByID(id); //Strip id attributes from the question and its answers XElement questionXml = XElement.Parse(question.Data); questionXml.SetAttributeValue("id", null); foreach (XElement answer in questionXml.Elements("answer")) { answer.SetAttributeValue("id", null); } string questiondata = DesignerHelper.GetQuestionMarkupFromXml(questionXml); return Content(questiondata); }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (String.IsNullOrEmpty(Title)) yield return new RuleViolation("Title is required", "Title"); if (String.IsNullOrEmpty(ShortName)) yield return new RuleViolation("Short Name is required", "ShortName"); if (!Regex.IsMatch(ShortName, @"\A[a-zA-Z0-9_-]+\Z")) yield return new RuleViolation("Short Name can only contain letters, numbers, underscores (_) and dashes (-)", "ShortName"); yield break; }
public static bool CheckAuthorization(HttpContext httpContext, Site site, CourseTerm courseTerm, AuthScope scope, int minLevel, int maxLevel) { AssessTrackDataRepository data = new AssessTrackDataRepository(); if (httpContext == null) { throw new ArgumentNullException("httpContext"); } IPrincipal user = httpContext.User; if (!user.Identity.IsAuthenticated) { return false; } //Get the user's profile and see if they have //the required access level Profile profile = data.GetLoggedInProfile(); switch (scope) { case AuthScope.Application: { if (profile.AccessLevel < minLevel || profile.AccessLevel > maxLevel) return false; break; } case AuthScope.Site: { SiteMember member = data.GetSiteMemberByMembershipID(site,profile.MembershipID); if (member == null || (member.AccessLevel < minLevel || member.AccessLevel > maxLevel)) return false; } break; case AuthScope.CourseTerm: { CourseTermMember member = data.GetCourseTermMemberByMembershipID(courseTerm, profile.MembershipID); if (member == null || (member.AccessLevel < minLevel || member.AccessLevel > maxLevel)) return false; } break; default: //TODO Do some logging here maybe? return false; } return true; }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (String.IsNullOrEmpty(FirstName)) yield return new RuleViolation("First Name is required", "FirstName"); if (String.IsNullOrEmpty(LastName)) yield return new RuleViolation("Last Name is required", "LastName"); if (FirstName != null && FirstName.Length > 50) yield return new RuleViolation("First Name cannot be longer than 50 characters", "FirstName"); if (LastName != null && LastName.Length > 50) yield return new RuleViolation("Last Name cannot be longer than 50 characters", "LastName"); if (Major != null && Major.Length > 100) yield return new RuleViolation("Major cannot be longer than 100 characters", "Major"); yield break; }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (String.IsNullOrEmpty(Name)) yield return new RuleViolation("Name is required", "Name"); if (CourseTerm != null) { int nameCount = CourseTerm.AssessmentTypes.Count(at => at.Name == Name); if (nameCount > 1) { yield return new RuleViolation(@"An AssessmentType named """ + Name + "\" already exists for this course/term", "Name"); } } if (Weight < 0) yield return new RuleViolation("Weight cannot be negative", "Weight"); yield break; }
public double Score() { AssessTrackDataRepository repo = new AssessTrackDataRepository(); return Score(repo.GetLoggedInProfile()); }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (String.IsNullOrEmpty(Name)) yield return new RuleViolation("Name is required", "Name"); if (!Regex.IsMatch(ShortName, @"\A[a-zA-Z0-9_-]+\Z")) yield return new RuleViolation("Short Name can only contain letters, numbers, underscores (_) and dashes (-)", "ShortName"); if (this.Site != null) { int nameCount = Site.CourseTerms.Count(t => t.ShortName == ShortName); if (nameCount > 1) { yield return new RuleViolation(@"A Course Offering with Short Name """ + ShortName + "\" already exists for this Site", "ShortName"); } } yield break; }
//Will return false if routeData points to non-existant site or courseterm public static bool CheckAuthorization(AuthScope scope, int minLevel, int maxLevel, RouteValueDictionary routeData) { //RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); AssessTrackDataRepository data = new AssessTrackDataRepository(); string siteShortName; Site site = null; string courseTermShortName; CourseTerm courseTerm = null; //HttpContext.Current. if (scope != AuthScope.Application) { //Try to get the site by shortName if (routeData["siteShortName"] != null) { siteShortName = routeData["siteShortName"].ToString(); site = data.GetSiteByShortName(siteShortName); } //if scope is Site, then {id} should refer to SiteID else if (scope != AuthScope.CourseTerm && routeData["id"] != null) { try { Guid siteID = new Guid(routeData["id"].ToString()); site = data.GetSiteByID(siteID); } catch { //Do nothing here //if this fails, site will be null and the following code will //return SiteNotFound } } if (site == null) { return false; } if (scope == AuthScope.CourseTerm) { //Try to get the site by shortName if (routeData["courseTermShortName"] != null) { courseTermShortName = routeData["courseTermShortName"].ToString(); courseTerm = data.GetCourseTermByShortName(site, courseTermShortName); } //if scope is CourseTerm, then {id} should refer to CourseTermID else if (routeData["id"].ToString() != null) { try { Guid courseTermID = new Guid(routeData["id"].ToString()); courseTerm = data.GetCourseTermByID(site, courseTermID); } catch { //Do nothing here //if this fails, courseTerm will be null and the following code will //return CourseTermNotFound } } if (courseTerm == null) { return false; } } } //Set up is complete, now check if the user is authorized if (CheckAuthorization(HttpContext.Current, site, courseTerm, scope, minLevel, maxLevel)) { return true; } else { return false; } }
public static bool IsCurrentStudentOrUserIsAdmin(CourseTerm ct, Guid requestedID) { try { AssessTrackDataRepository repo = new AssessTrackDataRepository(); CourseTermMember member = repo.GetCourseTermMemberByMembershipID(ct, UserHelpers.GetCurrentUserID()); if (member == null) { return false; } else if (member.AccessLevel < 2 && member.MembershipID != requestedID) { return false; } else { return true; } } catch { return false; } }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); if (String.IsNullOrEmpty(Name)) yield return new RuleViolation("Name is required", "Name"); if (string.IsNullOrEmpty(Data)) yield return new RuleViolation("Data cannot be empty", "Data"); if (CourseTerm != null) { int nameCount = CourseTerm.Assessments.Count(a => a.Name == Name); if (nameCount > 1) { yield return new RuleViolation(@"An Assessment named """ + Name + "\" already exists for this course/term", "Name"); } } yield break; }
double ITaggable.Score() { AssessTrackDataRepository repo = new AssessTrackDataRepository(); return (this as ITaggable).Score(repo.GetLoggedInProfile()); }
public static void SaveFile(AssessTrackDataRepository repo, AssessTrack.Models.File file) { if (file == null) return; repo.SaveFile(file); }
public IEnumerable<RuleViolation> GetRuleViolations() { AssessTrackDataRepository dataRepository = new AssessTrackDataRepository(); //TODO: Confirm that score is not negative yield break; }