public static IEnumerable <ReturnObject> CreateObject(this Type type) { var profiles = new ClassProfile(type); foreach (var profile in profiles.GetMembers()) { if (profile.GetConfigureAttribute().Any(x => typeof(ConfigureAttribute).IsAssignableFrom(x.GetType()))) { yield return(profile.CreateObject()); } } }
public ActionResult GetClass(string YearOfJoining, string Department, string Year, string Semester, string Section) { bool accessNotAllowed = String.Equals(Request.Headers.First(x => x.Key == "Authorization").Value, "unauth"); if (accessNotAllowed) { return(Ok(new { success = false, mess = "Not authenticated" })); } List <ClassProfile> classProfile = new List <ClassProfile>(); int yoj; int year; int sem; if (int.TryParse(YearOfJoining, out yoj) && int.TryParse(Year, out year) && int.TryParse(Semester, out sem)) { try { using (DataContext dbcontext = context) { //studentMiniDataList = (from stu in dbcontext.Students // join m in dbcontext.Marks // on stu.Id equals m.StudentId // join sub in dbcontext.Subject on m.SubjectId equals sub.Id // join std in dbcontext.Standard on m.StandardId equals std.Id // where stu.Yearofjoin == yoj && std.Year == year && stu.Dept == Department && std.Sem == sem && stu.Section == Section // group new { m, stu, std, sub } by stu.Hallticket into joined // select new StudentMiniData // { // HallTicket = joined.Key.ToString(), // Average = joined.Average(x => x.m.GradePoint), // NoOfBacklogs = joined.Count(x => x.m.Grade == "F"), // NAAC = joined.Min(x => x.stu.NAAC) // }).ToList<StudentMiniData>(); List <SubjectDataPerSem> studentMarksList = (from stu in dbcontext.Students join m in dbcontext.Marks on stu.Id equals m.StudentId join sub in dbcontext.Subject on m.SubjectId equals sub.Id join std in dbcontext.Standard on m.StandardId equals std.Id where stu.Yearofjoin == yoj && std.Year == year && stu.Dept == Department && std.Sem == sem && stu.Section == Section orderby stu.Hallticket, sub.Name select new SubjectDataPerSem { HallTicket = stu.Hallticket, GradeInSubject = m.Grade, GradePointInSubject = m.GradePoint, NAAC = stu.NAAC, SubjectName = sub.Name }).ToList <SubjectDataPerSem>(); studentMarksList.ForEach(x => { ClassProfile prof = classProfile.FirstOrDefault((y) => y.HallTicket == x.HallTicket); if (prof != null) { prof.StudentMarks.Add(new StudentMarks { Hallticket = x.HallTicket, SubjectName = x.SubjectName, Grade = x.GradeInSubject, GradePoint = x.GradePointInSubject }); } else { ClassProfile cp = new ClassProfile() { HallTicket = x.HallTicket, StudentMarks = new List <StudentMarks>() }; cp.StudentMarks.Add(new StudentMarks { Hallticket = x.HallTicket, SubjectName = x.SubjectName, Grade = x.GradeInSubject, GradePoint = x.GradePointInSubject }); classProfile.Add(cp); } }); classProfile.ForEach(x => { x.Average = x.StudentMarks.Average((z) => z.GradePoint); x.NAAC = x.NAAC; }); } } catch (Exception ex) { return(Ok(new { mess = ex.Message })); } } return(Ok(new { data = classProfile })); }