Beispiel #1
0
        public void TotaleContactUren()
        {
            var lesTabelViewModel = new LesTabelViewModel
            {
                Modules = new List <ModuleTabelViewModel>
                {
                    new ModuleTabelViewModel
                    {
                        Contacturen = "12+1"
                    },
                    new ModuleTabelViewModel
                    {
                        Contacturen = "12+1"
                    },
                    new ModuleTabelViewModel
                    {
                        Contacturen = "11+1+42 + 2"
                    }
                }
            };

            var expectedData = (2 * 13) + 11 + 1 + 42 + 2;

            Assert.AreEqual(expectedData, lesTabelViewModel.TotaleContactUren);
        }
        public ActionResult Index()
        {
            var vm = new StudiegidsViewModel();

            foreach (var ft in _unitOfWork.GetRepository <FaseType>().GetAll()) // Geen Jaar
            {
                var maxSchooljaar = _unitOfWork.GetRepository <Schooljaar>().GetAll().Max(src => src.JaarId);
                var tabellenlijst = new LessenTabelViewModel {
                    FaseType = ft.Type
                };
                var fasems = _unitOfWork.GetRepository <FaseModules>().GetAll()
                             .Where(src => src.FaseSchooljaar.Equals(maxSchooljaar))
                             .Where(src => src.Module.Status.Equals("Compleet (gecontroleerd)"))
                             .ToList();
                var fases = _unitOfWork.GetRepository <Fase>().GetAll()
                            .Where(src => src.Schooljaar.Equals(maxSchooljaar))
                            .ToList();
                //return CollectionA
                //  .Join(CollectionB,
                //      a => new { a.KeyA, a.KeyB },
                //      b => new { b.KeyA, b.KeyB },
                //      (a, b) => new { a, b })
                var joined = fasems
                             .Join(fases,
                                   a => new { fnaam = a.FaseNaam, fschooljaar = a.FaseSchooljaar, onaam = a.OpleidingNaam, oschooljaar = a.OpleidingSchooljaar },
                                   b => new { fnaam = b.Naam, fschooljaar = b.Schooljaar, onaam = b.OpleidingNaam, oschooljaar = b.OpleidingSchooljaar },
                                   (a, b) => new { a, b }).ToList();
                foreach (var random in joined
                         .Where(src => src.b.FaseType.Equals(tabellenlijst.FaseType))
                         .DistinctBy(src => new { src.a.Blok, src.a.FaseNaam })
                         .OrderBy(src => Math.Ceiling(Convert.ToInt32(src.a.Blok) / 2.0))
                         .ThenBy(src => src.a.FaseNaam)
                         .ThenBy(src => src.a.Blok))
                {
                    var tabel = new LesTabelViewModel {
                        Blok = random.a.Blok, FaseNaam = random.a.FaseNaam
                    };
                    var rows = new List <ModuleTabelViewModel>();
                    foreach (var fm2 in fasems
                             .Where(src => src.Blok.Equals(tabel.Blok))
                             .Where(src => src.FaseNaam.Equals(tabel.FaseNaam)))
                    {
                        var module = _unitOfWork.GetRepository <Module>().GetOne(new object[] { fm2.ModuleCursusCode, fm2.ModuleSchooljaar }); //
                        if (module != null && module.Status.Equals("Compleet (gecontroleerd)"))
                        {
                            var row = Mapper.Map <Module, ModuleTabelViewModel>(module);
                            rows.Add(row);
                        }
                    }
                    var orderedRows      = rows.OrderBy(src => src.Onderdeel).ToList();
                    var uniqueOnderdelen = orderedRows.Select(src => src.Onderdeel).Distinct();
                    foreach (var onderdeel in uniqueOnderdelen)
                    {
                        tabel.Onderdelen.Add(new OnderdeelTabelViewModel {
                            Onderdeel = onderdeel
                        });
                    }
                    foreach (var module in orderedRows)
                    {
                        if (module.Onderdeel != null)
                        {
                            OnderdeelTabelViewModel onderdeelTabelViewModel = tabel.Onderdelen.FirstOrDefault(src => src.Onderdeel.Equals(module.Onderdeel));
                            if (onderdeelTabelViewModel != null)
                            {
                                onderdeelTabelViewModel.Modules.Add(module);
                            }
                        }
                    }
                    tabellenlijst.Tabellen.Add(tabel);
                }
                vm.Opleidingsfasen.Add(tabellenlijst);
                vm.Opleidingsfasen = vm.Opleidingsfasen.OrderBy(src => src.FaseType).ToList();
                var last = vm.Opleidingsfasen.LastOrDefault();
                vm.Opleidingsfasen.Remove(last);
                vm.Opleidingsfasen.Insert(0, last);
            }

            return(View(vm));
        }