/*
         * /// <summary>
         * /// Method to check that the persons details are correct
         * /// with the inputs at the frontend and the backend
         * /// hence the database.
         * /// </summary>
         * /// <param name="email"></param>
         * /// <param name="passord"></param>
         * /// <returns></returns>
         *
         * public Login_vm reggisteret_i_db(Login_vm ny)
         * {
         *  using (var db = new DbNetcont())
         *  {
         *
         *      List<Kunde> alleKunder = db.Personer.OfType<Kunde>().ToList();
         *      byte[] dbPaasord;
         *      foreach (var k in alleKunder)
         *      {
         *          dbPaasord = lagHash(ny.passord + k.Salt);
         *
         *          if(k.password.SequenceEqual(dbPaasord))
         *          {
         *              Login_vm retur = new Login_vm();
         *              retur.email = k.email;
         *              retur.id = k.persId;
         *              retur.role = 1;
         *              return retur;
         *          }
         *      }
         *
         *      return null;
         *  }
         * }
         */


        /// <summary>

        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// /**********************************************************Tolk-start************************.
        /// </summary>
        ///
        /// <remarks>	Mojola, 19/05/2017. </remarks>
        ///
        /// <param name="nyTolk">	The ny tolk. </param>
        ///
        /// <returns>	True if it succeeds, false if it fails. </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public bool settinnTolk(Tolk_VM nyTolk)
        {
            try
            {
                string salt          = lagSalt();
                var    passordOgSalt = nyTolk.passord + salt;
                byte[] dbPassword    = lagHash(passordOgSalt);

                var dbTolk = new Tolk()
                {
                    fornavn   = nyTolk.fornavn,
                    etternavn = nyTolk.etternavn,
                    telefon   = nyTolk.telefon,
                    email     = nyTolk.epost,
                    adresse   = nyTolk.adresse,
                    regDato   = DateTime.Now,
                    password  = dbPassword,
                    Salt      = salt
                };
                var db = new DbNetcont();

                var spraakFunnet = db.Poststeder.Find(nyTolk.postnr);

                if (spraakFunnet == null)
                {
                    var nyttpoststed = new Poststed()
                    {
                        postNr   = nyTolk.postnr,
                        postSted = nyTolk.poststed
                    };
                    dbTolk.poststed = nyttpoststed;
                }
                else
                {
                    dbTolk.poststed = spraakFunnet;
                }
                db.Personer.Add(dbTolk);
                db.SaveChanges();

                return(true);
            }
            catch (Exception feil)
            {
                Debug.WriteLine("Exception Message: " + feil.Message);
                return(false);
            }
        }
        ///// <summary>
        ///// Setter inn en Amdministrator
        ///// </summary>
        ///// <param name="innAdmin"></param>
        ///// <returns></returns>
        public bool settinnAdmin(FKunde innAdmin)
        {
            var nyAdmin = new Admin()
            {
                fornavn   = innAdmin.fornavn,
                etternavn = innAdmin.etternavn,
                email     = innAdmin.email,
                adresse   = innAdmin.adresse,
                regDato   = DateTime.Now,
                adminNr   = "019901999",
                password  = lagHash(innAdmin.password),
            };
            var db = new DbNetcont();

            try
            {
                var eksistererPostnr = db.Poststeder.Find(innAdmin.postNr);

                if (eksistererPostnr == null)
                {
                    var nyttpoststed = new Poststed()
                    {
                        postNr   = innAdmin.postNr,
                        postSted = innAdmin.postSted
                    };
                    nyAdmin.poststed = nyttpoststed;
                }
                else
                {
                    nyAdmin.poststed = eksistererPostnr;
                }
                db.Personer.Add(nyAdmin);
                db.SaveChanges();

                return(true);
            }
            catch (Exception feil)
            {
                Debug.WriteLine("Exception Message: " + feil.Message);
                return(false);
            }
        }
        /// <summary>
        /// this will find and re turn a person
        /// with the help of the id as a key from the database
        /// </summary>
        /// <param name="persId"></param>
        /// <param name="innkunde"></param>
        /// <returns></returns>
        public bool endreKunde(int persId, Kunde innkunde)
        {
            var db = new DbNetcont();

            try
            {
                Person endreKunde = db.Personer.Find(innkunde.persId);
                endreKunde.fornavn   = innkunde.fornavn;
                endreKunde.etternavn = innkunde.etternavn;
                endreKunde.email     = innkunde.email;
                endreKunde.adresse   = innkunde.adresse;
                endreKunde.regDato   = innkunde.regDato;
                endreKunde.password  = innkunde.password;

                if (endreKunde.poststed.postNr != innkunde.poststed.postNr)
                {
                    Poststed eksisterendePostdted = db.Poststeder.Find(innkunde.poststed.postNr);
                    if (eksisterendePostdted == null)
                    {
                        var nyttPoststed = new Poststed()
                        {
                            postNr   = innkunde.poststed.postNr,
                            postSted = innkunde.poststed.postSted
                        };
                        db.Poststeder.Add(nyttPoststed);
                    }
                    else
                    {
                        endreKunde.poststed.postNr = innkunde.poststed.postNr;
                    }
                }
                ;
                db.SaveChanges();
                return(true);
            }
            catch (Exception feil)
            {
                Debug.WriteLine("Exception Message: " + feil.Message);
                return(false);
            }
        }