private e.AssignmentEnrollment CreateEntityFromAssignmentEnrollment(AssignmentEnrollment ae) { if (ae == null) { return(null); } e.AssignmentEnrollment result = e.AssignmentEnrollment.CreateAssignmentEnrollment(ae.Id, DateTime.Now, true); result.TeamReference.Value = (from t in _m.Team where t.Id == ae.Team.Id select t).First(); result.TournamentAssignmentReference.Value = (from ta in _m.TournamentAssignment where ta.Id == ae.TournamentAssignment.Id select ta).First(); //e.AssignmentEnrollment result = new MoCS.Data.Entity.AssignmentEnrollment() //{ // IsActive = ae.IsActive, // StartDate = ae.StartDate, // TournamentAssignment = CreateEntityFromTournamentAssignment(ae.TournamentAssignment), // Team = CreateEntityFromTeam(ae.Team) //}; return(result); }
public ActionResult UploadSubmit() { Team team = SessionUtil.GetTeamFromFormsAuthentication(); Tournament t = SessionUtil.GetTournamentFromSession(); TournamentAssignment ta = SessionUtil.GetTournamentAssignmentFromSession(); Assignment a = SessionUtil.GetAssignmentFromSession(); AssignmentEnrollment ae = SessionUtil.GetAssignmentEnrollmentFromSession(); if (Request.Files.Count == 1) { HttpPostedFileBase postedFile = Request.Files[0]; TempData["SubmittedFileText"] = string.Format("File: {0} submitted", postedFile.FileName); //Check for big file (> 128KB) int submitMaxSize = int.Parse(ConfigurationManager.AppSettings["SubmitMaxSize"]) * 1024; if (postedFile.ContentLength > submitMaxSize) { TempData["SubmittedFileText"] = string.Format("Submitted file is too large. Maximum size: {0}KB", submitMaxSize); return(RedirectToAction("Index")); } //Check for right file extension if (postedFile.FileName.IndexOf(".cs") != postedFile.FileName.Length - 3) { TempData["SubmittedFileText"] = "Submitted file doesn't have extension '.cs'."; return(RedirectToAction("Index")); } //Construct the submit Submit s = new Submit() { FileName = Path.GetFileName(postedFile.FileName), Team = team, TournamentAssignment = ta, AssignmentEnrollment = ae }; s.Data = new byte[postedFile.ContentLength]; postedFile.InputStream.Read(s.Data, 0, postedFile.ContentLength); // Do the submit try { ClientFacade.Instance.SaveSubmit(s); } catch (MoCSException e) { TempData["SubmittedFileText"] = "Unable to process submit. Reason: " + e.Message; } } return(RedirectToAction("Index")); }
public AssignmentEnrollment SaveAssignmentEnrollment(AssignmentEnrollment ae) { e.AssignmentEnrollment toSave = CreateEntityFromAssignmentEnrollment(ae); _m.AddToAssignmentEnrollment(toSave); _m.SaveChanges(); _m.Refresh(System.Data.Objects.RefreshMode.StoreWins, toSave); ae.Id = toSave.Id; return(ae); }
private AssignmentEnrollment CreateIdAssignmentEnrollment(AssignmentEnrollment ae) { AssignmentEnrollment result = new AssignmentEnrollment { Id = ae.Id, Team = CreateIdTeam(ae.Team), TournamentAssignment = CreateIdTournamentAssignment(ae.TournamentAssignment), IsActive = true, StartDate = DateTime.Now }; return(result); }
public static AssignmentEnrollment GetAssignmentEnrollmentFromSession() { AssignmentEnrollment result = null; if (HttpContext.Current.Session["assignmentEnrollmentId"] != null) { result = new AssignmentEnrollment() { Id = (int)HttpContext.Current.Session["assignmentEnrollmentId"], StartDate = (DateTime)HttpContext.Current.Session["assignmentEnrollmentStartDate"] }; } return(result); }
private AssignmentEnrollment CreateAssignmentEnrollmentFromEntity(e.AssignmentEnrollment eAE) { if (eAE == null) { return(null); } AssignmentEnrollment result = new AssignmentEnrollment() { Id = eAE.Id, IsActive = eAE.IsActive, StartDate = eAE.StartDate, Team = CreateTeamFromEntity(eAE.Team), TournamentAssignment = CreateTournamentAssignmentFromEntity(eAE.TournamentAssignment) }; return(result); }
private e.AssignmentEnrollment CreateEntityFromAssignmentEnrollment(AssignmentEnrollment ae) { if (ae == null) { return(null); } e.AssignmentEnrollment result = e.AssignmentEnrollment.CreateAssignmentEnrollment(ae.Id, DateTime.Now, true); result.TeamReference.Value = (from t in _m.Team where t.Id == ae.Team.Id select t).First(); result.TournamentAssignmentReference.Value = (from ta in _m.TournamentAssignment where ta.Id == ae.TournamentAssignment.Id select ta).First(); return(result); }
public ActionResult SelectEnrollment(int assignmentEnrollmentId) { Team team = SessionUtil.GetTeamFromFormsAuthentication(); AssignmentEnrollment ae = ClientFacade.Instance.GetAssignmentEnrollmentById(assignmentEnrollmentId); if (ae != null && ae.Team.Id == team.Id) { // Set session SessionUtil.SetSession(ae.TournamentAssignment.Tournament, ae.TournamentAssignment, ae.TournamentAssignment.Assignment, ae); } else { return(RedirectToAction("Index")); } return(RedirectToAction("Index", "CurrentAssignment")); }
public Submit SaveSubmit(Submit submit) { Submit result = null; //Check for unprocessed and already successful submits foreach (Submit s in GetSubmitsForAssignmentEnrollment(submit.AssignmentEnrollment.Id)) { switch (s.ConvertStatus(s.Status)) { case SubmitStatus.Submitted: case SubmitStatus.Processing: throw new MoCSException("There are unprocessed submits. Please wait until all your submits have been processed."); case SubmitStatus.Success: throw new MoCSException("A successful solution has already been submitted."); default: break; } } submit.Status = SubmitStatus.Submitted.ToString(); submit.SubmitDate = DateTime.Now; submit.StatusDate = DateTime.Now; submit.IsProcessed = false; // Get the AssignmentEnrollment in order to determine the time since enrollment. AssignmentEnrollment ae = GetAssignmentEnrollmentById(submit.AssignmentEnrollment.Id); TimeSpan timeSinceEnrollment = submit.SubmitDate - ae.StartDate; submit.SecondsSinceEnrollment = (long)timeSinceEnrollment.TotalSeconds; submit.ProcessingDetails = "Empty"; submit.FileContents = UTF8Encoding.UTF8.GetString(submit.Data); result = _dataAccess.SaveSubmit(submit); NotifySubmitStatusChange(result.Id, SubmitStatus.Submitted, "", result.StatusDate); return(result); }
public ActionResult Enroll() { Team team = SessionUtil.GetTeamFromFormsAuthentication(); Tournament t = SessionUtil.GetTournamentFromSession(); TournamentAssignment ta = SessionUtil.GetTournamentAssignmentFromSession(); Assignment a = SessionUtil.GetAssignmentFromSession(); if (ta == null) { return(RedirectToAction("Index", "Assignments")); } // TODO: Register the enrollment AssignmentEnrollment ae = new AssignmentEnrollment() { IsActive = true, StartDate = DateTime.Now, Team = new Team { Id = team.Id }, TournamentAssignment = new TournamentAssignment { Id = ta.Id, Tournament = new Tournament { Id = t.Id }, Assignment = new Assignment { Id = a.Id } } }; ClientFacade.Instance.SaveAssignmentEnrollment(ae); return(RedirectToAction("Index")); }
public static void SetSession(Tournament t, TournamentAssignment ta, Assignment a, AssignmentEnrollment ae) { if (t != null) { HttpContext.Current.Session["tournamentId"] = t.Id; HttpContext.Current.Session["tournamentName"] = t.Name; } else { HttpContext.Current.Session.Remove("tournamentId"); HttpContext.Current.Session.Remove("tournamentName"); } if (ta != null) { HttpContext.Current.Session["tournamentAssignmentId"] = ta.Id; } else { HttpContext.Current.Session.Remove("tournamentAssignmentId"); } if (a != null) { HttpContext.Current.Session["assignmentId"] = a.Id; HttpContext.Current.Session["assignmentName"] = a.Name; } else { HttpContext.Current.Session.Remove("assignmentId"); HttpContext.Current.Session.Remove("assignmentName"); } if (ae != null) { HttpContext.Current.Session["assignmentEnrollmentId"] = ae.Id; HttpContext.Current.Session["assignmentEnrollmentStartDate"] = ae.StartDate; } else { HttpContext.Current.Session.Remove("assignmentEnrollmentId"); HttpContext.Current.Session.Remove("assignmentEnrollmentStartDate"); } }
private e.AssignmentEnrollment CreateEntityFromAssignmentEnrollment(AssignmentEnrollment ae) { if (ae == null) { return null; } e.AssignmentEnrollment result = e.AssignmentEnrollment.CreateAssignmentEnrollment(ae.Id, DateTime.Now, true); result.TeamReference.Value = (from t in _m.Team where t.Id == ae.Team.Id select t).First(); result.TournamentAssignmentReference.Value = (from ta in _m.TournamentAssignment where ta.Id == ae.TournamentAssignment.Id select ta).First(); //e.AssignmentEnrollment result = new MoCS.Data.Entity.AssignmentEnrollment() //{ // IsActive = ae.IsActive, // StartDate = ae.StartDate, // TournamentAssignment = CreateEntityFromTournamentAssignment(ae.TournamentAssignment), // Team = CreateEntityFromTeam(ae.Team) //}; return result; }
private AssignmentEnrollment CreateAssignmentEnrollmentFromEntity(e.AssignmentEnrollment eAE) { if (eAE == null) { return null; } AssignmentEnrollment result = new AssignmentEnrollment() { Id = eAE.Id, IsActive = eAE.IsActive, StartDate = eAE.StartDate, Team = CreateTeamFromEntity(eAE.Team), TournamentAssignment = CreateTournamentAssignmentFromEntity(eAE.TournamentAssignment) }; return result; }
public AssignmentEnrollment SaveAssignmentEnrollment(AssignmentEnrollment ae) { e.AssignmentEnrollment toSave = CreateEntityFromAssignmentEnrollment(ae); _m.AddToAssignmentEnrollment(toSave); _m.SaveChanges(); _m.Refresh(System.Data.Objects.RefreshMode.StoreWins, toSave); ae.Id = toSave.Id; return ae; }
/// <summary> /// There are no comments for AssignmentEnrollment in the schema. /// </summary> public void AddToAssignmentEnrollment(AssignmentEnrollment assignmentEnrollment) { base.AddObject("AssignmentEnrollment", assignmentEnrollment); }
private e.AssignmentEnrollment CreateEntityFromAssignmentEnrollment(AssignmentEnrollment ae) { if (ae == null) { return null; } e.AssignmentEnrollment result = e.AssignmentEnrollment.CreateAssignmentEnrollment(ae.Id, DateTime.Now, true); result.TeamReference.Value = (from t in _m.Team where t.Id == ae.Team.Id select t).First(); result.TournamentAssignmentReference.Value = (from ta in _m.TournamentAssignment where ta.Id == ae.TournamentAssignment.Id select ta).First(); return result; }
/// <summary> /// Create a new AssignmentEnrollment object. /// </summary> /// <param name="id">Initial value of Id.</param> /// <param name="startDate">Initial value of StartDate.</param> /// <param name="isActive">Initial value of IsActive.</param> public static AssignmentEnrollment CreateAssignmentEnrollment(int id, global::System.DateTime startDate, bool isActive) { AssignmentEnrollment assignmentEnrollment = new AssignmentEnrollment(); assignmentEnrollment.Id = id; assignmentEnrollment.StartDate = startDate; assignmentEnrollment.IsActive = isActive; return assignmentEnrollment; }
public void Fill(List <TournamentAssignment> taList) { // Get the teams Teams = new List <Team>(); Assignments = new List <Assignment>(); OrderedDictionary tempStatusInfosPerTeam = new OrderedDictionary(); OrderedDictionary submitsPerTournamentAssignment = new OrderedDictionary(); foreach (TournamentAssignment ta in taList) { submitsPerTournamentAssignment.Add(ta.Id.ToString(), new List <Submit>()); Assignments.Add(ta.Assignment); foreach (AssignmentEnrollment ae in ta.AssignmentEnrollmentList) { // Add the team for this enrollment to the list if (!Teams.Exists(t => t.Id == ae.Team.Id)) { Teams.Add(ae.Team); tempStatusInfosPerTeam.Add(ae.Team.Id.ToString(), new List <StatusInfo>()); } } } foreach (Team team in Teams) { foreach (TournamentAssignment ta in taList) { // check if the team has an enrollment for this tournamentassignment AssignmentEnrollment ae = ta.AssignmentEnrollmentList.Find(tae => tae.Team.Id == team.Id); if (ae != null) { //If there's a submit, add it to the dictionary if (ae.SubmitList.Count > 0) { ((List <Submit>)submitsPerTournamentAssignment[ta.Id.ToString()]).Add(ae.SubmitList[0]); } else { //add an empty submit placeholder for this enrollment ((List <Submit>)submitsPerTournamentAssignment[ta.Id.ToString()]).Add(new Submit() { Status = "NullSubmit", Team = ae.Team, SecondsSinceEnrollment = 0 }); } } else { //add an empty submit placeholder for this enrollment ((List <Submit>)submitsPerTournamentAssignment[ta.Id.ToString()]).Add(new Submit() { Status = "NullSubmit", Team = team, SecondsSinceEnrollment = 0 }); } } } foreach (TournamentAssignment ta in taList) { // sort the submits descending ((List <Submit>)submitsPerTournamentAssignment[ta.Id.ToString()]).Sort(new DescendingSubmitComparer()); } foreach (string taId in submitsPerTournamentAssignment.Keys) { int finishOrder = 1; foreach (Submit s in ((List <Submit>)submitsPerTournamentAssignment[taId])) { StatusEnum convertedStatus; convertedStatus = ConvertSubmitStatus(s.ConvertStatus(s.Status)); StatusInfo statusInfo = new StatusInfo(); statusInfo.SecondsSinceEnrollment = s.SecondsSinceEnrollment; statusInfo.Status = convertedStatus; statusInfo.FinishOrder = 0; // If status is finished (successfull submit) add the seconds since enrollment // to the score of the team if (convertedStatus == StatusEnum.Finished) { Teams.Find(t => t.Id == s.Team.Id).Score += s.SecondsSinceEnrollment; statusInfo.FinishOrder = finishOrder; finishOrder++; } ((List <StatusInfo>)tempStatusInfosPerTeam[s.Team.Id.ToString()]).Add(statusInfo); } } Dictionary <int, List <Team> > FinishedPerTeam = new Dictionary <int, List <Team> >(); List <int> finishedCounts = new List <int>(); foreach (string teamId in tempStatusInfosPerTeam.Keys) { // determine how many assignments the team has finished int nrOfFinished = ((List <StatusInfo>)tempStatusInfosPerTeam[teamId]).FindAll(st => st.Status == StatusEnum.Finished).Count; if (!finishedCounts.Exists(f => f == nrOfFinished)) { finishedCounts.Add(nrOfFinished); FinishedPerTeam.Add(nrOfFinished, new List <Team>()); } if (nrOfFinished > 1) { long totalScore = Teams.Find(t => t.Id == int.Parse(teamId)).Score; // calculate mean score long meanScore = (long)Math.Round((double)totalScore / (double)nrOfFinished); Teams.Find(t => t.Id == int.Parse(teamId)).Score = meanScore; } FinishedPerTeam[nrOfFinished].Add(Teams.Find(t => t.Id == int.Parse(teamId))); } finishedCounts.Sort(); finishedCounts.Reverse(); List <Team> sortedTeamList = new List <Team>(); foreach (int finishedCount in finishedCounts) { List <Team> teams = FinishedPerTeam[finishedCount]; teams.Sort(new ScoreComparer()); teams.Reverse(); sortedTeamList.AddRange(teams); } Teams = sortedTeamList; //build definite statusInfosPerTeam dictionary, sorting by team foreach (Team t in Teams) { StatusInfosPerTeam.Add(t.Id.ToString(), tempStatusInfosPerTeam[t.Id.ToString()]); } }
public AssignmentEnrollment SaveAssignmentEnrollment(AssignmentEnrollment ae) { return(_dataAccess.SaveAssignmentEnrollment(ae)); }
public ActionResult Index() { Team team = SessionUtil.GetTeamFromFormsAuthentication(); Tournament t = SessionUtil.GetTournamentFromSession(); TournamentAssignment ta = SessionUtil.GetTournamentAssignmentFromSession(); Assignment a = SessionUtil.GetAssignmentFromSession(); if (ta == null) { return(RedirectToAction("Index", "Assignments")); } bool hasEnrolled = false; // Find enrollment List <AssignmentEnrollment> AEList; AEList = ClientFacade.Instance.GetAssignmentEnrollmentsForTeamForTournamentAssignment(ta.Id, team.Id); //MoCSServiceProxy.Instance.GetAssignmentEnrollmentsForTeamForTournament(teamId, tournamentId); // See if the team has enrolled for the tournament assignment. AssignmentEnrollment ae = AEList.Find(i => i.TournamentAssignment.Id == ta.Id && i.IsActive); if (ae != null) { hasEnrolled = true; SessionUtil.SetSession(t, ta, a, ae); } else { SessionUtil.SetSession(t, ta, a, null); } List <Submit> submitsByTeam = new List <Submit>(); ta = ClientFacade.Instance.GetTournamentAssignmentById(ta.Id, false); if (hasEnrolled) { submitsByTeam = ClientFacade.Instance.GetSubmitsForAssignmentEnrollment(ae.Id); } // Construct the model CurrentAssignmentModel caModel = new CurrentAssignmentModel(); caModel.HasEnrolled = hasEnrolled; caModel.AssignmentName = ta.Assignment.FriendlyName; caModel.AssignmentTagline = ta.Assignment.Tagline; caModel.AssignmentCategory = ta.Assignment.Category; caModel.AssignmentDifficulty = ta.Assignment.Difficulty; caModel.AssignmentEnrollmentTime = DateTime.Now; caModel.DownloadURL = "http://google.com"; caModel.SubmitModelList = new List <SubmitModel>(); caModel.TabContentModelList = new List <TabContentModel>(); // Get the AssignmentFiles and Submits if the team has enrolled for this assignment if (hasEnrolled) { foreach (var tc in ta.Assignment.AssignmentFiles) { caModel.TabContentModelList.Add(new TabContentModel() { Name = tc.Name, ContentType = "plaintext", Content = UTF8Encoding.UTF8.GetString(tc.Data).Replace(Environment.NewLine, "<br />") }); } foreach (var submit in submitsByTeam) { string timeTaken = Math.Floor(submit.SecondsSinceEnrollment / 60d) + ":" + submit.SecondsSinceEnrollment % 60; caModel.SubmitModelList.Add(new SubmitModel() { Id = submit.Id, Result = submit.Status, TimeTaken = timeTaken, SubmitDate = submit.SubmitDate, ProcessingDetails = submit.ProcessingDetails, FileContents = submit.FileContents.Replace(Environment.NewLine, "\r\n") //.Replace(Environment.NewLine, "<br />") }); } } return(View(caModel)); }