public async Task <IActionResult> VerkoopAandelen(BeursModel model) { if (GeplandeTelMomentenManager.IsMarktDicht) { return(RedirectToAction("Beurs", new { id = model.Beurs.BeursId })); } var gebruiker = await GetGebruikerWithAandelen(HttpContext); if (gebruiker == null) { throw new NullReferenceException("Gebruiker is null"); } if (model.Beurs == null) { model.Beurs = await GetBeurs(model.BeursId); } var errors = new List <string>(); if (gebruiker.Aandelen == null) { ModelState.AddModelError("Verkoopfout", "Je hebt hier niet genoeg aandelen in deze beurs voor"); return(RedirectToAction("Beurs", new { id = model.BeursId })); } var aandeelHouder = gebruiker.Aandelen.FirstOrDefault(x => x.BeursId == model.BeursId && x.ApplicationUserId == gebruiker.Id); if (model.Aantal <= 0) { errors.Add("Je moet tenminste 1 aandeel verkopen"); } if (aandeelHouder == null || aandeelHouder.Aantal < model.Aantal) { errors.Add("Je hebt hier niet genoeg aandelen in deze beurs voor"); } if (errors.Count == 0) { await gebruiker.VerkoopAandelen(model.Beurs, model.Aantal); } TempData.Put("errors", errors); TempData.Put("errorType", "Verkoopfout"); return(RedirectToAction("Beurs", new { id = model.Beurs.BeursId })); }
public async Task <IActionResult> KoopAandelen(BeursModel model) { if (GeplandeTelMomentenManager.IsMarktDicht) { return(RedirectToAction("Beurs", new { id = model.Beurs.BeursId })); } var gebruiker = await _userManager.GetCurrentUser(HttpContext); if (gebruiker == null) { throw new NullReferenceException("Gebruiker is null"); } if (model.Beurs == null) { model.Beurs = await GetBeurs(model.BeursId); } var errors = new List <string>(); if (!User.IsInRole("Deelnemer")) { errors.Add("Je bent nog geen deelnemer!"); } var modelValue = model.Aantal * model.Beurs.AandeelPrijs; if (model.Aantal <= 0) { errors.Add("Je moet tenminste 1 aandeel kopen"); } if (modelValue > gebruiker.Geld) { errors.Add("Je hebt hier niet genoeg geld voor"); } if (errors.Count == 0) { await gebruiker.KoopAandelen(model.Beurs, model.Aantal); } TempData.Put("errors", errors); TempData.Put("errorType", "Koopfout"); return(RedirectToAction("Beurs", new { id = model.Beurs.BeursId })); }