Example #1
0
        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 }));
        }