示例#1
0
        public async Task <IActionResult> Raport(int?type)
        {
            if (type != null)
            {
                if (type == 1)
                {
                    List <Tuple <Nota, Student, Materie> > tuple = new List <Tuple <Nota, Student, Materie> >();
                    List <int> Ani      = new List <int>();
                    var        studenti = await Database.SelectAsync <Student>();

                    for (int i = 0; i < studenti.Count; i++)
                    {
                        var q      = Database.From <Materie>().Join <Materie, Nota>((m, n) => m.Id == n.MaterieId && n.StudentId == studenti[i].Id).Select(x => Sql.Max(x.AnStudiu));
                        var result = await Database.ScalarAsync <int?>(q) ?? 0;

                        Ani.Add(result);
                        Nota    n = null;
                        Materie m = null;
                        tuple.Add(Tuple.Create(n, studenti[i], m));
                    }
                    ViewBag.AniStudiu = Ani;

                    return(View(tuple));
                }
                else if (type == 2)
                {
                    var list = await _repo.getRaportAsync() as List <Tuple <Nota, Student, Materie> >;

                    foreach (var item in list)
                    {
                        item.Item1.NotaObtinuta = await Database.ScalarAsync <Nota, int>(x => Sql.Max(x.NotaObtinuta), x => x.StudentId == item.Item2.Id && x.MaterieId == item.Item3.Id);
                    }
                    list.Sort((x, y) =>
                    {
                        var cmp = x.Item2.Nume.CompareTo(y.Item2.Nume);
                        if (cmp == 0)
                        {
                            cmp = x.Item2.Prenume.CompareTo(y.Item2.Prenume);
                        }
                        if (cmp == 0)
                        {
                            cmp = x.Item3.AnStudiu - y.Item3.AnStudiu;
                        }
                        if (cmp == 0)
                        {
                            cmp = x.Item3.NumeDisciplina.CompareTo(y.Item3.NumeDisciplina);
                        }
                        return(cmp);
                    });
                    return(View(list));
                }
            }
            return(View());
        }