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); }
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")); } }
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")); } }
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")); } }