public async Task<ActionResult> Ujhadsereg(HaboruHadseregListViewModel model)
      {
         using (var db = new ApplicationDbContext())
         {

            var userId = HttpContext.User.Identity.GetUserId();
            var orszag = await db.Orszagok
              .Include(o => o.User)
              .Include(o => o.OrszagEgysegek.Select(oe => oe.Egyseg))
              .Include(o => o.SajatHadseregek.Select(sh => sh.HadseregEgysegek.Select(he => he.Egyseg)))
              .Include(o => o.SajatHadseregek.Select(sh => sh.CelOrszag))
              .SingleOrDefaultAsync(o => o.User.Id == userId);

            var lehetsegesEgysegek = db.Egysegek.ToList();

            var jelenlegiEgysegek = lehetsegesEgysegek.Select(e => new HaboruEgysegListViewModel
            {
               Id = e.Id,
               Name = e.Name,
               Tamadas = e.Tamadas,
               Vedekezes = e.Vedekezes,
               OsszesenVan = orszag.OrszagEgysegek.Where(oe => oe.Egyseg.Id == e.Id).Sum(oe => oe.Darab)
            }).ToList();

            foreach (var item in jelenlegiEgysegek)
            {
               var hadseregben = orszag.SajatHadseregek.Sum(sh => sh.HadseregEgysegek.SingleOrDefault(he => he.Egyseg.Id == item.Id).Darab);
               item.JelenlegVan = item.OsszesenVan - hadseregben;
            }


            if (db.Orszagok.Any(o => o.Id == model.CelOrszagId))
            {

               foreach (var item in model.HadseregEgysegek)
               {
                  if (jelenlegiEgysegek.Single(je => je.Id == item.Id).JelenlegVan < item.Darab)
                  {

                     ModelState.AddModelError("", "Nincs elég egység!");
                  }
               }
            }
            else
            {
               ModelState.AddModelError("", "Nincs ilyen ország!");
            }
            if (ModelState.IsValid)
            {
               var ujhadsereg = new Hadsereg
               {
                  CelOrszag = db.Orszagok.SingleOrDefault(o => o.Id == model.CelOrszagId),
                  HadseregEgysegek = model.HadseregEgysegek.Select(he => new HadseregEgyseg
                  {
                     Egyseg = lehetsegesEgysegek.Single(le => le.Id == he.Id),
                     Darab = he.Darab
                  }).ToList()
               };
               orszag.SajatHadseregek.Add(ujhadsereg);

               await db.SaveChangesAsync();
               model.Id = ujhadsereg.Id;
               model.CelOrszag = ujhadsereg.CelOrszag.Name;

               return Json(new
               {
                  Success = true,
                  UjHadsereg = model
               });

            }
            else
            {
               return Json(new
               {
                  Success = false
               });
            }


         }
      }
        private bool Csata(Hadsereg hadsereg, Orszag celorszag, Orszag sajatorszag, List<Egyseg> lehetsegesEgysegek)
        {
            var tamadoszorzo = 1.0;
            var vedoszorzo = 1.0;

            //fejlesztések
            //sajatorzsag
            if (sajatorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 4)) //operaton rebirth
            {
                tamadoszorzo *= 1.2;
            }
            if (sajatorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 5)) //taktika
            {
                tamadoszorzo *= 1.1;
            }

            //celorszag
            if (celorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 3)) //operaton rebirth
            {
                vedoszorzo *= 1.2;
            }
            if (celorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 5)) //taktika
            {
                vedoszorzo *= 1.1;
            }

            //a hadseregek tamadoertekenek szamitasa
            var tamadoertek = hadsereg.HadseregEgysegek.Aggregate(0, (a, b) => a + b.Darab * b.Egyseg.Tamadas);

            tamadoertek = Convert.ToInt32(tamadoertek * tamadoszorzo);
            //celorszag vedoerteke
            var vedoegysegek = lehetsegesEgysegek.Select(e => new
            {

                Vedekezes = e.Vedekezes,
                JelenlegVan =
                celorszag.OrszagEgysegek.Where(oe => oe.Egyseg.Id == e.Id).Sum(oe => oe.Darab)  //összesegység
                - celorszag.SajatHadseregek.Sum(h => h.HadseregEgysegek.SingleOrDefault(he => he.Egyseg.Id == e.Id).Darab) //jelenleg hadseregben, tehát nem véd

            });

            var vedoertek = vedoegysegek.Aggregate(0, (a, b) => a + b.JelenlegVan * b.Vedekezes);

            vedoertek = Convert.ToInt32(vedoertek * vedoszorzo);

            var gyozelem = new bool();
            ////harc
            //győzelem
            if (tamadoertek > vedoertek)
            {
                gyozelem = true;
            }
            else //vereség
            {
                gyozelem = false;
            }
            return gyozelem;
        }