public ActionResult registrerSpilldeltakelse(string club)
        {
            init(club, 10);

            int spillID  = 0;
            int sesjonID = 0;

            Int32.TryParse(Request["sesjonID"], out sesjonID);
            if (Int32.TryParse(Request["spillID"], out spillID))
            {
                Models.SpillRegData spilldata = new Models.SpillRegData();
                Structures.BoardgamesHelper.ConstructFormData(spilldata, this, sesjonID, spillID);
                spilldata.sesjonen.Spillere.Sort(new Structures.Poengsorter());
                //spilldata.sesjonen.Spillere.OrderBy(x => x.posisjon);
                if (brukerData.viewStatus == 2 && (brukerData.userObject.status >= 25 || brukerData.userObject.spillerID == spilldata.sesjonen.spillerID || spilldata.sesjonen.spillsesjonID == 0))
                {
                    return(View(spilldata));
                }
                else
                {
                    return(View("Resviews/Spilling", spilldata.sesjonen));
                }
            }
            else
            {
                return(View());
            }
        }
        public ActionResult registrerSpilldeltakelse(Models.SpillRegData spillreg)
        {
            int i = 0;

            init("", 10);
            if (brukerData.viewStatus == 2)
            {
                if (ModelState.IsValid)
                //if(1 == 1)
                {
                    Models.SpillRapport rapporten = null;
                    if (spillreg.sesjonen.spillrapport.rapport != null && spillreg.sesjonen.spillrapport.rapport.Length > 0)
                    {
                        if (spillreg.sesjonen.spillrapport.spillrapportID == 0)
                        {
                            rapporten = spillreg.sesjonen.spillrapport;
                            databaseKontekst.spillrapporter.Add(rapporten);
                            databaseKontekst.SaveChanges();
                        }
                        else
                        {
                            rapporten            = (from m in databaseKontekst.spillrapporter where m.spillrapportID == spillreg.sesjonen.spillrapport.spillrapportID select m).FirstOrDefault();
                            rapporten.overskrift = spillreg.sesjonen.spillrapport.overskrift;
                            rapporten.rapport    = spillreg.sesjonen.spillrapport.rapport;
                        }
                    }

                    if (spillreg.sesjonen.spillsesjonID == 0)
                    {
                        List <Models.Spilldeltakelse> fjernmeg = new List <Models.Spilldeltakelse>();

                        if (spillreg.sesjonen.scenarioID <= 0)
                        {
                            spillreg.sesjonen.scenarioID = null;
                        }

                        for (i = 0; i < spillreg.sesjonen.Spillere.Count(); i++)
                        {
                            if (spillreg.sesjonen.Spillere[i].deltakerID <= 0)
                            {
                                fjernmeg.Add(spillreg.sesjonen.Spillere[i]);
                            }
                            else if (spillreg.sesjonen.Spillere[i].fraksjonID <= 0)
                            {
                                spillreg.sesjonen.Spillere[i].fraksjonID = null;
                            }
                        }

                        foreach (Models.Spilldeltakelse tabort in fjernmeg)
                        {
                            spillreg.sesjonen.Spillere.Remove(tabort);
                        }

                        spillreg.sesjonen.spillerID = brukerData.userObject.spillerID;
                        if (rapporten != null)
                        {
                            spillreg.sesjonen.spillrapport = rapporten;
                        }

                        databaseKontekst.spillsesjoner.Add(spillreg.sesjonen);
                        databaseKontekst.SaveChanges();
                    }
                    else
                    {
                        Models.Spillsesjon endresesjon = (from m in databaseKontekst.spillsesjoner where m.spillsesjonID == spillreg.sesjonen.spillsesjonID select m).FirstOrDefault();
                        endresesjon.dato       = spillreg.sesjonen.dato;
                        endresesjon.scenarioID = spillreg.sesjonen.scenarioID;

                        endresesjon.spillrapport = rapporten;
                        if (rapporten == null)
                        {
                            if (endresesjon.spillrapport != null)
                            {
                                databaseKontekst.spillrapporter.Remove(endresesjon.spillrapport);
                            }
                            endresesjon.rapportID = null;
                        }

                        if (endresesjon.scenarioID <= 0)
                        {
                            endresesjon.scenarioID = null;
                        }
                        // Ja, dette kan gjøre smidigiere uten en ekstra spørring for hver spilldeltakelse, men tenker sikkerhet og enkelhet først her.
                        for (i = 0; i < spillreg.sesjonen.Spillere.Count(); i++)
                        {
                            Models.Spilldeltakelse firstuse  = spillreg.sesjonen.Spillere[i];
                            Models.Spilldeltakelse orgdeltak = (from m in endresesjon.Spillere where m.spilldeltakelseID == firstuse.spilldeltakelseID select m).FirstOrDefault();
                            if (firstuse.deltakerID <= 0)
                            {
                                databaseKontekst.deltakelser.Remove(orgdeltak);
                            }
                            else
                            {
                                if (firstuse.fraksjonID <= 0)
                                {
                                    firstuse.fraksjonID = null;
                                }

                                orgdeltak.fraksjonID = firstuse.fraksjonID;
                                orgdeltak.deltakerID = firstuse.deltakerID;
                                orgdeltak.poengsum   = firstuse.poengsum;
                                orgdeltak.posisjon   = firstuse.posisjon;
                            }
                        }
                        databaseKontekst.SaveChanges();
                    }
                    return(RedirectToAction("SpillSesjoner/"));
                }
                else
                {
                    return(View("Login"));
                }
            }
            else
            {
                return(RedirectToAction("Login"));
            }
        }
        public static void ConstructFormData(Models.SpillRegData spillreg, Controllers.MainController contro, int sesjonID, int spillID)
        {
            int i = 0;

            if (sesjonID == 0)
            {
                spillreg.sesjonen          = new Models.Spillsesjon();
                spillreg.sesjonen.dato     = DateTime.Today.Date;
                spillreg.sesjonen.Spill    = (from m in contro.databaseKontekst.spillene where m.spillID == spillID select m).FirstOrDefault();
                spillreg.sesjonen.spillID  = spillreg.sesjonen.Spill.spillID;
                spillreg.sesjonen.klubbID  = contro.brukerData.userClub.klubbID;
                spillreg.sesjonen.Spillere = new List <Models.Spilldeltakelse>();

                for (i = 0; i < spillreg.sesjonen.Spill.spillerantall; i++)
                {
                    Models.Spilldeltakelse nydel = new Models.Spilldeltakelse();
                    nydel.sesjon     = spillreg.sesjonen;
                    nydel.deltakerID = -1;
                    nydel.fraksjonID = 0;
                    spillreg.sesjonen.Spillere.Add(nydel);
                }
            }
            else
            {
                spillreg.sesjonen = (from m in contro.databaseKontekst.spillsesjoner where m.spillsesjonID == sesjonID select m).FirstOrDefault();
                foreach (Models.Spilldeltakelse nyvar in spillreg.sesjonen.Spillere)
                {
                    if (nyvar.fraksjonID == null)
                    {
                        nyvar.fraksjonID = 0;
                    }
                }
            }

            if (sesjonID == 0 && spillreg.sesjonen.spillrapport == null)
            {
                Models.SpillRapport rapporten = new Models.SpillRapport();
                rapporten.spillerID            = contro.brukerData.userObject.spillerID;
                spillreg.sesjonen.spillrapport = rapporten;
            }

            var getQuery = (from m in contro.databaseKontekst.spillere select new { name = m.fornavn + " " + m.etternavn, ID = m.spillerID }).ToList();

            getQuery.Add(new { name = "Ukjent", ID = 0 });
            getQuery.Add(new { name = "Ikke i bruk", ID = -1 });
            spillreg.spillerne = new List <Models.SelectListCustomItem>();
            foreach (var getSingle in getQuery)
            {
                spillreg.spillerne.Add(new Models.SelectListCustomItem(getSingle.ID, getSingle.name));
            }


            var fraksjoner = (from m in contro.databaseKontekst.spillfraksjoner where m.spillID == spillreg.sesjonen.Spill.spillID select new { name = m.navn, ID = m.fraksjonID }).ToList();

            if (fraksjoner.Count > 0)
            {
                fraksjoner.Add(new { name = "Ikke spesifisert", ID = 0 });
                spillreg.fraksjonene = new List <Models.SelectListCustomItem>();
                foreach (var fraksje in fraksjoner)
                {
                    spillreg.fraksjonene.Add(new Models.SelectListCustomItem(fraksje.ID, fraksje.name));
                }
            }
            else
            {
                spillreg.fraksjonene = null;
            }

            var scenarioer = (from m in contro.databaseKontekst.spillscenarier where m.spillID == spillreg.sesjonen.Spill.spillID select new { name = m.navn, ID = m.scenarioID }).ToList();

            if (scenarioer.Count > 0)
            {
                scenarioer.Add(new { name = "Ikke spesifisert", ID = 0 });
                spillreg.scenariene = new List <Models.SelectListCustomItem>();
                foreach (var fraksje in scenarioer)
                {
                    spillreg.scenariene.Add(new Models.SelectListCustomItem(fraksje.ID, fraksje.name));
                }
            }
            else
            {
                spillreg.scenariene = null;
            }
        }