private async Task <IActionResult> RegistreerHandelaarAsync(RegistreerHandelaarViewModel handelaarAanvraag) { //modelstate controleren van de NIEUWE gemaakte model var context = new ValidationContext(handelaarAanvraag, null, null); var results = new List <ValidationResult>(); bool isValid = Validator.TryValidateObject(handelaarAanvraag, context, results, true); if (isValid) { //long en latitude moeten voor validatie een string zijn, validatie moet er normaal voor zorgen dat ze altijd castable zijn naar double maar altijd goed om te checken. //checken of url geldig is Uri website; if (!Uri.TryCreate(handelaarAanvraag.Website, UriKind.Absolute, out website)) { return(BadRequest(new { error = "Ongeldige website" })); } if (CheckEmailBestaat(handelaarAanvraag.Email)) { return(BadRequest(new { error = "Het gekozen emailadres is reeds gekoppeld aan een account" })); } if (CheckGebruikersnaamBestaat(handelaarAanvraag.Login.Gebruikersnaam)) { return(BadRequest(new { error = "De gekozen gebruikersnaam is reeds gekoppeld aan een account" })); } Handelaar nieuweHandelaar = new Handelaar(); nieuweHandelaar.Telefoonnummer = handelaarAanvraag.Telefoonnummer; nieuweHandelaar.Email = handelaarAanvraag.Email; nieuweHandelaar.Voornaam = handelaarAanvraag.Voornaam; nieuweHandelaar.Achternaam = handelaarAanvraag.Achternaam; nieuweHandelaar.Login.Gebruikersnaam = handelaarAanvraag.Login.Gebruikersnaam; nieuweHandelaar.Login.Geactiveerd = false; nieuweHandelaar.Login.Salt = MaakSalt(); nieuweHandelaar.Login.Hash = MaakHash(handelaarAanvraag.Login.Wachtwoord, nieuweHandelaar.Login.Salt); nieuweHandelaar.Login.Rol = _rolRepository.GetByName(handelaarAanvraag.Login.Rol); nieuweHandelaar.HandelsNaam = handelaarAanvraag.HandelsNaam; if (handelaarAanvraag.Website != null) { nieuweHandelaar.Website = handelaarAanvraag.Website; } nieuweHandelaar.PromotieRange = 0; nieuweHandelaar.Locatie.Straat = handelaarAanvraag.Locatie.Straat; nieuweHandelaar.Locatie.Huisnummer = handelaarAanvraag.Locatie.Huisnummer; nieuweHandelaar.Locatie.Postcode = handelaarAanvraag.Locatie.Postcode; nieuweHandelaar.Locatie.Gemeente = handelaarAanvraag.Locatie.Gemeente; // Ophalen van Latitude en Longitude op basis van het meegegeven adres var adres = $"{nieuweHandelaar.Locatie.Straat}+{nieuweHandelaar.Locatie.Huisnummer},+{nieuweHandelaar.Locatie.Postcode}+{nieuweHandelaar.Locatie.Gemeente},+België"; List <double> latAndLong = await GetLatAndLongFromAddressAsync(adres); nieuweHandelaar.Locatie.Latitude = latAndLong[0]; nieuweHandelaar.Locatie.Longitude = latAndLong[1]; nieuweHandelaar.Login.gebruiker = nieuweHandelaar; _gebruikerRepository.Registreer(nieuweHandelaar); //mail service handelaar var message = new MailMessage(); message.From = new MailAddress("*****@*****.**"); message.To.Add(nieuweHandelaar.Email); message.ReplyToList.Add("*****@*****.**"); message.Subject = "Uw aanvraag om handelaar te worden werd goed ontvangen"; message.Body = string.Format("Beste {0} \n\nUw aanvraag om handelaar te worden, werd goed ontvangen.\nVan zodra de aanvraag goedgekeurd is, zal u een bevestigingsmail ontvangen. \n\nMet vriedelijke groeten,\nHet Lunchers team ", nieuweHandelaar.HandelsNaam); //smpt server var SmtpServer = new SmtpClient("smtp.gmail.com"); SmtpServer.Port = 587; SmtpServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "reallyStrongPwd123"); SmtpServer.EnableSsl = true; //message sent SmtpServer.Send(message); //mail service admin var messageadmin = new MailMessage(); messageadmin.From = new MailAddress("*****@*****.**"); messageadmin.To.Add("*****@*****.**"); messageadmin.ReplyToList.Add(nieuweHandelaar.Email); messageadmin.Subject = "Er werd zonet een aanvraag ingediend om handelaar te worden"; messageadmin.Body = string.Format("Beste websitebeheerder \n\nEr werd zonet een aanvraag ingediend om handelaar te worden.\n\nVolgende gegevens werden ingevuld: \nGebruikersnaam: {0}\nVoornaam: {1}\nAchternaam: {2}\nTelefoon: {3}\nEmail: {4}\nHandelsnaam: {5}\nWebsite: {6}\nAdres: {7} {8}, {9} {10}\n\nMet vriedelijke groeten,\nHet Lunchers team ", nieuweHandelaar.Login.Gebruikersnaam, nieuweHandelaar.Voornaam, nieuweHandelaar.Achternaam, nieuweHandelaar.Telefoonnummer, nieuweHandelaar.Email, nieuweHandelaar.HandelsNaam, nieuweHandelaar.Website, nieuweHandelaar.Locatie.Straat, nieuweHandelaar.Locatie.Huisnummer, nieuweHandelaar.Locatie.Postcode, nieuweHandelaar.Locatie.Gemeente); //smpt server var SmtpServerAdmin = new SmtpClient("smtp.gmail.com"); SmtpServerAdmin.Port = 587; SmtpServerAdmin.Credentials = new System.Net.NetworkCredential("*****@*****.**", "reallyStrongPwd123"); SmtpServerAdmin.EnableSsl = true; //message sent SmtpServerAdmin.Send(messageadmin); return(Ok(new { bericht = "Uw aanvraag om handelaar te worden is succesvol ingediend!" })); } //Als we hier zijn is is modelstate niet voldaan dus stuur error 400, slechte aanvraag string foutboodschap = ResultaatCustomNestdModelCheck(results); return(BadRequest(new { error = "De ingevoerde waarden zijn onvolledig of voldoen niet aan de eisen voor een handelaar. Foutboodschap: " + foutboodschap })); }