/*
         * Metod för att blocka en användare.
         * Inparametrarna är:
         * ID:t på den användare som ska blockas
         * ID:t på den admin som blockar användaren
         * Orsaken till blockningen
         * Dagens datum
         * Datumet till vilket användaren är blockad */
        public bool BlockUser(int Id, int AdminId, string reason, DateTime dateTo)
        {
            // Hitta rätt användare i databasen
            var user = db.Users.Where(x => x.ID == Id).FirstOrDefault();
            // Nytt objekt för den blockade användaren
            BlockedUsers blocked = new BlockedUsers();

            // Konvertera värdet av variablen DateTo så att den endast visar datum
            var toDate = dateTo.Date;

            // Variabel för dagens datum och tid
            var dateandtime = DateTime.Now;
            // Konvertera dagens datum och tid till endast datum
            var date = dateandtime.Date;

            // Om användare inte redan är blockad
            if (user.StatusID != 3)
            {
                // Användaren tilldelas status-id 3, vilket innebär blockad
                user.StatusID = 3;
                // Det nya objektet, som sparas i databasen, ´tilldelas värdena av användaruppgifterna

                blocked.UserID = Id;

                blocked.SuspendedBy = AdminId;
                blocked.Reason      = reason;
                blocked.DateFrom    = date;
                blocked.DateTo      = toDate;
                // Objektet läggs till i databasen
                db.BlockedUsers.Add(blocked);
                db.SaveChanges();

                return(true);
            }
            // Om användaren redan är blockad
            else
            {
                return(false);
            }
        }
        /*
         * Denna metod kollar om en blockering skall låsas upp, utifrån dagens datum samt det datum vid vilket användaren blockades.
         * Metoden tar Id:t från den specifika användaren som inparameter.
         */
        private bool CheckBlockDate(int BlockedId)
        {
// Hitta användaren i BlockedUser-tabellen
            BlockedUsers BlockedUser = (from x in db.BlockedUsers
                                        where x.UserID == BlockedId
                                        select x).FirstOrDefault();

// Om en användare hittas
            if (BlockedUser != null)
            {
// Om dagens datum är längre fram i tiden än det datum som blockeringen skall tas bort
                if (DateTime.Now > BlockedUser.DateTo)
                {
/*
 * Användaren finns nu både i User-tabellen coh i BlockedUser-tabellen.
 * I User-tabellen vill vi kunna ändra status-Id på användaren från 3 (blockad) till 1 (aktiv).
 * Därför plockar vi nu även ut användaren från User-tabellen.
 */
                    var user = db.Users.Where(x => x.ID == BlockedId).FirstOrDefault();
// Här ändras Status-Id:t
                    user.StatusID = 1;
// Den blockade användaren tas bort ur BlockedUser-tabellen och finns nu således bara kvar i User-tabellen
                    db.BlockedUsers.Remove(BlockedUser);
// Ändringarna sparas i databasen
                    db.SaveChanges();
                    return(true);
                }
// Om dagens datum inte är längre fram i tiden än det datum till vilket användaren ska vara blockad
                else
                {
                    return(false);
                }
            }
// Om en användare inte hittas i BlockedUser-tabellen
            else
            {
                return(false);
            }
        }