static public GrupareStudenti GenereazaGrupareStudent()
        {
            List <(int, int)> grupariExistente = new List <(int, int)>();
            List <Student>    studenti         = new List <Student>();
            List <Grupa>      grupe            = new List <Grupa>();

            using (FacultateDbContext ctx = new FacultateDbContext())
            {
                foreach (var elem in ctx.GrupareStudenti)
                {
                    grupariExistente.Add((elem.StudentId, elem.GrupaId));
                }
                foreach (var elem in ctx.Students)
                {
                    studenti.Add(elem);
                }
                foreach (var elem in ctx.Grupe)
                {
                    grupe.Add(elem);
                }
            }
            GrupareStudenti grupareStudenti = new GrupareStudenti();

            if (grupariExistente.Count == studenti.Count * grupe.Count)
            {
                return(null);
            }

            else
            {
                (Student, Grupa)grupare = (studenti[random.Next(studenti.Count)], grupe[random.Next(grupe.Count)]);
                while (grupariExistente.Contains((grupare.Item1.Id, grupare.Item2.Id)))
                {
                    grupare = (studenti[random.Next(studenti.Count)], grupe[random.Next(grupe.Count)]);
                }
                grupareStudenti.GrupaId   = grupare.Item2.Id;
                grupareStudenti.StudentId = grupare.Item1.Id;
                grupareStudenti.Curent    = true;
                return(grupareStudenti);
            }
        }
        static void Main(string[] args)
        {
            int nrStudenti;
            int nrGrupe;
            int nrMaterii;
            int nrProfesori;
            int nrGrupari;
            int nrCursuri;
            int nrOre;
            int nrNote;

            Console.WriteLine("Cati studenti vrei sa se adauge?");
            nrStudenti = int.Parse(Console.ReadLine());
            Console.WriteLine("Cate grupe vrei sa se adauge?");
            nrGrupe = int.Parse(Console.ReadLine());
            Console.WriteLine("Cate materii vrei sa se adauge?");
            nrMaterii = int.Parse(Console.ReadLine());
            Console.WriteLine("Cati profesori vrei sa se adauge?");
            nrProfesori = int.Parse(Console.ReadLine());
            Console.WriteLine("Cate grupari vrei sa se adauge?");
            nrGrupari = int.Parse(Console.ReadLine());
            Console.WriteLine("Cate cursuri vrei sa se adauge?");
            nrCursuri = int.Parse(Console.ReadLine());
            Console.WriteLine("Cate ore vrei sa se adauge?");
            nrOre = int.Parse(Console.ReadLine());
            Console.WriteLine("Cate note vrei sa se adauge");
            nrNote = int.Parse(Console.ReadLine());

            List <Student> studenti = new List <Student>();
            List <Adresa>  adrese   = new List <Adresa>();

            for (int i = 0; i < nrStudenti; i++)
            {
                Adresa adresa = GeneratorAdresaRandom.GenereazaAdresa();
                adrese.Add(adresa);
                Student student = GeneratorStudentRandom.GenereazaStudentRandom(adresa);
                studenti.Add(student);
            }
            List <Grupa> grupe = new List <Grupa>();

            for (int i = 0; i < nrGrupe; i++)
            {
                grupe.Add(GeneratorGrupaRandom.GenereazaGrupaRandom());
            }
            List <Materie> materii = new List <Materie>();

            for (int i = 0; i < nrMaterii; i++)
            {
                materii.Add(GeneratorMaterieRandom.GenereazaMaterieRandom());
            }
            List <Profesor> profesori = new List <Profesor>();

            for (int i = 0; i < nrProfesori; i++)
            {
                profesori.Add(GeneratorProfesorRandom.GenereazaProfesorRandom());
            }

            using (FacultateDbContext ctx = new FacultateDbContext())
            {
                foreach (var adresa in adrese.Distinct())
                {
                    ctx.Adrese.Add(adresa);
                }
                foreach (var student in studenti.Distinct())
                {
                    ctx.Add(student);
                }
                foreach (var grupa in grupe.Distinct())
                {
                    ctx.Add(grupa);
                }
                foreach (var materie in materii.Distinct())
                {
                    ctx.Add(materie);
                }
                foreach (var profesor in profesori.Distinct())
                {
                    ctx.Add(profesor);
                }
                ctx.SaveChanges();
            }

            List <GrupareStudenti> grupari = new List <GrupareStudenti>();

            for (int i = 0; i < nrGrupari; i++)
            {
                GrupareStudenti grupare = GeneratorGrupareStudent.GenereazaGrupareStudent();
                if (!(grupare is null))
                {
                    grupari.Add(grupare);
                }
            }

            List <Curs> cursuri = new List <Curs>();

            for (int i = 0; i < nrCursuri; i++)
            {
                Curs curs = GeneratorCursRandom.GenereazaCursRandom();
                if (!(curs is null))
                {
                    cursuri.Add(curs);
                }
            }

            using (FacultateDbContext ctx = new FacultateDbContext())
            {
                foreach (var grupare in grupari.Distinct())
                {
                    ctx.Add(grupare);
                }
                foreach (var curs in cursuri.Distinct())
                {
                    ctx.Add(curs);
                }
                ctx.SaveChanges();
            }

            List <Orar> ore = new List <Orar>();

            for (int i = 0; i < nrOre; i++)
            {
                Orar ora = GeneratorOrarRandom.GenereazaOrarRandom();
                if (!(ora is null))
                {
                    ore.Add(ora);
                }
            }
            using (FacultateDbContext ctx = new FacultateDbContext())
            {
                foreach (var ora in ore.Distinct())
                {
                    ctx.Add(ora);
                }
                ctx.SaveChanges();
            }
            List <Nota> note = new List <Nota>();

            for (int i = 0; i < nrNote; i++)
            {
                Nota nota = GeneratorNotaRandom.GenereazaNotaRandom();
                if (!(nota is null))
                {
                    note.Add(nota);
                }
            }
            using (FacultateDbContext ctx = new FacultateDbContext())
            {
                foreach (var nota in note.Distinct())
                {
                    ctx.Add(nota);
                }
                ctx.SaveChanges();
            }

            //using(FacultateDbContext ctx = new FacultateDbContext())
            //{

            //    foreach (var elem in ctx.Grupe) if (elem.Nume is null) ctx.Remove(elem);
            //    foreach (var elem in ctx.Materii) if (elem.Denumire is null) ctx.Remove(elem);
            //    foreach (var elem in ctx.Profesori) if (elem.Nume is null) ctx.Remove(elem);
            //    foreach (var elem in ctx.Students) if (elem.Nume is null) ctx.Remove(elem);
            //    ctx.SaveChanges();

            //}
        }