// GET: Fejlesztes
        public ActionResult Index()
        {
            var userId = HttpContext.User.Identity.GetUserId();
            var orszag = context.Orszagok
               .Include(o => o.OrszagFejlesztesek.Select(of => of.Fejlesztes))
               .Include(o => o.AktualisFejlesztesek.Select(af => af.Fejlesztes))
               .Single(o => o.ApplicationUser.Id == userId);

            var osszesFejlesztes = context.Fejlesztesek.ToList();


            var model = new FejlesztesViewModel
            {
                Fejlesztesek = osszesFejlesztes.Select(of => new FejlesztesListViewModel
                {
                    Id = of.Id,
                    Nev = of.Nev,
                    FejlesztesiIdo = of.FejlesztesiIdo,
                    HatralevoKorok = orszag.AktualisFejlesztesek
                        .SingleOrDefault(hk => hk.Fejlesztes.Id == of.Id) == null ? 0 : 
                            orszag.AktualisFejlesztesek.SingleOrDefault(hk => hk.Fejlesztes.Id == of.Id).HatralevoKorok,
                    Kifejlesztve = orszag.OrszagFejlesztesek
                        .SingleOrDefault(ki => ki.Fejlesztes.Id == of.Id) == null ? false : 
                        orszag.OrszagFejlesztesek.SingleOrDefault(ki => ki.Fejlesztes.Id == of.Id).Kifejlesztve
                }).ToList()
            };

            return View(model);
        }
        public async Task<ActionResult> Fejlesztes(int id)
        {
            var userId = HttpContext.User.Identity.GetUserId();

            var orszag = await context.Orszagok
                .Include(o => o.OrszagFejlesztesek.Select(of => of.Fejlesztes))
                .Include(o => o.AktualisFejlesztesek.Select(af => af.Fejlesztes))
                .SingleAsync(o => o.ApplicationUser.Id == userId);

            var osszesFejlesztes = await context.Fejlesztesek.ToListAsync();
            var Fejlesztes = osszesFejlesztes.SingleOrDefault(f => f.Id == id);

            if (Fejlesztes == null)
            {
                ModelState.AddModelError("", "Ez a fejlesztés nem létezik!");
            }

            if (orszag.OrszagFejlesztesek.SingleOrDefault(of => of.Fejlesztes.Id == id) != null)
            {
                ModelState.AddModelError("", "Ez a fejlesztés már ki van fejlesztve!");
            }

            if (orszag.AktualisFejlesztesek != null && orszag.AktualisFejlesztesek.Count > 0)
            {
                ModelState.AddModelError("", "Már folyamatban van egy fejlesztés!");
            }

            if (ModelState.IsValid)
            {
                orszag.AktualisFejlesztesek.Add(new Models.DataAccess.Entities.AktualisFejlesztesek
                {
                    HatralevoKorok = 15,
                    Fejlesztes = Fejlesztes
                });

                await context.SaveChangesAsync();
                
                return RedirectToAction("Index", "Fejlesztes");
            }


            

            var model = new FejlesztesViewModel
            {
                Fejlesztesek = osszesFejlesztes.Select(of => new FejlesztesListViewModel
                {
                    Id = of.Id,
                    Nev = of.Nev,
                    FejlesztesiIdo = of.FejlesztesiIdo,
                    HatralevoKorok = orszag.AktualisFejlesztesek
                        .SingleOrDefault(hk => hk.Fejlesztes.Id == of.Id) == null ? 0 : 
                         orszag.AktualisFejlesztesek.SingleOrDefault(hk => hk.Fejlesztes.Id == of.Id).HatralevoKorok,
                    Kifejlesztve = orszag.OrszagFejlesztesek
                        .SingleOrDefault(ki => ki.Fejlesztes.Id == of.Id) == null ? false :
                        orszag.OrszagFejlesztesek.SingleOrDefault(ki => ki.Fejlesztes.Id == of.Id).Kifejlesztve
                }).ToList()
            };

            return View("Index",model);
        }