/// <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); } } }