/// <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> /// Seleciona todas as caronas para lista de usuários recebida. /// É retornada lista de caronas cadastradas par o mês vigente /// e que tenham ainda acentos disponíveis. /// </summary> /// <param name="listUsersID">Lista de usuários a ter as caronas pesquisadas</param> /// <returns>Lista com caronas</returns> public static List <RidesModel> RetrieveRidesFromList(List <Guid> listUsersID, DateTime?from, DateTime?to) { //Se não especificou filtro, pesquisa para caronas no mes vigente if ((from == null) && (to == null)) { return(RidesManager.RetrieveFromListNoFilter(listUsersID)); } else { return(RidesManager.RetrieveFromListWithFilter(listUsersID, from, to)); } }
/// <summary> /// Aceita uma solicitação de reserva /// </summary> /// <param name="userID">Usuário que pediu a carona</param> /// <param name="rideID">Identificador da carona</param> /// <param name="username">Nome do usuário que solicitou a carona</param> /// <param name="driverName">Nome do motorista</param> public static void AcceptReservation(Guid userID, Guid rideID, string username) { DBConfigurations database = new DBConfigurations(); var reserve = (from reservation in database.RidesRequest where reservation.RideID == rideID && reservation.UserID == userID select reservation).First(); database.RidesRequest.Remove(reserve); database.SaveChanges(); RidesManager.AcceptRide(reserve.UserID, reserve.RideID, username); NotificationsManager.AddRideRequestNotification(userID, username, true); }
/// <summary> /// Recupera todas as informações relacionadas ao histórico do usuário. /// </summary> /// <param name="userID">Identificador do usuário</param> /// <param name="year">Ano para efetuar a pesquisa</param> /// <returns>HistoricModel com todas as identificações do usuário</returns> public static HistoricModel RetrieveUserHistory(Guid userID, int year) { DBConfigurations database = new DBConfigurations(); var offeredRides = (from rides in database.Ride where rides.DonorID == userID && rides.TimeFrom.Year == year select rides).ToList(); var receivedRidesUsers = (from rideUsers in database.RideUsers where rideUsers.UserID == userID select rideUsers).ToList(); var receivedAllRides = RidesManager.GetRidesFromRideUsers(receivedRidesUsers); //filtra para apenas o ano recebido var receivedRides = new List <Rides>(); foreach (var ride in receivedAllRides) { if (ride.TimeFrom.Year == year) { receivedRides.Add(ride); } } var drivedDistance = offeredRides.Select(distance => distance.Distance).Sum(); var acceptedDistance = receivedRides.Select(distance => distance.Distance).Sum(); double totalGain = 0.0; //calcula total ganho foreach (var offered in offeredRides) { if (offered.Seats != offered.RemainingSeats) { int aceitaram = offered.Seats - offered.RemainingSeats; totalGain = totalGain + Convert.ToDouble(offered.Price * aceitaram); } } double totalPaid = 0.0; //calcula total pago foreach (var received in receivedRides) { totalPaid = totalPaid + Convert.ToDouble(received.Price); } var historicModel = new HistoricModel { AcceptedDistance = acceptedDistance, DrivedDistance = drivedDistance, OfferedRides = Conversor.ListRidesToListModel(offeredRides), ReceivedRides = Conversor.ListRidesToListModel(receivedRides), TotalGain = totalGain, TotalPaid = totalPaid }; //monta LucroAnual e oferecidas foreach (var offered in offeredRides) { int mes = offered.TimeFrom.Month; double lucroNoMes = historicModel.LucroAnualOferecidas[mes]; lucroNoMes = lucroNoMes + Convert.ToDouble(offered.Price); historicModel.LucroAnualOferecidas[mes] = lucroNoMes; int caronasOferecidas = historicModel.CaronasAnuaisOferecidas[mes]; caronasOferecidas++; historicModel.CaronasAnuaisOferecidas[mes] = caronasOferecidas; } //monta pagamento anual e aceitas foreach (var received in receivedRides) { int mes = received.TimeFrom.Month; double lucroNoMes = historicModel.LucroAnualAceitas[mes]; lucroNoMes = lucroNoMes + Convert.ToDouble(received.Price); historicModel.LucroAnualAceitas[mes] = lucroNoMes; int caronasAceitas = historicModel.CaronasAnuaisAceitas[mes]; caronasAceitas++; historicModel.CaronasAnuaisAceitas[mes] = caronasAceitas; } return(historicModel); }
/// <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); } }