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

        public bool OppdaterTolk(Tolk_VM Tolk)
        {
            //var tolkOpdate = db.Personer.Find(Tolk.persId);
            try
            {
                var dbtolk = db.Personer.Find(Tolk.persId);
                if (dbtolk != null)
                {
                    dbtolk.fornavn           = Tolk.fornavn;
                    dbtolk.etternavn         = Tolk.etternavn;
                    dbtolk.telefon           = Tolk.telefon;
                    dbtolk.poststed.postNr   = Tolk.postnr;
                    dbtolk.poststed.postSted = Tolk.poststed;
                    dbtolk.email             = Tolk.epost;
                    dbtolk.adresse           = Tolk.adresse;

                    db.SaveChanges();
                    return(true);
                }
                return(false);
            }
            catch (Exception feil)
            {
                Debug.WriteLine("Exception Message: " + feil.Message);
                return(false);
            }
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>	Hent en tolk. </summary>
        ///
        /// <remarks>	Mojola, 19/05/2017. </remarks>
        ///
        /// <param name="tolkId">	Identifier for the tolk. </param>
        ///
        /// <returns>	A Tolk_VM. </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public Tolk_VM hentEnTolk(int tolkId)
        {
            try
            {
                var tk = db.Personer.OfType <Tolk>().FirstOrDefault(T => T.persId == tolkId);


                if (tk == null)
                {
                    return(null);
                }
                else
                {
                    var hentetTolk = new Tolk_VM()
                    {
                        persId    = tk.persId,
                        fornavn   = tk.fornavn,
                        etternavn = tk.etternavn,
                        telefon   = tk.telefon,
                        postnr    = tk.poststed.postNr,
                        poststed  = tk.poststed.postSted,
                        epost     = tk.email,
                        adresse   = tk.adresse,
                        godkjent  = tk.godkjent
                    };
                    return(hentetTolk);
                }
            }
            catch (Exception feil)
            {
                Debug.WriteLine("Exception Message: " + feil.Message);
                return(null);
            }
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>	Liste alle tolk. </summary>
        ///
        /// <remarks>	Mojola, 19/05/2017. </remarks>
        ///
        /// <returns>	A List&lt;Tolk_VM&gt; </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////



        public List <Tolk_VM> ListeAlleTolk()
        {
            var db = new DbNetcont();

            List <Tolk> alleTolk = db.Personer.OfType <Tolk>().ToList();

            try
            {
                List <Tolk_VM> utListe = new List <Tolk_VM>();
                foreach (var row in alleTolk)
                {
                    if (true)
                    {
                        var Tolk = new Tolk_VM()
                        {
                            persId        = row.persId,
                            fornavn       = row.fornavn,
                            etternavn     = row.etternavn,
                            telefon       = row.telefon,
                            postnr        = row.poststed.postNr,
                            poststed      = row.poststed.postSted,
                            epost         = row.email,
                            adresse       = row.adresse,
                            godkjent      = row.godkjent,
                            utilgjengelig = getUtilgjengelig(row.persId)
                        };
                        var spraakListe = new List <SpraakDomene>();
                        foreach (var s in row.spraak)
                        {
                            var sd = new SpraakDomene()
                            {
                                navn     = s.navn,
                                spraakId = s.spraakId
                            };
                            spraakListe.Add(sd);
                        }
                        Tolk.spraak = spraakListe;
                        utListe.Add(Tolk);
                    }
                }
                return(utListe);
            }
            catch (Exception feil)
            {
                Debug.WriteLine("Exception Message: " + feil.Message);

                return(null);
            }
        }
        public HttpResponseMessage GetTolk(int id)
        {
            //List<Tolking_vm> liste = repository.listOppdragMedTolkId(tolkID);
            Tolk_VM tolk = repository.hentEnTolk(id);


            var    Json       = new JavaScriptSerializer();
            string JsonString = Json.Serialize(tolk);

            return(new HttpResponseMessage()
            {
                Content = new StringContent(JsonString, Encoding.UTF8, "application/json"),
                StatusCode = HttpStatusCode.OK
            });
        }
        /*
         * /// <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);
            }
        }
        public HttpResponseMessage UpdateTolk([FromBody] Tolk_VM tolk)
        {
            bool ok = repository.OppdaterTolk(tolk);

            if (ok)
            {
                return(new HttpResponseMessage()
                {
                    StatusCode = HttpStatusCode.OK
                });
            }
            return(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.BadRequest,
                Content = new StringContent("Søknaden ble ikke lagret!")
            });
        }
        public List <Tolk_VM> ListeAlleTolkSomSnakkeDetSprrak(int id)
        {
            var db = new DbNetcont();

            List <Tolk> alleTolk = db.Personer.OfType <Tolk>().ToList();

            try
            {
                var            oppdrag = db.Oppdrag.OfType <Tolking>().FirstOrDefault(k => k.oppdragID == id);
                List <Tolk_VM> utListe = new List <Tolk_VM>();
                foreach (var row in alleTolk)
                {
                    if (row.spraak.Contains(db.Spraak.Find(oppdrag.fraspraak)) && row.spraak.Contains(db.Spraak.Find(oppdrag.tilspraak)))
                    {
                        var tolk = new Tolk_VM()
                        {
                            persId       = row.persId,
                            fornavn      = row.fornavn,
                            etternavn    = row.etternavn,
                            telefon      = row.telefon,
                            postnr       = row.poststed.postNr,
                            poststed     = row.poststed.postSted,
                            epost        = row.email,
                            adresse      = row.adresse,
                            godkjent     = row.godkjent,
                            tilgjengelig = sjekkUtilgjengelig(row.persId, oppdrag.fratidspunkt)
                        };
                        utListe.Add(tolk);
                    }
                }
                return(utListe);
            }
            catch (Exception feil)
            {
                Debug.WriteLine("Exception Message: " + feil.Message);

                return(null);
            }
        }