Пример #1
0
        /// <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);
        }
Пример #2
0
 /// <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));
     }
 }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
            }
        }