示例#1
0
        public static Routine RegisterRoutine(User usr, Routine rtn)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                ROUTINE R = new ROUTINE();
                R.UserID = usr.UserID;
                R.Title = rtn.Title;
                R.Mon = rtn.Mon;
                R.Tue = rtn.Tue;
                R.Wed = rtn.Wed;
                R.Thu = rtn.Thu;
                R.Fri = rtn.Fri;
                R.Sat = rtn.Sat;
                R.Sun = rtn.Sun;
                R.Hour = rtn.Hour;
                R.Lat = rtn.Latitude;
                R.Lon = rtn.Longitude;

                entities.ROUTINE.Add(R);
                entities.SaveChanges();

                rtn.UserID = R.UserID;
                rtn.RoutineID = R.RoutineID;

                return rtn;
            }
        }
示例#2
0
文件: RideBLL.cs 项目: erichcl/TCC2WS
 public static void AtendeCarona(User usr, Ride rd)
 {
     using (elmatEntities entities = new elmatEntities())
     {
         var ride = (from R in entities.RIDE.Where(x => x.RideID == rd.RideID) select R).FirstOrDefault();
         ride.DriverID = usr.UserID;
         entities.SaveChanges();
     }
 }
示例#3
0
 public static void DeleteRoutine(User usr, Routine rtn)
 {
     using (elmatEntities entities = new elmatEntities())
     {
         var qryRoutines = (from R in entities.ROUTINE
                                where R.UserID == usr.UserID && R.RoutineID == rtn.RoutineID
                                select R).FirstOrDefault();
         entities.ROUTINE.Remove(qryRoutines);
         entities.SaveChanges();
     }
 }
示例#4
0
文件: UserBLL.cs 项目: erichcl/TCC2WS
 public static List<User> getUserFriends(User usr)
 {
     using (elmatEntities entities = new elmatEntities())
     {
         var AlreadyFriends = (from F in entities.FRIENDS.Where(x => x.UserID_A == usr.UserID || x.UserID_B == usr.UserID)
                               join UA in entities.USER on F.UserID_A equals UA.UserID
                               join UB in entities.USER on F.UserID_B equals UB.UserID
                               select new User {
                                   FacebookID = F.UserID_A == usr.UserID ? UB.FacebookID : UA.FacebookID,
                                   UserID = F.UserID_A == usr.UserID ? UB.UserID : UA.UserID,
                                   Name = F.UserID_A == usr.UserID ? UB.Name : UA.Name,
                                   RelationStatus = (int)F.StatusID
                               }).ToList();
         return AlreadyFriends;
     }
 }
示例#5
0
文件: RideBLL.cs 项目: erichcl/TCC2WS
 public static Ride CadastraRide(Ride r)
 {
     using (elmatEntities entities = new elmatEntities())
     {
         RIDE R = RideToRIDE(r);
         try
         {
             entities.RIDE.Add(R);
             entities.SaveChanges();
             r.RideID = R.RideID;
             return r;
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
示例#6
0
        public static GeoPoint checkClosestRoutine(User usr)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                var now = DateTime.Now;
                var closestRoutine = DateTime.Now.AddHours(1);

                var qryRoutines = (from R in entities.ROUTINE
                                   where R.UserID == usr.UserID
                                   && DbFunctions.CreateTime(R.Hour.Hour, R.Hour.Minute, R.Hour.Second) >= DbFunctions.CreateTime(now.Hour, now.Minute, now.Second)
                                   && DbFunctions.CreateTime(R.Hour.Hour, R.Hour.Minute, R.Hour.Second) <= DbFunctions.CreateTime(closestRoutine.Hour, closestRoutine.Minute, closestRoutine.Second)
                                   select new GeoPoint {
                                       Latitude = R.Lat,
                                       Longitude = R.Lon
                                   }).FirstOrDefault();
                return qryRoutines;
            }
        }
示例#7
0
文件: UserBLL.cs 项目: erichcl/TCC2WS
        public static void BlockFriend(User usr, User friend, bool isBlocked)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                FRIENDS F = (from f in entities.FRIENDS.
                                Where(x => (x.UserID_A == usr.UserID && x.UserID_B == friend.UserID)
                                        || (x.UserID_B == usr.UserID && x.UserID_A == friend.UserID))
                                select f).FirstOrDefault();

                if (isBlocked)
                {
                    F.StatusID = 2;
                }
                else
                {
                    F.StatusID = 1;
                }

                entities.SaveChanges();
            }
        }
示例#8
0
 public static List<Routine> GetUserRoutine(User usr)
 {
     using (elmatEntities entities = new elmatEntities())
     {
         var qryRoutines = (from r in entities.ROUTINE
                            where r.UserID == usr.UserID
                            select new Routine {
                                RoutineID = r.RoutineID,
                                Title = r.Title,
                                UserID = r.UserID,
                                Mon = r.Mon,
                                Tue = r.Tue,
                                Wed = r.Wed,
                                Thu = r.Thu,
                                Fri = r.Fri,
                                Sat = r.Sat,
                                Sun = r.Sun,
                                Hour = r.Hour,
                                Latitude = r.Lat,
                                Longitude = r.Lon
                            }).ToList();
         return qryRoutines;
     }
 }
示例#9
0
文件: UserBLL.cs 项目: erichcl/TCC2WS
        /// <summary>
        /// Faz uma busca por um objeto UserFilter e retorna primeiro o usuário que se encaixa nos critérios
        /// </summary>
        /// <param name="UsrSearch">UserFilter é uma classe criada para servir de objeto para buscas realizadas dentro dos usuários</param>
        /// <returns>Retorna um objeto User contendo o Facebook ID (identificação do próprio FB) e o UserID (identificação local)</returns>
        public static User getUser(UserFilter UsrSearch)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                var qrySearch = (from u in entities.USER select u);
                if (UsrSearch.FacebookID != null)
                {
                    qrySearch = qrySearch.Where(x => x.FacebookID == UsrSearch.FacebookID);
                }
                if (UsrSearch.UserID != null)
                {
                    qrySearch = qrySearch.Where(x => x.UserID == UsrSearch.UserID);
                }

                User retUsr = (from q in qrySearch
                               select new User
                               {
                                   Name = q.Name,
                                   FacebookID = q.FacebookID,
                                   UserID = q.UserID
                               }).FirstOrDefault();
                return retUsr;
            }
        }
示例#10
0
文件: RideBLL.cs 项目: erichcl/TCC2WS
 public static Ride VerificaCarona(User usr)
 {
     using (elmatEntities entities = new elmatEntities())
     {
         RIDE r = (from R in entities.RIDE.Where(x => x.UserID == usr.UserID) select R).OrderByDescending(x => x.RideID).FirstOrDefault();
         if (r != null)
             return RIDEToRide(r);
         else
             return null;
     }
 }
示例#11
0
文件: RideBLL.cs 项目: erichcl/TCC2WS
        public static List<Ride> ListaCaronas(FiltroRide fr, User usr)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                var qryRide = (from R in entities.RIDE.Include("USER1") select R);

                // Elimina os amigos bloqueados
                var ublockedFriends = UserBLL.getUserFriends(usr).Where(x => x.RelationStatus == 1).Select(x => x.UserID).ToList();
                qryRide = qryRide.Where(x => ublockedFriends.Contains(x.UserID));

                if (fr.RideID.HasValue)
                {
                    qryRide = qryRide.Where(x => x.RideID == fr.RideID.Value);
                }

                if (fr.DriverID.HasValue)
                {
                    qryRide = qryRide.Where(x => x.DriverID == fr.DriverID.Value);
                }

                // Quem pediu a carona (talvez implementar no futuro filtro para mais de um usuário)
                if (fr.UserID != null)
                {
                    qryRide = qryRide.Where(x => x.UserID == fr.UserID.Value);
                }

                if (fr.UserID.HasValue)
                {
                    usr.UserID = fr.UserID.Value;
                    var usrFriends = UserBLL.getUserFriends(usr).Select(x => x.UserID).ToList();;
                    // testar isso, não sei se vai funcionar
                    qryRide = qryRide.Where(x => usrFriends.Contains(x.UserID));
                }

                if (fr.HoraIni.HasValue)
                {
                    qryRide = qryRide.Where(x => x.Hour >= fr.HoraIni.Value);
                }
                if (fr.HoraFim.HasValue)
                {
                    qryRide = qryRide.Where(x => x.Hour <= fr.HoraFim.Value);
                }

                var minHour = DateTime.Now.AddHours(-2);

                var subqry = (from q in qryRide group q by q.UserID into g select new { UserID = g.Key, RideID = g.Max(a => a.RideID) });

                var qryRes = (from q in qryRide.Where(x => x.DriverID == null && x.UserID != usr.UserID && x.Hour >= minHour)
                              join g in subqry on new { q.UserID, q.RideID } equals new { g.UserID, g.RideID }
                              select new Ride
                              {
                                  usr = new User {
                                      UserID = q.USER1.UserID,
                                      FacebookID = q.USER1.FacebookID,
                                      Name = q.USER1.Name
                                  },
                                  RideID = q.RideID,
                                  Hour = q.Hour,
                                  LatDestino = q.LatDest,
                                  LatOrigem = q.LatOrg,
                                  LonDestino = q.LonDest,
                                  LonOrigem = q.LonOrg
                              }).ToList();

                return qryRes;
            }
        }
示例#12
0
        public static void UpdateRoutine(Routine rtn, User usr)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                var qryRoutines = (from R in entities.ROUTINE
                                   where R.UserID == usr.UserID && R.RoutineID == rtn.RoutineID
                                   select R).FirstOrDefault();

                qryRoutines.Title = rtn.Title;
                qryRoutines.Mon = rtn.Mon;
                qryRoutines.Tue = rtn.Tue;
                qryRoutines.Wed = rtn.Wed;
                qryRoutines.Thu = rtn.Thu;
                qryRoutines.Fri = rtn.Fri;
                qryRoutines.Sat = rtn.Sat;
                qryRoutines.Sun = rtn.Sun;
                qryRoutines.Hour = rtn.Hour;

                entities.SaveChanges();
            }
        }
示例#13
0
文件: UserBLL.cs 项目: erichcl/TCC2WS
        /// <summary>
        /// Localiza os amigos que o Facebook enviou e não estão relacionados na tabela FRIENDS
        /// </summary>
        /// <param name="parFriendList"> Lista dos IDs do Facebook dos amigos </param>
        /// <param name="usr"> Usuário que está realizando a comparação </param>
        public static int MakeFriends(List<Int64> parFriendList, User usr)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                var AlreadyFriends = (from F in entities.FRIENDS.Where(x => x.UserID_A == usr.UserID || x.UserID_B == usr.UserID)
                                    join UA in entities.USER on F.UserID_A equals UA.UserID
                                    join UB in entities.USER on F.UserID_B equals UB.UserID
                                          select  F.UserID_A == usr.UserID ? UB.UserID : UA.UserID).ToList();

                var ReceivedFriends = (from U in entities.USER.Where(x => parFriendList.Contains(x.FacebookID))
                                       select new User
                                       {
                                           FacebookID = U.FacebookID,
                                           UserID = U.UserID
                                       }).ToList();

                var UnAddedFriends = (from RF in ReceivedFriends.Where(x => !AlreadyFriends.Contains(x.UserID)) select RF).ToList();

                AddFriends(UnAddedFriends, usr);
                return UnAddedFriends.Count();
            }
        }
示例#14
0
文件: UserBLL.cs 项目: erichcl/TCC2WS
        private static void AddFriends(List<User> FriendsToAdd, User usr)
        {
            using (elmatEntities entities = new elmatEntities())
            {
                try {
                    foreach (User fr in FriendsToAdd)
                    {
                        FRIENDS f = new FRIENDS();
                        f.UserID_A = usr.UserID;
                        f.UserID_B = fr.UserID;
                        f.StatusID = 1;

                        entities.FRIENDS.Add(f);
                    }
                    entities.SaveChanges();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
示例#15
0
文件: UserBLL.cs 项目: erichcl/TCC2WS
        public static User RegisterUser( User FbUser )
        {
            using (elmatEntities entities = new elmatEntities())
            {
                USER U = new USER();
                U.FacebookID = FbUser.FacebookID;
                U.Name = FbUser.Name;
                entities.USER.Add(U);
                entities.SaveChanges();

                FbUser.UserID = U.UserID;
                return FbUser;
            }
        }