protected int GetStudentWorkProcProgress(StudentWorkProc studentWorkProc) { Work work = studentWorkProc.WorkProc.Work; if (studentWorkProc.CurrentValue.Completion != 0) { return 100; } else { int completedStages = 0; int allRequiredStages = 0; foreach (var studentStageProc in studentWorkProc.StudentStageProcs) { allRequiredStages++; if (studentStageProc.CurrentValue.Completed) completedStages++; } if (allRequiredStages == 0) return 0; else if (completedStages == allRequiredStages) return 100; else { if (completedStages == 0) return 0; int progress = (int)(((float)completedStages / (float)allRequiredStages) * 100); return progress; } } }
public void AddUserToGroup(HomeServerContext context, int studentId, int groupId, DateTime date) { Student student = context.Students.Find(studentId); Group group = context.Groups.Find(groupId); if (student == null) return; if (group == null) return; if(group.Students.Contains(student)) return; student.GroupId = group.Id; //get active packs for this group var temp = context.Packs.Where(p => p.Course.CourseStateId == 2).ToList(); List<Pack> packs = new List<Pack>(); foreach(var t in temp) { foreach(var g in t.Groups) { if (g.Id == groupId) { packs.Add(t); } } } //add visits and studentProcs for each packs foreach(var pack in packs) { foreach(var lesson in pack.Lessons) { if(lesson.Date < date) continue; lesson.Visits.Add(new Visit() { StudentId = student.Id, Values = new List<VisitValue>() { new VisitValue() { Value = VisitValue.DEFAULT_VALUE, Version = 1 } } }); } foreach(var workProc in pack.WorkProcs) { var work = context.Works.Find(workProc.WorkId); work.WorkStages = context.WorkStages.Where(ws => ws.WorkId == workProc.WorkId).ToList(); StudentWorkProc studentProc = new StudentWorkProc() { StudentId = student.Id, Values = new List<StudentWorkProcValue>() { new StudentWorkProcValue() { Version = 1 } }, StudentStageProcs = new List<StudentStageProc>() }; foreach (var workStage in work.WorkStages) { studentProc.StudentStageProcs.Add(new StudentStageProc() { WorkStageId = workStage.Id, Values = new List<StudentStageProcValue>() { new StudentStageProcValue() { Version = 1 } } }); } workProc.StudentWorkProcs.Add(studentProc); } } StudentTransaction studentTransaction = new StudentTransaction() { Student = student, Group = group, Date = date }; context.StudentTransaction.Add(studentTransaction); context.SaveChanges(); }
protected string GetStudentWorkProcTitle(StudentWorkProc studentWorkProc) { Work work = studentWorkProc.WorkProc.Work; if (studentWorkProc.CurrentValue.Completion != 0) { if (work.WorkControlTypeId == 1) { return "+"; } else { return studentWorkProc.CurrentValue.Completion.ToString(); } } else { int completedStages = 0; int allRequiredStages = 0; foreach (var studentStageProc in studentWorkProc.StudentStageProcs) { allRequiredStages++; if (studentStageProc.CurrentValue.Completed) completedStages++; } if (allRequiredStages == 0) return ""; else if (completedStages == allRequiredStages) return "100%"; else { if (completedStages == 0) return ""; int progress = (int)(((float)completedStages / (float)allRequiredStages) * 100); return progress.ToString() + "%"; } } }