コード例 #1
0
        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 }));
        }