示例#1
0
        public static bool HandleChange(int bookingID, string userID, string changeText)
        {
            SparkMeetingRoomEntities db = new SparkMeetingRoomEntities();
            Booking booking             = db.Bookings.Find(bookingID);

            if (booking == null)
            {
                return(false);
            }
            AspNetUser user = db.AspNetUsers.Find(userID);

            if (user == null)
            {
                return(false);
            }
            BookingHistory bh = new BookingHistory
            {
                AspNetUserID = userID,
                BookingID    = bookingID,
                ChangeDate   = DateTime.Now,
                ChangeText   = changeText
            };

            db.BookingHistories.Add(bh);
            db.SaveChanges();
            if (userID != booking.AspNetUserID)
            {
                SMS.SendSMS(booking.AspNetUser.PhoneNumber, "Hello, Today, " + bh.ChangeDate + ", " + user.Name + " has changed something regarding your booking. Please sign in and review this change. Spark Manager");
            }
            return(true);
        }
        public static Log HandleLog(LogType LogType, string Location, string Message, string InnerException = "", System.Collections.Specialized.NameValueCollection Params = null)
        {
            SparkMeetingRoomEntities    db    = new SparkMeetingRoomEntities();
            Dictionary <string, string> param = new Dictionary <string, string>();

            if (Params != null)
            {
                foreach (string key in Params.Keys)
                {
                    param.Add(key, Json.Encode(Params.GetValues(key)));
                }
            }

            Log log = new Log()
            {
                DateTime       = DateTime.UtcNow,
                LogTypeID      = (int)LogType,
                Location       = Location,
                Message        = Message,
                InnerException = InnerException,
                Params         = Json.Encode(param)
            };

            db.Logs.Add(log);
            db.SaveChanges();
            return(log);
        }
示例#3
0
        public ActionResult Create([Bind(Include = "Name,Description,ShowAs")] Asset asset)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.Assets.Add(asset);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }

                return(View(asset));
            }
            catch (Exception ex)
            {
                ViewBag.Log = LogHandler.Helpers.LogHandler.HandleLog(LogHandler.Helpers.LogType.Warning, "Assets/Create", ex.Message, (ex.InnerException != null ? ex.InnerException.Message : ""), Request.Params);
                return(View("Error"));
            }
        }
        public ActionResult Create([Bind(Include = "BuildingCode,Name,Country,Address,Description,ImageUrl,OpenHour,CloseHour")] Building building)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.Buildings.Add(building);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }

                return(View(building));
            }
            catch (Exception ex)
            {
                ViewBag.Log = LogHandler.Helpers.LogHandler.HandleLog(LogHandler.Helpers.LogType.Warning, "Buildings/Create", ex.Message, (ex.InnerException != null ? ex.InnerException.Message : ""), Request.Params);
                return(View("Error"));
            }
        }
示例#5
0
 public ActionResult Approve(int?id)
 {
     try
     {
         if (id == null)
         {
             return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
         }
         Booking booking = db.Bookings.Find(id);
         if (booking == null)
         {
             return(HttpNotFound());
         }
         AspNetUser user          = Helpers.User.GetUser(User.Identity.Name);
         int?       userRoleOrder = Helpers.User.GetUserRoleOrder(User.Identity.Name);
         if (userRoleOrder.HasValue && (userRoleOrder == -1 || (userRoleOrder > booking.AspNetUser.AspNetRoles.FirstOrDefault().Order&& booking.AspNetUser.AspNetRoles.FirstOrDefault().Order != -1)))
         {
             booking.BookingStatusID = (int)Helpers.BookingStatus.Booked;
             db.Entry(booking).State = EntityState.Modified;
             db.SaveChanges();
             Helpers.BookingChanges.HandleChange(booking.BookingID, user.Id, "Changed status to: Booked");
             return(RedirectToAction("Index"));
         }
         else
         {
             throw new Exception("Not allowed.");
         }
     }
     catch (Exception ex)
     {
         ViewBag.Log = LogHandler.Helpers.LogHandler.HandleLog(LogHandler.Helpers.LogType.Critical, "Bookings/Approve", ex.Message, (ex.InnerException != null ? ex.InnerException.Message : ""));
         return(View("Error"));
     }
 }
        public ActionResult Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                Helpers.User.CreatePassword(ref model);
                var newUser = new SparkMeetingUser(model.FirstName, model.LastName, model.Email, true, model.FirstName + " " + model.LastName, model.Password, model.Salt, DateTime.UtcNow);
                using (SparkMeetingRoomEntities repository = new SparkMeetingRoomEntities())
                {
                    repository.SparkMeetingUsers.Add(newUser);
                    repository.SaveChanges();
                }
            }

            return(View(model));
        }
        //Delete user
        public ActionResult Delete(string UserID)
        {
            try
            {
                AspNetUser user         = Helpers.User.GetUser(User.Identity.Name); //get current user
                AspNetUser userToDelete = db.AspNetUsers.Find(UserID);              //get the user to delete
                if (user == null || userToDelete == null)
                {
                    throw new Exception("Not found.");
                }
                var userRoleLevel = Helpers.User.GetUserRoleOrder(User.Identity.Name); //get current user's role level
                if (userRoleLevel == -1)                                               //if is admin
                {
                    db.AspNetUsers.Remove(userToDelete);
                    db.SaveChanges();
                }
                else
                {
                    var role = Helpers.User.GetUserRoleOrder(userToDelete.UserName);
                    if (role < userRoleLevel && user.BuildingID == userToDelete.BuildingID) //if logged user has a higher role level
                    {
                        db.AspNetUsers.Remove(userToDelete);
                        db.SaveChanges();
                    }
                    else
                    {
                        throw new Exception("Not allowed!");
                    }
                }

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                ViewBag.Log = LogHandler.Helpers.LogHandler.HandleLog(LogHandler.Helpers.LogType.Warning, "Users/Delete", ex.Message, (ex.InnerException != null ? ex.InnerException.Message : ""), Request.Params);
                return(View("Error"));
            }
        }
示例#8
0
 public ActionResult Book(int RoomID, DateTime Date, TimeSpan Start, TimeSpan End)
 {
     try
     {
         Room room = db.Rooms.Find(RoomID);
         if (room == null)
         {
             throw new Exception("Not found.");
         }
         string role = Helpers.User.GetUserRoleId(User.Identity.Name);
         if (room.RoomRoles.Where(rr => rr.AspNetRoleID == role).Count() <= 0)
         {
             throw new Exception("Not available for the current user type.");
         }
         AspNetUser user = Helpers.User.GetUser(User.Identity.Name);
         if (!User.IsInRole("Administrator"))
         {
             if (room.BuildingID != user.BuildingID)
             {
                 throw new Exception("This room is in a different building than yours.");
             }
         }
         DateTime start = new DateTime(Date.Year, Date.Month, Date.Day, Start.Hours, Start.Minutes, Start.Seconds);
         DateTime end   = new DateTime(Date.Year, Date.Month, Date.Day, End.Hours, End.Minutes, End.Seconds);
         if (Start > End)
         {
             throw new Exception("The start time is after the end time!");
         }
         if (start < DateTime.Now)
         {
             throw new Exception("The start time is before the current time!");
         }
         if (Start == End)
         {
             throw new Exception("The start time is equal to the end time!");
         }
         if (room.Bookings.Where(b => b.EndDate >= start && b.StartDate <= end).Count() > 0)
         {
             throw new Exception("Room is not available for the selected period of time.");
         }
         if (room.Building.OpenHour != null)
         {
             if (room.Building.OpenHour > Start)
             {
                 throw new Exception("The building opens after the selected start time.");
             }
         }
         if (room.Building.CloseHour != null)
         {
             if (room.Building.CloseHour < End)
             {
                 throw new Exception("The building closes after the selected start time.");
             }
         }
         if (room.MaximumBookingHours < End - Start)
         {
             throw new Exception("The room accepts only bookings that are quicker than " + room.MaximumBookingHours + " hours.");
         }
         string bookref = "";
         Random r       = new Random();
         bookref = room.Building.BuildingCode + r.Next(10000, 99999).ToString() + room.Floor + Date.DayOfWeek.ToString().Substring(0, 1) + room.RoomCode;
         Booking booking = new Booking()
         {
             RoomID           = room.RoomID,
             BookingReference = bookref,
             AspNetUserID     = user.Id,
             CreatedDate      = DateTime.Now,
             StartDate        = start,
             EndDate          = end,
             BookingStatusID  = room.DefaultBookingStatusID
         };
         db.Bookings.Add(booking);
         db.SaveChanges();
         Helpers.BookingChanges.HandleChange(booking.BookingID, user.Id, "Created booking. Room: " + booking.Room.RoomCode + "; Start date: " + start.ToString() + "; End date: " + end.ToString() + "; Status: " + booking.BookingStatusID);
         return(RedirectToAction("Index", "Bookings"));
     }
     catch (Exception ex)
     {
         ViewBag.Log = LogHandler.Helpers.LogHandler.HandleLog(LogHandler.Helpers.LogType.Warning, "Rooms/BookPOST", ex.Message, (ex.InnerException != null ? ex.InnerException.Message : ""), Request.Params);
         return(View("Error"));
     }
 }