public AspNetUserModel(System.Models.AspNetUsers u)
 {
     Id        = u.Id;
     Email     = u.Email;
     UserName  = u.UserName;
     Authority = u.Authority;
 }
        public ActionResult Record(int?roomId, string Date, string SearchEmail)
        {
            string ASPNetUserID = User.Identity.GetUserId();

            ViewBag.Date        = Date;
            ViewBag.SearchEmail = SearchEmail;
            using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
            {
                System.Models.AspNetUsers         user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
                List <System.Models.Reservations> reservations;
                ViewBag.Authority = user.Authority;
                if (user.Authority > 0)
                {
                    reservations = (from s in db.Reservations where !s.Disable select s).ToList();
                    if (SearchEmail != null)
                    {
                        reservations = reservations.Where(x => x.BorrowerList.Split(';').Where(y => y.Contains(SearchEmail)).Any() || db.AspNetUsers.Where(w => w.Id == x.AspNetUserId).First().Email.Contains(SearchEmail)).ToList();
                    }
                }
                else
                {
                    reservations = (from s in db.Reservations where s.AspNetUserId == ASPNetUserID && !s.Disable select s).ToList();
                }
                if (Date != null && Date != "")
                {
                    DateTime date = DateTime.ParseExact(Date, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
                    reservations = reservations.Where(x => x.Date == date).ToList();
                }
                if (roomId != null)
                {
                    reservations = reservations.Where(x => x.RoomId == roomId).ToList();
                }
                return(View(reservations.Select(x => new RoomSystem.Models.ReservationModel(x)).ToList()));
            }
        }
 public ActionResult RoomCreate()
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
     }
     return(View(new RoomSystem.Models.RoomModle()));
 }
 public ActionResult UsersEdit(string id)
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         System.Models.AspNetUsers editUser = (from s in db.AspNetUsers where s.Id == id select s).First();
         return(View(new RoomSystem.Models.AspNetUserModel(editUser)));
     }
 }
 public ActionResult RoomList()
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(PartialView());
         }
         List <System.Models.Rooms> rooms = (from s in db.Rooms where s.Enable select s).ToList();
         return(PartialView(rooms.Select(x => new RoomSystem.Models.RoomModle(x)).ToList()));
     }
 }
 public ActionResult RoomSetting()
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         System.Models.ReservationCenters center = (from s in db.ReservationCenters select s).First();
         return(View(new RoomSystem.Models.ReservationCenterModel(center)));
     }
 }
 public ActionResult UsersSetting()
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         ViewBag.Authority = user.Authority;
         List <System.Models.AspNetUsers> users = (from s in db.AspNetUsers select s).ToList();
         return(View(users.Select(x => new RoomSystem.Models.AspNetUserModel(x)).ToList()));
     }
 }
 public ActionResult RoomDelete(int id)
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         System.Models.Rooms room = (from s in db.Rooms where s.Id == id select s).First();
         room.Enable = false;
         db.SaveChanges();
     }
     return(RedirectToAction("RoomSetting", "Home"));
 }
 public ActionResult RoomEdit(int id)
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         System.Models.Rooms room = (from s in db.Rooms where s.Id == id select s).First();
         if (room != null)
         {
             return(View(new RoomSystem.Models.RoomModle(room)));
         }
     }
     return(RedirectToAction("RoomSetting", "Home"));
 }
        public ActionResult AuthorityLayout()
        {
            string ASPNetUserID = User.Identity.GetUserId();

            ViewBag.Authority = 2;
            if (ASPNetUserID == null)
            {
                ViewBag.Authority = -1;
            }
            else
            {
                using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
                {
                    System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).FirstOrDefault();
                    ViewBag.Authority = user.Id == ASPNetUserID ? user.Authority : -1;
                }
            }
            return(PartialView());
        }
 public ActionResult UsersEdit(int Authority, string Id)
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         if (!(Authority >= 0 && Authority < user.Authority))
         {
             return(UsersEdit(Id));
         }
         System.Models.AspNetUsers saveUser = (from s in db.AspNetUsers where s.Id == Id select s).First();
         saveUser.Authority = Authority;
         db.SaveChanges();
         return(RedirectToAction("UsersSetting", "Home"));
     }
 }
 public ActionResult RoomEdit(RoomSystem.Models.RoomModle r)
 {
     if (!(r.MinNumberOfUsers > 0 && r.MaxNumberOfUsers > r.MinNumberOfUsers))
     {
         return(View(r));
     }
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         System.Models.Rooms room = (from s in db.Rooms where s.Id == r.Id select s).First();
         room.MinNumberOfUsers = r.MinNumberOfUsers;
         room.MaxNumberOfUsers = r.MaxNumberOfUsers;
         db.SaveChanges();
     }
     return(RedirectToAction("RoomSetting", "Home"));
 }
 public ActionResult RoomSetting(RoomSystem.Models.ReservationCenterModel reserveCenterModel)
 {
     using (System.Models.RoomSystemEntities db = new System.Models.RoomSystemEntities())
     {
         string ASPNetUserID            = User.Identity.GetUserId();
         System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();
         if (user.Authority == 0)
         {
             return(View());
         }
         bool hasReservation = (from s in db.Reservations where s.Date >= DateTime.Today && !s.Disable select s).Any();
         System.Models.ReservationCenters center = (from s in db.ReservationCenters select s).First();
         if (!hasReservation)
         {
             center.WeekdaysOpenTime  = reserveCenterModel.WeekdaysOpenTime;
             center.WeekdaysCloseTime = reserveCenterModel.WeekdaysCloseTime;
             center.WeekendOpenTime   = reserveCenterModel.WeekendOpenTime;
             center.WeekendCloseTime  = reserveCenterModel.WeekendCloseTime;
             center.TimePerTimePeriod = reserveCenterModel.TimePerTimePeriod;
             db.SaveChanges();
         }
         return(View(new RoomSystem.Models.ReservationCenterModel(center)));
     }
 }
        public ActionResult Reserve(RoomSystem.Models.ReserveModel reserveModel)
        {
            string        date     = string.Format("{0:yyyy-MM-dd}", reserveModel.Date);
            List <string> borrower = new List <string>();

            if (reserveModel.BorrowList != null && reserveModel.BorrowList != "")
            {
                borrower = reserveModel.BorrowList.Split(';').Distinct().ToList();
                foreach (var email in borrower)
                {
                    if (!IsValidEmail(email))
                    {
                        return(Reserve(reserveModel.RoomId, date));
                    }
                }
            }

            string ASPNetUserID = User.Identity.GetUserId();

            using (Models.RoomSystemEntities db = new Models.RoomSystemEntities())
            {
                //var loginInfo = await Net.AuthenticationManager.GetExternalLoginInfoAsync();
                //loginInfo.Email
                if (reserveModel.RoomId == null)
                {
                    return(Reserve(reserveModel.RoomId.Value, string.Format("{0:yyyy-MM-dd}", reserveModel.Date)));
                }

                Models.Rooms room = (from s in db.Rooms where reserveModel.RoomId.Value == s.Id select s).FirstOrDefault();
                if (room.Id != reserveModel.RoomId.Value || !(borrower.Count + 1 >= room.MinNumberOfUsers && borrower.Count < room.MaxNumberOfUsers))
                {
                    return(Reserve(reserveModel.RoomId, date));
                }
                int i            = 0;
                var Reservations = (from s in db.Reservations where s.RoomId == reserveModel.RoomId && s.Date == reserveModel.Date && !s.Disable select s.SessionNo).ToList();
                foreach (var wantToReserve in reserveModel.WantToReserve)
                {
                    if (wantToReserve && !Reservations.Contains(i))
                    {
                        Models.Reservations reservation = new Models.Reservations();
                        reservation.BorrowerList = "";
                        reservation.Disable      = false;
                        reservation.AspNetUserId = ASPNetUserID;
                        reservation.RoomId       = reserveModel.RoomId.Value;
                        reservation.SessionNo    = i;
                        reservation.Date         = reserveModel.Date;
                        reservation.BorrowerList = string.Join(";", borrower);
                        db.Reservations.Add(reservation);
                    }
                    i++;
                }
                db.SaveChanges();

                System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();

                string subject = "已向軟工作業會議預約系統預約會議室";
                string body    = string.Format("{0}:\n您已預約 r {1} 會議室,於 {2:yyyy-MM-dd},但這是軟工作業,所以沒有會議室可以用喔", user.UserName, room.Id, reserveModel.Date);
                SendEmail(user.Email, user.UserName, subject, body);
            }
            return(Reserve(reserveModel.RoomId.Value, string.Format("{0:yyyy-MM-dd}", reserveModel.Date)));
        }