예제 #1
0
        /// <summary>
        /// Legger inn en ny bruker i user-tabellen. Postaddressene legges ikke dobbelt
        /// slik at vi slipper dobbeltlagring. Et problem nå er at hvis noen lager en postnummer
        /// med feil poststed, vil alle andre med samme postnummer få dette poststedet også.
        /// Vi har planlagt å bruke Posten sitt API for å fylle databasen vår med postnumre og
        /// auto-fylle posted for å unngå dette. Her er det også en try-catch vi må håndtere.
        /// </summary>
        /// <param name="inUser">Tar inn en bruker</param>
        /// <returns>returnerer en bolsk verdi avhengig av om registreringen var velykket eller ikke.</returns>


        public bool AddCustomer(UserViewModel inUser)
        {
            using (var context = new LunaContext())
            {
                try
                {
                    if (context.Users.FirstOrDefault(u => u.Email == inUser.Email) != null)
                    {
                        return(false);
                    }
                    var newUser = new User()
                    {
                        FirstName     = inUser.FirstName,
                        LastName      = inUser.LastName,
                        Address       = inUser.Address,
                        AccountStatus = 1
                    };

                    //Legger inn nytt postnr og poststed hvis det ikke allerede finnes i databasen.
                    if (context.PostalAddresses.Find(inUser.ZipCode) != null)
                    {
                        newUser.PostalAddress = context.PostalAddresses.FirstOrDefault(z => z.ZipCode == inUser.ZipCode);
                    }
                    else
                    {
                        newUser.PostalAddress = new PostalAddress()
                        {
                            ZipCode    = inUser.ZipCode,
                            PostalArea = inUser.PostalArea
                        };
                    }

                    newUser.Email = inUser.Email;

                    var salt = PasswordEncryption.addSalt();
                    newUser.Salt     = salt;
                    newUser.Password = PasswordEncryption.toHash(inUser.Password, salt);

                    context.Users.Add(newUser);
                    context.SaveChanges();
                    return(true);
                }
                catch (Exception error)
                {
                    return(false);
                }
            }
        }