/* * I vyerna för flaggade och blockade användare vill vi bland annat kunna visa upp namnet på den som flaggat eller blockat en användare. * Vi har visserligen ID:t på dessa personer som foreign key i blocked respektive flaggeduser-tabellerna, men vi kan inte använda oss av detta Id för att visa upp ett namn när vi kommunicerar med en klient (hade vi varit i ett lokalt projekt hade det funkat). * Vi behöver alltså skicka med ett helt objekt till klienten och därför skapar vi här ett "fejk-objekt", vilket funkar som mellanhand mellan service och klient. * Vi skickar således detta fejk-objekt till klienten, vilket innehåller alla uppgifter. * Vi skickar alltså separata objekt för blockade och flaggade användare samt för den användare som flaggat respektive blockat. */ IEnumerable <Interface.InterfaceFlaggedUser> ILoginService.GetFlaggedUsers() // ID 2 is a FLAGGED user. { List <Interface.InterfaceFlaggedUser> returnList = new List <Interface.InterfaceFlaggedUser>(); // Loopa igenom uppgifterna om flaggade användare foreach (var dbUser in db.FlaggedUsers) { Interface.InterfaceUser returUser = new Interface.InterfaceUser(); Interface.InterfaceUser Flagger = new Interface.InterfaceUser(); InterfaceFlaggedUser interfaceflaggeduser = new InterfaceFlaggedUser(); // Det nya objektet får sina värden interfaceflaggeduser.ID = dbUser.ID; interfaceflaggeduser.Reason = dbUser.Reason; interfaceflaggeduser.FlaggedByUserId = dbUser.FlaggedBy; interfaceflaggeduser.WhoIsFlaggedID = dbUser.UserID; // Objekt för vem som är flaggad Users user = (from x in db.Users where x.ID == interfaceflaggeduser.WhoIsFlaggedID select x).FirstOrDefault(); returUser.StatusID = user.StatusID; returUser.Email = user.Email; returUser.RoleID = user.RoleID; returUser.Username = user.Username; returUser.Firstname = user.Firstname; returUser.Surname = user.Surname; returUser.ID = user.ID; // WhoIsFlagged tilldelas värdena av returuser och vi kan sedan använda attributet WhoIsFlagged för att kommunicera med klienten interfaceflaggeduser.WhoIsFlagged = returUser; Users FlaggedBy = (from x in db.Users where x.ID == interfaceflaggeduser.FlaggedByUserId select x).FirstOrDefault(); // Objektet flagger får sina värden Flagger.Email = FlaggedBy.Email; Flagger.Firstname = FlaggedBy.Firstname; Flagger.Surname = FlaggedBy.Surname; Flagger.Username = FlaggedBy.Username; // Attributet Flaggedby får värdet av objektet Flagger, vi använder oss sedan av FlaggedBy-attributet i kommunikationen med klienten interfaceflaggeduser.FlaggedBy = Flagger; // Hela FlaggedUser-objektet, inklusive FlaggedBy med de nya värdena, läggs till i listan som sedan returneras returnList.Add(interfaceflaggeduser); } return(returnList); }
// Metod för att visa alla aktiva användare, beter sig på samma sätt som metoden ovan IEnumerable <Interface.InterfaceUser> ILoginService.GetActiveUsers() { List <Interface.InterfaceUser> returnList = new List <Interface.InterfaceUser>(); foreach (var dbUser in db.Users) { if ((dbUser.StatusID == 1) || (dbUser.StatusID == 2)) { InterfaceStatus interfaceStatus = new InterfaceStatus(); Interface.InterfaceUser returUser = new Interface.InterfaceUser(); InterfaceRole interfacerole = new InterfaceRole(); returUser.StatusID = dbUser.StatusID; returUser.Email = dbUser.Email; returUser.RoleID = dbUser.RoleID; returUser.Username = dbUser.Username; returUser.Firstname = dbUser.Firstname; returUser.Surname = dbUser.Surname; returUser.ID = dbUser.ID; Status realStatus = (from x in db.Status where x.ID == returUser.StatusID select x).FirstOrDefault(); interfaceStatus.ID = realStatus.ID; interfaceStatus.StatusName = realStatus.StatusName; returUser.Status = interfaceStatus; Roles realRole = (from x in db.Roles where x.ID == returUser.RoleID select x).FirstOrDefault(); interfacerole.ID = realRole.ID; interfacerole.Role = realRole.Role; returUser.Roles = interfacerole; returnList.Add(returUser); } } return(returnList); }
// Objekt för blockade användare, beter sig på samma sätt som ovan IEnumerable <Interface.InterfaceBlockedUser> ILoginService.GetBlockedUsers() { List <Interface.InterfaceBlockedUser> returnList = new List <Interface.InterfaceBlockedUser>(); foreach (var dbUser in db.BlockedUsers) { Interface.InterfaceUser returUser = new Interface.InterfaceUser(); InterfaceBlockedUser interfaceblockeduser = new InterfaceBlockedUser(); InterfaceAdmin interfaceadmin = new InterfaceAdmin(); interfaceblockeduser.ID = dbUser.ID; interfaceblockeduser.Reason = dbUser.Reason; interfaceblockeduser.SuspendedBy = dbUser.SuspendedBy; interfaceblockeduser.DateFrom = dbUser.DateFrom; interfaceblockeduser.DateTo = dbUser.DateTo; interfaceblockeduser.UserId = dbUser.UserID; Users user = (from x in db.Users where x.ID == interfaceblockeduser.UserId select x).FirstOrDefault(); returUser.ID = user.ID; returUser.Username = user.Username; returUser.Firstname = user.Firstname; returUser.Surname = user.Surname; returUser.Email = user.Email; Admin admin = (from x in db.Admin where x.ID == interfaceblockeduser.SuspendedBy select x).FirstOrDefault(); interfaceadmin.ID = admin.ID; interfaceadmin.Username = admin.Username; interfaceblockeduser.Banner = interfaceadmin; interfaceblockeduser.UserObject = returUser; returnList.Add(interfaceblockeduser); } return(returnList); }
/* * Här är metoden för att visa alla moderatorer. * I denna lista vill vi kunna se moderatorns status (aktiv eller blockad). * Vi har angett dessa statusar med ett Id i form av en siffra, men i listan vill vi ju i stället kunna visa upp ett status-namn, alltså i text-form. * Dessa namn finns i en separat Status-tabell, för vilken vi har en foreign key från Users-tabellen. * När vi ska kommunicera mellan service och klient kan vi emellertid inte använda oss av denna nyckel, varför vi skapar ett separat "fejk-objekt", vilket funkar som mellanhand mellan service och klient. * Detta objekt tilldelas värdena från så väl Users som Status-tabellen och detta samlade objekt kan vi sedan använda för att visa upp allt vi vill i klienten. */ IEnumerable <Interface.InterfaceUser> ILoginService.GetModerators() { List <Interface.InterfaceUser> returnList = new List <Interface.InterfaceUser>(); // Loopa igenom uppgifterna i Users-tabellen foreach (var dbUser in db.Users) { // Om användarna är moderatorer if (dbUser.RoleID == 2) { // Nytt User-objekt som tilldelas värden från Users-tabellen Interface.InterfaceUser returUser = new Interface.InterfaceUser(); returUser.ID = dbUser.ID; returUser.StatusID = dbUser.StatusID; returUser.Email = dbUser.Email; returUser.RoleID = dbUser.RoleID; returUser.Username = dbUser.Username; // Hitta rätt användare i Status-tabellen, där även namnet på statusen finns Status status = (from x in db.Status where x.ID == returUser.StatusID select x).FirstOrDefault(); // Nytt Status-objekt med uppgifter från Status-tabellen InterfaceStatus interfacestatus = new InterfaceStatus(); interfacestatus.ID = status.ID; interfacestatus.StatusName = status.StatusName; /* * Här tilldelas attributet Status i returuser-objektet värdet av det nya InterfaceStatus-objektet. * Således finns så väl användaruppgifter som statusnamn nu i returuser-bojektet, vilket är det objekt vi sedan använder oss av i kommunikation med klienten. */ returUser.Status = interfacestatus; // Lägg till objektet i listan och returnera denna returnList.Add(returUser); } } return(returnList); }