// GET: EgysegVasarlas public ActionResult Index() { var userId = HttpContext.User.Identity.GetUserId(); var orszag = context.Orszagok .Include(o => o.OrszagEpuletek.Select(oe => oe.Epulet)) .Include(o => o.OrszagEgysegek.Select(oe => oe.Egyseg)) .Include(o => o.OrszagFejlesztesek.Select(of => of.Fejlesztes)) .Single(o => o.ApplicationUser.Id == userId); var osszesEgyseg = context.Egysegek.ToList(); var model = new EgysegVasarlasViewModel { Arany = orszag.Arany, SzabadHelyek = orszag.OrszagEpuletek .Where(oe => oe.Epulet.Nev == "Barakk") .Sum(oe => oe.Db) * 200 - orszag.OrszagEgysegek.Sum(oe => oe.Db), Egysegek = osszesEgyseg.Select(oe => new EgysegVasarlasListViewModel { Id = oe.Id, Nev = oe.Nev, Ar = oe.Ar, EllatmanyIgeny = oe.EllatmanyIgeny, TamadoEro = oe.Tamadas, VedekezoEro = oe.Vedekezes, Zsold = oe.Zsold, MeglevoDb = orszag.OrszagEgysegek .Where(me => me.Egyseg.Id == oe.Id) .Sum(me => me.Db) }).ToList() }; return View(model); }
public async Task<ActionResult> Index(EgysegVasarlasViewModel model) { var userId = HttpContext.User.Identity.GetUserId(); var orszag = context.Orszagok .Include(o => o.ApplicationUser) .Include(o => o.OrszagEpuletek.Select(oe => oe.Epulet)) .Include(o => o.OrszagEgysegek.Select(oe => oe.Egyseg)) .Include(o => o.OrszagFejlesztesek.Select(of => of.Fejlesztes)) .Single(o => o.ApplicationUser.Id == userId); bool DoesNotBuyAnything = true; bool negativePcs = false; int sumOfExpenses = 0; int sumOfUnits = 0; int szabadHelyek = orszag.OrszagEpuletek.Where(oe => oe.Epulet.Nev == "Barakk").Sum(oe => oe.Db) * 200 - orszag.OrszagEgysegek.Sum(oe => oe.Db); foreach (var item in model.Egysegek) { if (item.Db != 0) { DoesNotBuyAnything = false; } if (item.Db < 0) { negativePcs = true; } sumOfUnits += item.Db; sumOfExpenses += item.Ar * item.Db; } if (negativePcs) { ModelState.AddModelError("", "Negatív darabszám nem adható meg"); } else if (DoesNotBuyAnything) { ModelState.AddModelError("", "Mindenhol 0 a darabszám"); } else if (orszag.Arany < sumOfExpenses) { ModelState.AddModelError("", "Nincs elegendő pénz"); } else if (szabadHelyek < sumOfUnits) { ModelState.AddModelError("", "Nincs elég hely a barakkokban"); } if (ModelState.IsValid) { try { var osszesEgyseg = context.Egysegek.ToList(); foreach (var item in model.Egysegek) { var egyseg = orszag.OrszagEgysegek.SingleOrDefault(e => e.Egyseg.Id == item.Id); if (egyseg == null) { orszag.OrszagEgysegek.Add(new Models.DataAccess.Entities.OrszagEgyseg { Orszag = orszag, Egyseg = osszesEgyseg.Single(oe => oe.Id == item.Id), Db = item.Db }); } else { egyseg.Db += item.Db; } } orszag.Arany -= sumOfExpenses; await context.SaveChangesAsync(); } catch (Exception e) { throw; } return RedirectToAction("Index"); } return View(model); }