public async Task <IActionResult> Create(VerenigingEditViewModel evm) { if (ModelState.IsValid) { try { evm.IBAN = NormalizeIBAN(evm.IBAN); Vereniging vereniging = new Vereniging(evm.Email, evm.Naam, evm.EmailZeden, evm.IBAN); //create identity user aka account om in te loggen, standaard wachten P@ssword1 var user = new IdentityUser { UserName = evm.Email, Email = evm.Email }; Random random = new Random(); int passNumber = random.Next(100); string password; if (vereniging.NormalizedGroepNaam.Length > 8) { password = $"{vereniging.NormalizedGroepNaam.Substring(0,8)}@ww{passNumber}!"; } else { password = $"{vereniging.NormalizedGroepNaam}@ww{passNumber}!"; } await _userManager.CreateAsync(user, password); await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "vereniging")); await MapVerenigingEditViewModelToVereniging(evm, vereniging); _verenigingRepository.Add(vereniging); _verenigingRepository.SaveChanges(); //send mail to vereniging about new account if (evm.SendMail) { SendMailVerenigingUpdate(vereniging, password, true); } int verenigingId = _verenigingRepository.GetByMail(evm.Email).GroepId; TempData["message"] = $"U heeft succesvol de vereniging {vereniging.GroepNaam} aangemaakt"; return(RedirectToAction(nameof(Details), new { id = verenigingId })); } catch (Exception e) { TempData["error"] = $"Sorry, er liep iets fout, de vereniging kon niet worden aangemaakt: {e.Message}"; } } ViewData["IsEdit"] = false; ViewData["Konventen"] = GetKonventenAsSelectList(); return(View(nameof(Edit), evm)); }
public async Task <IActionResult> Edit(VerenigingEditViewModel evm, string command, int id) { if (ModelState.IsValid) { try { Vereniging vereniging = _verenigingRepository.GetById(id); if (vereniging == null) { return(NotFound()); } if (command.Equals("addKleur")) { await MapVerenigingEditViewModelToVereniging(evm, vereniging); vereniging.Kleuren.Add(new Kleur("Wit", "#ffffff")); _verenigingRepository.SaveChanges(); return(RedirectToAction(nameof(Edit), id)); } else if (command.Equals("removeKleur")) { await MapVerenigingEditViewModelToVereniging(evm, vereniging); vereniging.Kleuren.RemoveAt(vereniging.Kleuren.Count - 1); _verenigingRepository.SaveChanges(); return(RedirectToAction(nameof(Edit), id)); } else //when no command is given, process as normal edit { await MapVerenigingEditViewModelToVereniging(evm, vereniging); _verenigingRepository.SaveChanges(); if (evm.SendMail) { SendMailVerenigingUpdate(vereniging); } TempData["message"] = $"U heeft succesvol vereniging {vereniging.GroepNaam} gewijzigd"; } } catch (Exception e) { TempData["error"] = $"Sorry, er liep iets fout, de vereniging kon niet worden aangepast: {e.Message}"; } return(RedirectToAction(nameof(Index))); } ViewData["IsEdit"] = true; ViewData["Konventen"] = GetKonventenAsSelectList(); return(View(nameof(Edit), evm)); }
private async Task MapVerenigingEditViewModelToVereniging(VerenigingEditViewModel evm, Vereniging vereniging) { //update user account when mail changed (so vereniging can login with the new mail) if (vereniging.Email != evm.Email) { var user = await _userManager.FindByEmailAsync(vereniging.Email); var setUserNameResult = await _userManager.SetUserNameAsync(user, evm.Email); if (!setUserNameResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting email for user with ID '{userId}', vereniging: {vereniging.GroepNaam}."); } vereniging.Email = evm.Email; var setAccountEmailResult = await _userManager.SetEmailAsync(user, evm.Email); if (!setAccountEmailResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting email for user with ID '{userId}', vereniging: {vereniging.GroepNaam}."); } } vereniging.GroepNaam = evm.Naam; vereniging.IsGroot = evm.IsGroot; vereniging.Konvent = evm.KonventId == null ? null : _konventRepository.GetById(evm.KonventId.Value); vereniging.EmailZeden = evm.EmailZeden; vereniging.MaxTicketsException = evm.MaxTicketsException; vereniging.IBAN = evm.IBAN; List <Kleur> kleuren = new List <Kleur>(); if (evm.KleurenCodes != null) { for (int i = 0; i < evm.KleurenCodes.Count; i++) { kleuren.Add(new Kleur(evm.KleurenNamen[i], evm.KleurenCodes[i])); } } vereniging.Kleuren = kleuren; }