Ejemplo n.º 1
0
        /// <summary>
        /// Saves or updates a checkin
        /// </summary>
        /// <param name="c"></param>
        /// <returns></returns>
        public static Checkin CheckIn(Checkin c)
        {
            using (EntityContext ctx = new EntityContext())
            {
                c.ValidateAndRaise();

                // Validate user has only one active checkin.
                if (ctx.Checkins.Where(ci => !ci.EndTime.HasValue && ci.UserId == c.UserId).Any())
                {
                    throw new CheckinExistsException(i18n.API_ErrorCheckinExists);
                }

                // Validate space is not being used
                if (ctx.Checkins.Where(ci => ci.SpaceId == c.SpaceId && !ci.EndTime.HasValue).Any())
                {
                    throw new CheckinExistsException(i18n.API_ErrorSpaceUsed);
                }

                c.CheckInId = 0;
                c.StartTime = c.StartTime.ToCommonTime();
                c.EndTime = null;

                ctx.Checkins.AddObject(c);

                ctx.SaveChanges();

                // Notify users.
                Notify(NotificationType.Checkin, c);

                return c;
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Marks the messages as delivered.
 /// </summary>
 /// <param name="ids"></param>
 public static void ClearIds(List<int> ids)
 {
     using (EntityContext ctx = new EntityContext())
     {
         ctx.MessageQueues.Where(mq => ids.Contains(mq.MessageId)).ToList().ForEach(mq => { mq.Delivered = true; });
         ctx.SaveChanges();
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Cleans all the expired sessions.
 /// </summary>
 public static void CleanAll()
 {
     using (EntityContext ctx = new EntityContext())
     {
         ctx.Sessions.Where(s => s.ExpiresAt < DateTime.Now.ToCommonTime() && s.ExpiresAt != DateTime.MaxValue).ToList().ForEach(s => ctx.Sessions.DeleteObject(s));
         ctx.SaveChanges();
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Deletes a Place
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public static Place Delete(int id)
 {
     using (EntityContext ctx = new EntityContext())
     {
         Place p = ctx.Places.Where(px => px.PlaceId == id).FirstOrDefault();
         ctx.Places.DeleteObject(p);
         ctx.SaveChanges();
         return p;
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Deletes a Notification
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public static Notification Delete(int id)
 {
     using (EntityContext ctx = new EntityContext())
     {
         Notification n = ctx.Notifications.Where(nx => nx.NotificationId == id).FirstOrDefault();
         ctx.Notifications.DeleteObject(n);
         ctx.SaveChanges();
         return n;
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Deletes the role.
 /// </summary>
 /// <param name="u"></param>
 /// <param name="r"></param>
 public static void DeleteRoles(User u, List<Role> r)
 {
     using (EntityContext ctx = new EntityContext())
     {
         ctx.UserRoles.Where(ur => ur.UserId.Equals(u.UserId)
                                     && r.Where(ri => ri.RoleId.Equals(ur.RoleId)).Any()
                                 ).ToList().ForEach(ur => ctx.UserRoles.DeleteObject(ur));
         ctx.SaveChanges();
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Expires the current session id of a user
 /// </summary>
 /// <param name="sessionId"></param>
 public static void Expire(int userId)
 {
     using (EntityContext ctx = new EntityContext())
     {
         Session session = ctx.Sessions.Where(s => s.UserId.HasValue && s.UserId.Value.Equals(userId)).FirstOrDefault();
         if (session != null)
         {
             ctx.Sessions.DeleteObject(session);
             ctx.SaveChanges();
         }
     }
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Expires a session
 /// </summary>
 /// <param name="sessionId"></param>
 public static void Expire(Guid sessionId)
 {
     using (EntityContext ctx = new EntityContext())
     {
         Session session = ctx.Sessions.Where(s => s.SessionId.Equals(sessionId)).FirstOrDefault();
         if (session != null)
         {
             ctx.Sessions.DeleteObject(session);
             ctx.SaveChanges();
         }
     }
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Gets the specified session. 
        /// If it has expired it returns none.
        /// </summary>
        /// <param name="sessionId"></param>
        /// <returns></returns>
        public static Session Get(Guid sessionId)
        {
            using (EntityContext ctx = new EntityContext())
            {
                Session sess = ctx.Sessions.Where(s => s.SessionId.Equals(sessionId)).FirstOrDefault();
                if (sess == null)
                {
                    return null;
                }

                if (sess.ExpiresAt < DateTime.Now.ToCommonTime() && sess.ExpiresAt != DateTime.MaxValue)
                {
                    ctx.Sessions.DeleteObject(sess);
                    ctx.SaveChanges();
                    return null;
                }
                sess.LastAccess = DateTime.Now.ToCommonTime();
                ctx.SaveChanges();

                return sess;
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Saves (insert or updates) a place
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static Place Save(Place p)
        {
            using (EntityContext ctx = new EntityContext())
            {
                p.ValidateAndRaise();

                if (p.PlaceId == 0)
                {
                    ctx.Places.AddObject(p);
                }

                ctx.SaveChanges();

                return p;
            }
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Adds roles to the user.
 /// </summary>
 /// <param name="u"></param>
 /// <param name="r"></param>
 public static void AddRoles(User u, List<Role> r)
 {
     using (EntityContext ctx = new EntityContext())
     {
         foreach (Role ri in r)
         {
             Models.UserRole ur = new Models.UserRole()
             {
                 UserId = u.UserId,
                 RoleId = ri.RoleId
             };
             if (ctx.UserRoles.Where(uro => uro.UserId.Equals(u.UserId) && uro.RoleId.Equals(ri.RoleId)).Any())
             {
             }
             else
             {
                 ctx.UserRoles.AddObject(ur);
             }
         }
         ctx.SaveChanges();
     }
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Checks out a current checkin.
        /// </summary>
        /// <param name="checkinId"></param>
        /// <returns></returns>
        public static Checkin CheckOut(int checkinId)
        {
            using (EntityContext ctx = new EntityContext())
            {
                Checkin c = ctx.Checkins.Where(ch => ch.CheckInId == checkinId).FirstOrDefault();
                if (c == null)
                {
                    return null;
                }

                // Validate if users are blocking you.

                c.EndTime = DateTime.Now.ToCommonTime();
                ctx.SaveChanges();

                // Notify users
                Notify(NotificationType.Checkout, c);

                return c;
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Sets a new session object
        /// </summary>
        /// <param name="s"></param>
        public static Session Set(int userId, TimeSpan timeOut, bool rememberMe)
        {
            using (EntityContext ctx = new EntityContext())
            {
                Session s = new Session()
                {
                    UserId = userId,
                    CreatedAt = DateTime.Now,
                    ExpiresAt = rememberMe ? DateTime.MaxValue : DateTime.Now.ToCommonTime().Add(timeOut),
                    LastAccess = DateTime.Now.ToUniversalTime(),
                    Data = string.Empty
                };

                s.ValidateAndRaise();

                s.SessionId = Guid.NewGuid();
                ctx.Sessions.AddObject(s);
                ctx.SaveChanges();
                return s;
            }
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Sets a new session object
        /// </summary>
        /// <param name="s"></param>
        public static Session Set(Session s)
        {
            using (EntityContext ctx = new EntityContext())
            {
                s.ValidateAndRaise();

                s.SessionId = Guid.NewGuid();
                ctx.Sessions.AddObject(s);
                ctx.SaveChanges();

                return s;
            }
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Saves a new Message
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static MessageQueue Save(MessageQueue s)
        {
            using (EntityContext ctx = new EntityContext())
            {
                s.CreatedAt = DateTime.Now;
                ctx.MessageQueues.AddObject(s);

                ctx.SaveChanges();

                return s;
            }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Saves or updates a notification
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static Notification Save(Notification n)
        {
            using (EntityContext ctx = new EntityContext())
            {
                n.ValidateAndRaise();

                if (n.NotificationId == 0)
                {
                    ctx.Notifications.AddObject(n);
                }

                ctx.SaveChanges();

                return n;
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Marks a user as deleted.
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        public static bool DeleteUser(string email)
        {
            using (EntityContext ctx = new EntityContext())
            {
                User u = ctx.Users.Where(ux => ux.Email.Equals(email)).FirstOrDefault();
                if (u != null)
                {
                    u.IsActive = false;
                }

                ctx.SaveChanges();

                return true;
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Creates a user from AD
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        private static User CreateUserFromAD(string username, string password)
        {
            username = username.Split('@').First();

            using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "SIEENA", "daniel.ramirez", "xrZ40uye"))
            {
                UserPrincipal up = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username);

                using (EntityContext ctx = new EntityContext())
                {
                    User u = new User()
                    {
                        Email = up.EmailAddress,
                        CreatedAt = DateTime.Now.ToCommonTime(),
                        IsActive = true,
                        Password = password
                    };

                    ctx.Users.AddObject(u);
                    ctx.SaveChanges();

                    UserInfo ui = new UserInfo()
                    {
                        UserId = u.UserId,
                        FirstName = up.Name,
                        LastName = up.Surname
                    };

                    ctx.UserInfos.AddObject(ui);
                    ctx.SaveChanges();

                    User.AddRoles(u, new List<Role>() { Role.GetAll().OrderByDescending(r => r.RoleLevel).First() });

                    return u;
                }
            }
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="u"></param>
        /// <returns></returns>
        public static User SaveUser(User u)
        {
            using (EntityContext ctx = new EntityContext())
            {
                u.Email = u.Email.ToLower();
                u.ValidateAndRaise();
                u.CreatedAt = u.CreatedAt.ToCommonTime();

                if (u.UserId == 0)
                {
                    u.Password = Crypto.GetSHA1(u.Password);
                    ctx.Users.AddObject(u);
                }
                else
                {
                    ctx.Users.Attach(u);
                }

                ctx.SaveChanges();

                return u;
            }
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Saves the user extra information
        /// </summary>
        /// <param name="u"></param>
        /// <returns></returns>
        public static UserInfo Save(UserInfo u)
        {
            using (EntityContext ctx = new EntityContext())
            {
                u.ValidateAndRaise();

                UserInfo existing = ctx.UserInfos.Where(ui => ui.UserId == u.UserId).FirstOrDefault();
                if (existing == null)
                {
                    ctx.UserInfos.AddObject(u);
                }
                else
                {
                    existing.ContactEmail = u.ContactEmail;
                    existing.PhoneCel = u.PhoneCel;
                    existing.PhoneHome = u.PhoneHome;
                    existing.PhoneOffice = u.PhoneOffice;
                    existing.PhoneOfficeExtension = u.PhoneOfficeExtension;
                    existing.FirstName = u.FirstName;
                    existing.LastName = u.LastName;
                    existing.Gender = u.Gender;
                    existing.NotificationsAvailability = u.NotificationsAvailability;
                    existing.Locale = u.Locale;
                }
                ctx.SaveChanges();

                // Notify connected endpoints.
                PubnubFactory.GetInstance().Publish(PubnubFactory.Channels.Users, u);

                return u;
            }
        }
Ejemplo n.º 21
0
 /// <summary>
 /// Deletes a checkin
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public static Checkin Delete(int id)
 {
     using (EntityContext ctx = new EntityContext())
     {
         Checkin c = ctx.Checkins.Where(cx => cx.CheckInId == id).FirstOrDefault();
         ctx.Checkins.DeleteObject(c);
         ctx.SaveChanges();
         return c;
     }
 }