//[Authorize]
 public ActionResult Annuleer(int?id)
 {
     if (id.HasValue)
     {
         NieuweAfspraakPM pm = new NieuweAfspraakPM();
         pm.Klanten        = new SelectList(ks.GetKlanten().Select(u => new { ID = u.ID, Naam = u.Naam + " " + u.Voornaam }), "ID", "Naam");
         pm.Masseurs       = new SelectList(afs.GetMasseurs().Select(m => new { ID = m.ID, Naam = m.Naam }), "ID", "Naam");
         pm.SoortAfspraken = new SelectList(afs.GetMassages().Select(ms => new { ID = ms.ID, Naam = ms.Naam }), "ID", "Naam");
         pm.Arrangementen  = new SelectList(afs.GetArrangementen().Select(ar => new { ID = ar.ID, Naam = ar.Naam }), "ID", "Naam");
         pm.Extras         = new SelectList(afs.GetExtras().Select(e => new { ID = e.ID, Naam = e.Naam }), "ID", "Naam");
         Afspraak a = afs.GetAfspraakByID(id.Value);
         pm.Afspraak               = a;
         pm.Afspraak.ID            = a.ID;
         pm.Datum                  = a.DatumTijdstip.Date;
         ViewBag.Datum             = a.DatumTijdstip;
         pm.Tijdstip               = Convert.ToDateTime(a.DatumTijdstip.ToString("HH:mm"));
         pm.Afspraak.DatumTijdstip = a.DatumTijdstip;
         pm.Afspraak.Verplaatsing  = a.Verplaatsing;
         a.Notitie                 = pm.Afspraak.Notitie;
         a.Duur           = pm.Afspraak.Duur;
         a.SoloDuo        = pm.Afspraak.SoloDuo;
         a.SoortAfspraak  = pm.Afspraak.SoortAfspraak;
         a.Arrangement    = pm.Afspraak.Arrangement;
         a.AantalPersonen = pm.Afspraak.AantalPersonen;
         a.Klant          = pm.Afspraak.Klant;
         a.Archief        = pm.Afspraak.Archief;
         a.Geannuleerd    = pm.Afspraak.Geannuleerd;
         a.Masseur        = pm.Afspraak.Masseur;
         return(View(pm));
     }
     else
     {
         return(RedirectToAction("Index"));
     }
 }
        //[Authorize]
        public ActionResult New()
        {
            if (TempData["error"] != null)
            {
                ViewBag.Error     = TempData["error"];
                TempData["error"] = null;
            }

            NieuweAfspraakPM pm = new NieuweAfspraakPM();

            pm.Klanten                = new SelectList(ks.GetKlanten().Select(u => new { ID = u.ID, Naam = u.Naam + " " + u.Voornaam }), "ID", "Naam");
            pm.Masseurs               = new SelectList(afs.GetMasseurs().Select(m => new { ID = m.ID, Naam = m.Naam }), "ID", "Naam");
            pm.SoortAfspraken         = new SelectList(afs.GetMassages().Select(ms => new { ID = ms.ID, Naam = ms.Naam }), "ID", "Naam");
            pm.Arrangementen          = new SelectList(afs.GetArrangementen().Select(ar => new { ID = ar.ID, Naam = ar.Naam }), "ID", "Naam");
            pm.Extras                 = new SelectList(afs.GetExtras().Select(e => new { ID = e.ID, Naam = e.Naam }), "ID", "Naam");
            pm.Afspraak               = new Afspraak();
            pm.Afspraak.DatumTijdstip = DateTime.Now;
            pm.Datum            = DateTime.Now;
            pm.Tijdstip         = DateTime.Now;
            pm.Afspraak         = new Afspraak();
            pm.Afspraak.SoloDuo = true;
            return(View(pm));
        }
        //[Authorize]
        public ActionResult Annuleer(NieuweAfspraakPM a)
        {
            if (a.Afspraak.Klant.ID != 0)
            {
                a.Afspraak.Klant = ks.GetKlantByID(a.Afspraak.Klant.ID);
            }
            a.Afspraak.Masseur       = afs.GetMasseurByID(a.Afspraak.Masseur.ID);
            a.Afspraak.SoortAfspraak = afs.GetMassageByID(a.Afspraak.SoortAfspraak.ID);
            a.Afspraak.Arrangement   = afs.GetArrangementByID(a.Afspraak.Arrangement.ID);
            a.Afspraak.Extra         = afs.GetExtraByID(a.Afspraak.Extra.ID);

            if (a.Datum.Date == DateTime.MinValue)
            {
                a.Afspraak.DatumTijdstip = a.Tijdstip;
            }
            else
            {
                a.Afspraak.DatumTijdstip = a.Datum.Date + a.Tijdstip.TimeOfDay;
            }

            a.Afspraak.Geannuleerd = true;
            afs.UpdateAnnuleer(a.Afspraak);
            return(RedirectToAction("Index"));
        }
        //[Authorize]
        public ActionResult Edit(int?id)
        {
            if (id.HasValue)
            {
                if (TempData["error"] != null)
                {
                    ViewBag.Error     = TempData["error"];
                    TempData["error"] = null;
                }

                NieuweAfspraakPM pm        = new NieuweAfspraakPM();
                List <Klant>     klantlist = new List <Klant>();
                pm.Klanten  = new SelectList(ks.GetKlanten().Select(u => new { ID = u.ID, Naam = u.Naam + " " + u.Voornaam }), "ID", "Naam");
                pm.Masseurs = new SelectList(afs.GetMasseurs().Select(m => new { ID = m.ID, Naam = m.Naam }), "ID", "Naam");

                List <SoortAfspraak> afspraaktypelist = new List <SoortAfspraak>();
                afspraaktypelist.Add(new SoortAfspraak {
                    Naam = "--", ID = 0
                });
                afspraaktypelist.AddRange(afs.GetMassages());
                pm.SoortAfspraken = new SelectList(afspraaktypelist, "ID", "Naam");

                List <Arrangement> arrangementenlist = new List <Arrangement>();
                arrangementenlist.Add(new Arrangement {
                    Naam = "--", ID = 0
                });
                arrangementenlist.AddRange((List <Arrangement>)afs.GetArrangementen());
                pm.Arrangementen = new SelectList(arrangementenlist, "ID", "Naam");

                List <Extra> extralist = new List <Extra>();
                extralist.Add(new Extra {
                    Naam = "--", ID = 0
                });
                extralist.AddRange((List <Extra>)afs.GetExtras());
                pm.Extras = new SelectList(extralist, "ID", "Naam");

                Afspraak a = afs.GetAfspraakByID(id.Value);
                pm.Afspraak               = a;
                pm.Afspraak.ID            = a.ID;
                pm.Datum                  = a.DatumTijdstip.Date;
                ViewBag.Datum             = a.DatumTijdstip;
                pm.Tijdstip               = Convert.ToDateTime(a.DatumTijdstip.ToString("HH:mm"));
                pm.Afspraak.DatumTijdstip = a.DatumTijdstip;
                pm.Afspraak.Verplaatsing  = a.Verplaatsing;
                a.Notitie                 = pm.Afspraak.Notitie;
                a.Duur           = pm.Afspraak.Duur;
                a.SoloDuo        = pm.Afspraak.SoloDuo;
                a.SoortAfspraak  = pm.Afspraak.SoortAfspraak;
                a.AantalPersonen = pm.Afspraak.AantalPersonen;
                a.Klant          = pm.Afspraak.Klant;
                a.Archief        = pm.Afspraak.Archief;
                a.Geannuleerd    = pm.Afspraak.Geannuleerd;
                a.Masseur        = pm.Afspraak.Masseur;
                a.Arrangement    = pm.Afspraak.Arrangement;
                if (a.Arrangement == null)
                {
                    a.Arrangement = new Arrangement();
                }
                a.Extra = pm.Afspraak.Extra;
                if (a.Extra == null)
                {
                    a.Extra = new Extra();
                }


                return(View(pm));
            }

            else
            {
                return(RedirectToAction("Index"));
            }
        }
        //[Authorize]
        public async Task <ActionResult> New(NieuweAfspraakPM a)
        {
            string verplaatsing = Request.Form["Afspraak.Verplaatsing"];
            string soloduo      = Request.Form["Afspraak.SoloDuo"];


            if (verplaatsing != null && verplaatsing.Equals("on"))
            {
                a.Afspraak.Verplaatsing = true;
            }
            else
            {
                a.Afspraak.Verplaatsing = false;
            }

            if (soloduo != null && soloduo.Equals("on"))
            {
                a.Afspraak.SoloDuo = true;
            }

            else
            {
                a.Afspraak.SoloDuo = false;
            }


            if (a.Afspraak.Klant.ID != 0)
            {
                a.Afspraak.Klant = ks.GetKlantByID(a.Afspraak.Klant.ID);
            }
            a.Afspraak.Masseur       = afs.GetMasseurByID(a.Afspraak.Masseur.ID);
            a.Afspraak.SoortAfspraak = afs.GetMassageByID(a.Afspraak.SoortAfspraak.ID);
            a.Afspraak.Arrangement   = afs.GetArrangementByID(a.Afspraak.Arrangement.ID);
            a.Afspraak.Extra         = afs.GetExtraByID(a.Afspraak.Extra.ID);
            if (a.Afspraak.Arrangement != null && a.Afspraak.SoortAfspraak != null)
            {
                a.Afspraak.Duur = a.Afspraak.SoortAfspraak.Duur + a.Afspraak.Arrangement.Duur;
            }
            else if (a.Afspraak.SoortAfspraak != null)
            {
                a.Afspraak.Duur = a.Afspraak.SoortAfspraak.Duur;
            }
            else if (a.Afspraak.Arrangement != null)

            {
                a.Afspraak.Duur = a.Afspraak.Arrangement.Duur;
            }

            else
            {
                a.Afspraak.Duur = 60;
            }

            a.Afspraak.DatumTijdstip = a.Datum.Date + a.Tijdstip.TimeOfDay;
            if (a.Afspraak.DatumTijdstip == DateTime.MinValue)
            {
                a.Afspraak.DatumTijdstip = (DateTime)SqlDateTime.MinValue;
            }

            _O365ServiceOperationFailed = false;
            String newEventID = "";

            try
            {
                newEventID = await _calenderOperations.AddCalendarEventAsync(a.Afspraak.Klant.Adres.ToString(), a.Afspraak.Klant.ToString(), a.Afspraak.Klant.Naam + " " + a.Afspraak.Klant.Voornaam, a.Afspraak.SoortAfspraak.Naam + " - " + a.Afspraak.Masseur.Naam, DateTimeOffset.Parse(a.Afspraak.DatumTijdstip.ToString()), DateTimeOffset.Parse(a.Afspraak.DatumTijdstip.ToString()));
            }
            catch (Exception)
            {
                _O365ServiceOperationFailed = true;
            }
            if (_O365ServiceOperationFailed)
            {
                afs.AddAfspraak(a.Afspraak);
                if (a.Afspraak.Geannuleerd == false)
                {
                    return(RedirectToAction("Index"));
                }

                else
                {
                    a.Afspraak.Geannuleerd = false;
                    TempData["error"]      = "Er is reeds een afspraak op dit tijdstip gemaakt!";
                    return(RedirectToAction("New"));
                    //return View(a);
                }
            }


            return(View(a));

            /*if (Request.Form["New"] != null)
             * {*/

            //   }
            //NieuweAfspraakPM pm = (NieuweAfspraakPM)a;
            //pm.Klanten = new SelectList(ks.GetKlanten().Select(u => new { ID = u.ID, Naam = u.Naam + " " + u.Voornaam }), "ID", "Naam");
            //return View(pm);
        }
        //[Authorize]
        public async Task <ActionResult> Edit(NieuweAfspraakPM a)
        {
            if (ModelState.IsValid)
            {
                string verplaatsing = Request.Form["Verplaatsing"];
                if (verplaatsing != null && verplaatsing.Equals("on"))
                {
                    a.Afspraak.Verplaatsing = true;
                }
                else
                {
                    a.Afspraak.Verplaatsing = false;
                }
                if (a.Afspraak.Klant.ID != 0)
                {
                    a.Afspraak.Klant = ks.GetKlantByID(a.Afspraak.Klant.ID);
                }
                a.Afspraak.Masseur = afs.GetMasseurByID(a.Afspraak.Masseur.ID);
                if (a.Afspraak.SoortAfspraak.ID != 0)
                {
                    a.Afspraak.SoortAfspraak = afs.GetMassageByID(a.Afspraak.SoortAfspraak.ID);
                }
                if (a.Afspraak.Arrangement.ID != 0)
                {
                    a.Afspraak.Arrangement = afs.GetArrangementByID(a.Afspraak.Arrangement.ID);
                }
                if (a.Afspraak.Extra.ID != 0)
                {
                    a.Afspraak.Extra = afs.GetExtraByID(a.Afspraak.Extra.ID);
                }
                if (a.Afspraak.Arrangement != null && a.Afspraak.SoortAfspraak != null)
                {
                    a.Afspraak.Duur = a.Afspraak.SoortAfspraak.Duur + a.Afspraak.Arrangement.Duur;
                }
                else if (a.Afspraak.SoortAfspraak != null)
                {
                    a.Afspraak.Duur = a.Afspraak.SoortAfspraak.Duur;
                }
                else if (a.Afspraak.Arrangement != null)
                {
                    a.Afspraak.Duur = a.Afspraak.Arrangement.Duur;
                }

                else
                {
                    a.Afspraak.Duur = 60;
                }


                if (a.Datum.Date == DateTime.MinValue)
                {
                    a.Afspraak.DatumTijdstip = ViewBag.Datum + a.Tijdstip.TimeOfDay;
                }
                else
                {
                    a.Afspraak.DatumTijdstip = a.Datum.Date + a.Tijdstip.TimeOfDay;
                }

                _O365ServiceOperationFailed = false;
                String newEventID         = "";
                List <CalendarEvent> list = new List <CalendarEvent>();
                try
                {
                    Afspraak afspraak = afs.GetAfspraakByID(a.Afspraak.ID);
                    //newEventID = await _calenderOperations.AddCalendarEventAsync(a.Afspraak.Klant.Adres.ToString(), a.Afspraak.Klant.ToString(), a.Afspraak.Klant.Naam + " " + a.Afspraak.Klant.Voornaam, a.Afspraak.SoortAfspraak.Naam + " - " + a.Afspraak.Masseur.Naam, DateTimeOffset.Parse(a.Afspraak.DatumTijdstip.ToString()), DateTimeOffset.Parse(a.Afspraak.DatumTijdstip.ToString()));
                    list = await _calenderOperations.GetCalanderByDate(afspraak.DatumTijdstip, afspraak.DatumTijdstip.AddMinutes(afspraak.Duur));

                    if (list.Count == 1)
                    {
                        await _calenderOperations.UpdateCalendarEventAsync(list.First().ID, a.Afspraak.Klant.Adres.ToString(), a.Afspraak.Klant.ToString(), "", a.Afspraak.SoortAfspraak.Naam + " - " + a.Afspraak.Masseur.Naam, DateTimeOffset.Parse(a.Afspraak.DatumTijdstip.ToString()), DateTimeOffset.Parse(a.Afspraak.DatumTijdstip.ToString()));
                    }
                }
                catch (Exception)
                {
                    _O365ServiceOperationFailed = true;
                }

                afs.UpdateAfspraak(a.Afspraak);
                if (a.Afspraak.Geannuleerd == false)
                {
                    return(RedirectToAction("Index"));
                }

                else
                {
                    a.Afspraak.Geannuleerd = false;
                    TempData["error"]      = "Er is reeds een afspraak op dit tijdstip gemaakt!";
                    return(RedirectToAction("Index"));
                    //
                }
            }
            //return View(a);
            TempData["error"] = "Foutieve aanpassingen!";
            return(RedirectToAction("Index"));
        }