/// <summary> /// Envia um convite de amizade do usuário userModel para o usuário com ID da guid recebida /// </summary> /// <param name="userModel">Usuário logado (usuário que enviou o convite)</param> /// <param name="friendID">ID do usuário a receber solicitação de amizade</param> /// <param name="error">Controle de erro</param> /// <returns>True se enviou solicitação com sucesso ou false</returns> public static bool InviteFriend(UserModel userModel, Guid friendID, out ErrorEnum error) { //Verifica se convite já não foi enviado DBConfigurations database = new DBConfigurations(); error = ErrorEnum.NoErrors; try { //Se convite não existir, envia if (!FriendshipManager.AreFriends(userModel.ID, friendID)) { var newFriendship = new Friendships { User_A = userModel.ID, User_B = friendID, Approved = false }; database.Friendships.Add(newFriendship); database.SaveChanges(); return(true); } //Se existir, retorna falso else { error = ErrorEnum.ResendSolicitation; return(false); } } catch (Exception) { error = ErrorEnum.ExceptionError; return(false); } }
/// <summary> /// Retorna uma lista de caronas dos amigos do usuário /// </summary> /// <param name="userID">Usuário a ter as caronas de amigos pesquisada</param> /// <param name="from">Filtro de pesquisa - Data inicial</param> /// <param name="to">Filtro de pesquisa - Data final</param> /// <returns>Lista com caronas para o periodo selecionado</returns> public static List <RidesModel> RetrieveFriendsRides(Guid userID, DateTime?from, DateTime?to) { var listFriends = FriendshipManager.RetrieveFriendsID(userID); var ridesFromFriends = RidesManager.RetrieveRidesFromList(listFriends, from, to); return(ridesFromFriends); }
/// <summary> /// Efetua a pesquisa de possíveis conexões do usuário a partir dos filtros recebidos /// </summary> /// <param name="model">Model do usuário logado</param> /// <param name="city">Cidade passada como parâmetro na pesquisa</param> /// <param name="years">Idade passada como parâmetro na pesquisa</param> /// <param name="name">Nome passado como parâmetro na pesquisa</param> /// <param name="email">Email passado como parâmetro na pesquisa</param> /// <param name="error">Variável de controle</param> /// <returns>Lista com as 100 primeiras opções de amizade.</returns> public static List <UserModel> RetrieveNoFriends(UserModel model, string city, int?years, string name, string email, out ErrorEnum error) { var listRelatedFriends = new List <Users>(); error = ErrorEnum.NoErrors; try { if ((name.Trim().Length > 0) && (email.Trim().Length > 0)) { listRelatedFriends = FriendshipManager.SearchNameEmail(name, email); } else if ((name.Trim().Length > 0)) { listRelatedFriends = FriendshipManager.SearchName(name); } else if ((email.Trim().Length > 0)) { listRelatedFriends = FriendshipManager.SearchEmail(email); } else { listRelatedFriends = FriendshipManager.SearchNoFilters(city, years, model.City, model.Birth.Year); } //Remove ele mesmo da lista bool containsItem = listRelatedFriends.Any(item => item.ID == model.ID); if (containsItem) { listRelatedFriends.Remove( (from friend in listRelatedFriends where friend.ID == model.ID select friend).First() ); } //Remove os que já são amigos da lista var listAux = new List <Users>(); foreach (var friend in listRelatedFriends) { if (!FriendshipManager.AreFriends(model.ID, friend.ID)) { listAux.Add(friend); } } return(Conversor.ListUserToModel(listAux)); } catch (Exception) { error = ErrorEnum.ExceptionError; return(null); } }
/// <summary> /// Retorna uma lista com todos os amigos de determinado usuário /// </summary> /// <param name="userID">ID do usuário a ser efetuada a pesquisa</param> /// <returns>Lista com todos os amigos do usuário</returns> public static List <UserModel> RetrieveFriends(Guid userID) { DBConfigurations database = new DBConfigurations(); var friendships = FriendshipManager.RetrieveFriendsID(userID); var listFriends = (from user in database.Users where friendships.Contains(user.ID) select user).ToList(); var listFriendsModel = new List <UserModel>(); foreach (var friend in listFriends) { listFriendsModel.Add(Conversor.UserDTOToModel(friend)); } return(listFriendsModel); }
/// <summary> /// Retorna um dictionary contendo como informação uma lista de amigos e se a amizade existe ou o convite de amizade não foi /// confirmado /// </summary> /// <param name="userID">ID do usuário a ter a pesquisa efetuada</param> /// <returns>Dictionary com relacionamentos</returns> public static Dictionary <UserModel, bool> RetrieveFriendsRelations(Guid userID) { DBConfigurations database = new DBConfigurations(); var friendships = (from friend in database.Friendships where (friend.User_A == userID) select friend.User_B).ToList(); var listFriends = (from user in database.Users where friendships.Contains(user.ID) select user).ToList(); var dictionarymodel = new Dictionary <UserModel, bool>(); foreach (var friend in listFriends) { dictionarymodel.Add(Conversor.UserDTOToModel(friend), FriendshipManager.AreFriendsAccepted(userID, friend.ID)); } return(dictionarymodel); }
/// <summary> /// Realiza consulta para trazer os dados do usuário no banco de dados e armazenar o resultado em uma /// variável de seção. /// </summary> /// <param name="userID">ID do usuário logado (Guid)</param> /// <param name="error">Enum de retorno de erros</param> /// <returns></returns> public static UserModel RetrieveUser(Guid userID, out ErrorEnum error) { DBConfigurations database = new DBConfigurations(); error = ErrorEnum.NoErrors; try { var userDTO = (from user in database.Users where user.ID == userID select user).First(); var userModel = Conversor.UserDTOToModel(userDTO); #region Messages var messagesDTO = UserManager.GetMessages(userModel.ID); userModel.MessagesFromMe = new List <Messages>(); userModel.MessagesToMe = new List <Messages>(); foreach (var message in messagesDTO) { if (message.SenderID == userModel.ID) { userModel.MessagesFromMe.Add(message); } else { userModel.MessagesToMe.Add(message); } } #endregion #region Rides userModel.DonorRides = RidesManager.GetDonorRides(userModel.ID); userModel.ReceiverRides = RidesManager.GetReceiverRides(userModel.ID); userModel.OpenRequests = RidesManager.GetRidesRequests(userModel.ID); #endregion #region BankAccount var userBankAccount = UserBankManager.GetUserBankAccount(userDTO.UserBankID); userModel.BankAccount.Account = userBankAccount.Account; userModel.BankAccount.Agency = userBankAccount.Agency; userModel.BankAccount.BankID = userBankAccount.BankID; userModel.BankAccount.ID = userBankAccount.ID; #endregion #region Image userModel.FileContentResult = ImagesManager.RetrieveImage(userModel.ID); #endregion #region Friends Requests userModel.FriendsRequests = FriendshipManager.GetFriendsRequests(userModel.ID); #endregion #region ListNotifications userModel.ListNotifications = NotificationsManager.GetUserNotifications(userModel.ID); userModel.RidesRequests = RidesRequestManager.GetAllRequestsByDriver(userModel.ID); #endregion return(userModel); } catch (Exception) { error = ErrorEnum.ExceptionError; return(null); } }