public async Task <ActionResult <UserLogin> > EditLoginMaker(long id, MakerWithLogin data)
        {
            UserLogin userLogin = data.userlogin;
            Maker     maker     = data.maker;

            string[] tags = data.tags;

            userLogin.UserTypeId = 2;

            var userLoginOld = _context.UserLogins.Find(id);
            var makerOld     = _context.Makers.Find(userLoginOld.MakerId);

            if (userLoginOld == null)
            {
                return(NotFound());
            }

            if (_context.UserLogins.Where(x => (x.Email == userLogin.Email) && (x.Id != id)).SingleOrDefault() != null)
            {
                return(Ok("Email"));
            }

            if (_context.UserLogins.Where(x => x.Username == userLogin.Username && (x.Id != id)).SingleOrDefault() != null)
            {
                return(Ok("Username"));
            }

            maker.Id = makerOld.Id;

            _context.Entry(makerOld).State = EntityState.Detached;

            _context.Entry(maker).State = EntityState.Modified;

            await _context.SaveChangesAsync();

            var makerTagsOld = await _context.MakerTags.Where(x => x.MakerId == maker.Id).ToListAsync();

            if (makerTagsOld != null)
            {
                foreach (MakerTag makerTag in makerTagsOld)
                {
                    _context.Entry(makerTag).State = EntityState.Detached;
                    makerTag.SelfSet = false;
                    _context.Entry(makerTag).State = EntityState.Modified;
                }
            }

            await _context.SaveChangesAsync();

            if (tags != null)
            {
                foreach (string tag in tags)
                {
                    Tag tagObject = await _context.Tags.Where(x => x.Naam.ToLower() == tag.ToLower()).SingleOrDefaultAsync();

                    if (tagObject == null)
                    {
                        tagObject      = new Tag();
                        tagObject.Naam = tag;

                        _context.Tags.Add(tagObject);
                    }

                    var makerTag = await _context.MakerTags.Where(x => (x.TagId == tagObject.Id) && (x.MakerId == maker.Id)).SingleOrDefaultAsync();

                    if (makerTag == null)
                    {
                        MakerTag makertag = new MakerTag();
                        makertag.MakerId  = maker.Id;
                        makertag.Interest = 1;
                        makertag.TagId    = tagObject.Id;
                        makertag.SelfSet  = true;
                        _context.MakerTags.Add(makertag);
                    }
                    else
                    {
                        _context.Entry(makerTag).State = EntityState.Detached;
                        makerTag.SelfSet = true;
                        _context.Entry(makerTag).State = EntityState.Modified;
                    }
                }
            }

            userLogin.MakerId = maker.Id;

            if (userLogin.Password == null)
            {
                userLogin.Password = userLoginOld.Password;
            }
            else
            {
                userLogin.Password = HashPassword(userLogin.Password);
            }

            _context.Entry(userLoginOld).State = EntityState.Detached;

            _context.Entry(userLogin).State = EntityState.Modified;
            await _context.SaveChangesAsync();


            return(CreatedAtAction("GetUserLogin", new { id = userLogin.Id }, userLogin));
        }
        public async Task <ActionResult <UserLogin> > AddLoginMaker(MakerWithLogin data)
        {
            UserLogin userLogin = data.userlogin;
            Maker     maker     = data.maker;

            string[] tags = data.tags;

            userLogin.UserTypeId = 2;

            if (_context.UserLogins.Where(x => x.Email == userLogin.Email).SingleOrDefault() != null)
            {
                return(Ok("Email"));
            }

            if (_context.UserLogins.Where(x => x.Username == userLogin.Username).SingleOrDefault() != null)
            {
                return(Ok("Username"));
            }

            _context.Makers.Add(maker);
            await _context.SaveChangesAsync();

            if (tags != null)
            {
                foreach (string tag in tags)
                {
                    Tag tagObject = await _context.Tags.Where(x => x.Naam.ToLower() == tag.ToLower()).SingleOrDefaultAsync();

                    if (tagObject == null)
                    {
                        tagObject      = new Tag();
                        tagObject.Naam = tag;

                        _context.Tags.Add(tagObject);
                    }

                    MakerTag makertag = new MakerTag();
                    makertag.MakerId  = maker.Id;
                    makertag.Interest = 1;
                    makertag.TagId    = tagObject.Id;
                    makertag.SelfSet  = true;
                    _context.MakerTags.Add(makertag);
                }
            }

            userLogin.MakerId  = maker.Id;
            userLogin.Password = HashPassword(userLogin.Password);

            _context.UserLogins.Add(userLogin);
            await _context.SaveChangesAsync();

            if (userLogin.Verified == false)
            {
                MailAddress to   = new MailAddress(userLogin.Email);
                MailAddress from = new MailAddress("*****@*****.**");

                MailMessage message = new MailMessage(from, to);
                message.Subject = "Bevestig je account bij Centask";
                message.Body    = "" +
                                  "<h1>Welkom bij Centask!</h1>" +
                                  "<p>Gelieve je account te bevestigen: " +
                                  "<a href='" + "http://localhost:4200/verifyUser?userLoginId=" + userLogin.Id + "'>Klik hier om te bevestigen</a>";

                message.IsBodyHtml = true;

                var client = new SmtpClient("smtp.mailtrap.io", 2525)
                {
                    Credentials = new NetworkCredential("9533f03187ee7c", "3058369c7f2f3b"),
                    EnableSsl   = true
                };

                try
                {
                    client.Send(message);
                }
                catch (SmtpException ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }

            return(CreatedAtAction("GetUserLogin", new { id = userLogin.Id }, userLogin));
        }