// GET: Verlanglijst
        public ActionResult Index(Gebruiker gebruiker)
        {
            DateTime startDatum;

            if (gebruiker.Verlanglijst.Materialen.Count == 0)
            {
                return(View("LegeVerlanglijst"));
            }

            if (IsWeekend())
            {
                startDatum = HulpMethode.FirstDateOfWeekISO8601(DateTime.Now.Year, (HulpMethode.GetIso8601WeekOfYear(DateTime.Now) + 2) % 53);
            }
            else
            {
                startDatum = HulpMethode.FirstDateOfWeekISO8601(DateTime.Now.Year, (HulpMethode.GetIso8601WeekOfYear(DateTime.Now) + 1) % 53);
            }
            if (gebruiker is Lector)
            {
                startDatum = DateTime.Now;
            }
            string startD = startDatum.ToString("d", dtfi);

            return(Controle(gebruiker, null, null, false, startD, null));
        }
예제 #2
0
        public override IViewModel CreateReservatiesViewModel(Dictionary <DateTime, IEnumerable <ReservatieDetailViewModel> > map, Materiaal materiaal, int week, DateTimeFormatInfo dtfi)
        {
            ReservatiesDetailViewModel vm = new ReservatiesDetailViewModel
            {
                ReservatieMap     = map,
                Material          = materiaal,
                GeselecteerdeWeek =
                    week != -1 ? HulpMethode.FirstDateOfWeekISO8601(DateTime.Now.Year, week).ToString("d", dtfi) : ""
            };

            return(vm);
        }
예제 #3
0
        public override IViewModel CreateReservatieDetailViewModel(Reservatie reservatie)
        {
            ReservatieDetailViewModel vm = new ReservatieDetailViewModel
            {
                Aantal        = reservatie.AantalGereserveerd,
                Email         = reservatie.Gebruiker.Email,
                Status        = reservatie.ReservatieState.GetType().Name.ToLower(),
                Type          = reservatie.Gebruiker is Lector ? "Lector" : "Student",
                GeblokkeerdOp = reservatie.Gebruiker is Lector?HulpMethode.DatesToString(reservatie.GeblokkeerdeDagen.Select(d => d.Datum)) : ""
            };

            return(vm);
        }
예제 #4
0
        public void ReservatieDetails4Geblokeerd5Gereserveerd()
        {
            m.AddReservatie(context.ReservatieWeek1Aantal5Student);
            dagenString = new[] { "15/03/2016", "16/03/2016" };
            MaakBlokkeringLector(dagenString, 4);
            int week = HulpMethode.GetIso8601WeekOfYear(Convert.ToDateTime(context.StartDatum));
            PartialViewResult          result = verlanglijstController.ReservatieDetails(student, m.MateriaalId, week) as PartialViewResult;
            ReservatiesDetailViewModel vm     = result.Model as ReservatiesDetailViewModel;
            Materiaal          materiaal      = vm.Material;
            IList <Reservatie> reservaties    = materiaal.Reservaties;

            Assert.AreEqual(2, materiaal.Reservaties.Count);
            Assert.AreEqual(m.Reservaties, materiaal.Reservaties);
        }
예제 #5
0
        public void MaakReservatie(Gebruiker gebruiker, int[] materiaal, int[] aantal, string startDatum, string[] dagen)
        {
            IList <Materiaal> materialen = GeefMaterialenVanId(materiaal);

            string eersteDag = HulpMethode.GetStartDatum(startDatum).ToShortDateString();

            if (materialen.Count > 0)
            {
                IDictionary <Materiaal, int> potentieleReservaties = InvullenVanMapMetPotentieleReservaties(aantal, materialen);

                try
                {
                    if (gebruiker is Student)
                    {
                        Student student = gebruiker as Student;

                        student.MaakReservaties(potentieleReservaties, eersteDag);
                        VerstuurMailStudent(potentieleReservaties, eersteDag, student);

                        TempData["Info"] = $"Reservatie werd aangemaakt";
                    }
                    else
                    {
                        Lector lector = gebruiker as Lector;

                        lector.MaakBlokkeringen(potentieleReservaties, eersteDag, dagen);

                        VerstuurMailBlokkeringLector(potentieleReservaties, dagen, lector);
                        IList <Reservatie> overruled = lector.OverruledeReservaties;
                        VerstuurMailNaarStudentDieOverruledIs(overruled);

                        TempData["Info"] = $"Reservatie werd aangemaakt";
                    }

                    gebruikerRepository.SaveChanges();
                }
                catch (ArgumentException ex)
                {
                    TempData["Error"] = ex.Message;
                }
            }
        }
        public ActionResult Controle(Gebruiker gebruiker, int[] materiaal, int[] aantal, bool naarReserveren, string startDatum, string[] dagen)
        {
            //Variabelen
            bool allesBeschikbaar              = false;
            IList <Materiaal>     materialen   = new List <Materiaal>();
            Dictionary <int, int> materiaalMap = new Dictionary <int, int>();

            factory = new VerlanglijstMaterialenViewModelFactory();

            DateTime startDate = HulpMethode.GetStartDatum(startDatum);

            if (startDate < DateTime.Now)
            {
                startDate = DateTime.Today;
            }
            DateTime eindDate = HulpMethode.GetEindDatum(startDatum);

            //Indien er materialen geselecteerd zijn wordt er gekeken of er voor dat materiaal voldoende beschikbaar zijn
            //voor de gekozen periode.
            IList <DateTime> dagLijst = dagen?.Select(Convert.ToDateTime).ToList();
            var dateString            = dagLijst != null?HulpMethode.DatesToString(dagLijst) : HulpMethode.DateToString(startDate);

            if (materiaal != null)
            {
                materialen       = GeefMaterialenVanId(materiaal);
                materiaalMap     = gebruiker.GetMateriaalAantalMap(materiaal, aantal);
                allesBeschikbaar = ControleGeselecteerdMateriaal(gebruiker, materialen, aantal, startDate, eindDate, dagLijst);
            }

            var vm = factory.CreateVerlanglijstMaterialenViewModel(materialen, gebruiker.Verlanglijst.Materialen, dateString,
                                                                   startDate, eindDate, materiaalMap, allesBeschikbaar && naarReserveren, dagLijst, gebruiker) as VerlanglijstMaterialenViewModel;

            if (Request.IsAjaxRequest())
            {
                if (naarReserveren && allesBeschikbaar)
                {
                    return(PartialView("Confirmatie", vm));
                }
                return(PartialView("Verlanglijst", vm));
            }
            return(View("Index", vm));
        }
        public JsonResult ReservatieDetailsGrafiek(int id, int week, bool perDag)
        {
            Materiaal materiaal = materiaalRepository.FindById(id);

            DateTime[] dagenVanDeWeek = null;
            if (perDag)
            {
                dagenVanDeWeek = new DateTime[5];
                DateTime maandag = HulpMethode.FirstDateOfWeekISO8601(DateTime.Now.Year, week);
                dagenVanDeWeek[0] = maandag;
                for (int i = 1; i < dagenVanDeWeek.Length; i++)
                {
                    dagenVanDeWeek[i] = maandag.AddDays(i);
                }
            }
            var startDatumFilter                    = HulpMethode.FirstDateOfWeekISO8601(DateTime.Now.Year, week == -1 ? HulpMethode.GetIso8601WeekOfYear(DateTime.Now) : week);
            var datumMaandVooruitFilter             = startDatumFilter.AddDays(28);
            List <ReservatieDataDTO> reservatieList = MaakLijstReservatieDataInRange(materiaal, startDatumFilter, datumMaandVooruitFilter, dagenVanDeWeek);

            return(Json(SerializeObject(reservatieList), JsonRequestBehavior.AllowGet));
        }
예제 #8
0
        private void VerstuurMailStudent(IDictionary <Materiaal, int> potentieleReservaties, string startDatum, Gebruiker gebruiker)
        {
            MailTemplate mail = mailServiceRepository.GeefMailTemplate("Bevestiging reservatie");

            mail.MaakMail(potentieleReservaties, null, startDatum, HulpMethode.GetEindDatum(startDatum).ToShortDateString(), null, gebruiker);
        }