Example #1
0
        public ActionResult Reserve(CreateReserveViewModel createReserveViewModel)
        {
            var room      = db.Rooms.Find(createReserveViewModel.RoomId);
            var reserveds = db.Reserveds
                            .Where(x => x.RoomId == createReserveViewModel.RoomId &&
                                   x.ReservedDate == createReserveViewModel.ReservedDate)
                            .Include(x => x.User);
            //ViewBag.NameRoom = room.NameRoom;
            //ViewBag.UsersEmails = db.Users.Select(x => x.UserName).ToList();

            string message = "";

            if (createReserveViewModel.ReservedDate < DateTime.Today ||
                (createReserveViewModel.ReservedDate == DateTime.Today &&
                 createReserveViewModel.ReservedTimeFrom < DateTime.Now.TimeOfDay)
                )
            {
                message += "Уваги ви бронюєте на минулий час <br/>";
            }
            else if (createReserveViewModel.ReservedDate == DateTime.Today &&
                     createReserveViewModel.ReservedTimeFrom.TotalMinutes < DateTime.Now.TimeOfDay.TotalMinutes)
            {
            }
            if (createReserveViewModel.ReservedTimeFrom < room.MinTime ||
                createReserveViewModel.ReservedTimeTo > room.MaxTime)
            {
                message += "Час виходить за межі ( "
                           + room.MinTime + " "
                           + room.MaxTime + " ) <br/>";
            }

            if (createReserveViewModel.UsersEmails != null && createReserveViewModel.UsersEmails.Length > room.MaxPeople)
            {
                message += $"Не всі помістяться в кімнаті (максимальна кількість: {room.MaxPeople} ) <br/>";
            }

            foreach (var item in reserveds)
            {
                if ((createReserveViewModel.ReservedTimeFrom > item.ReservedTimeFrom &&
                     createReserveViewModel.ReservedTimeFrom < item.ReservedTimeTo) ||
                    (item.ReservedTimeFrom >= createReserveViewModel.ReservedTimeFrom &&
                     item.ReservedTimeFrom <= createReserveViewModel.ReservedTimeTo) ||
                    (createReserveViewModel.ReservedTimeTo > item.ReservedTimeFrom &&
                     createReserveViewModel.ReservedTimeTo < item.ReservedTimeTo))
                {
                    message += $"Час перетинається з {item.User.UserName} ({item.ReservedTimeFrom} - {item.ReservedTimeTo})";
                }
            }


            return(Json(message, JsonRequestBehavior.AllowGet));
        }
Example #2
0
        // GET: Reserveds/Create
        public ActionResult Create()
        {
            //ViewBag.OwnerId = System.Web.HttpContext.Current.User.Identity.GetUserId();

            CreateReserveViewModel createReserveViewModel = new CreateReserveViewModel
            {
                UserId      = currentUserId,
                GetUserList = db.Users.ToList()
            };

            ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "NameRoom");
            //ViewBag.UsersEmails = db.Users.Select(x => x.UserName).ToList();

            ViewBag.CurrentUserName = currentUserName;

            return(View(createReserveViewModel));
        }
Example #3
0
 public ActionResult Create(CreateReserveViewModel createReserveViewModel)
 {
     createReserveViewModel.UserId = currentUserId;
     if (!ModelState.IsValid)
     {
         ViewBag.UsersEmails = db.Users.Select(x => x.UserName).ToList();
         ViewBag.RoomId      = new SelectList(db.Rooms, "RoomId", "NameRoom", createReserveViewModel.RoomId);
         return(Json("model is not valid", JsonRequestBehavior.AllowGet));
     }
     if (createReserveViewModel.UsersEmails != null)
     {
         createReserveViewModel.SelectedUsersEmails = string.Join(",", createReserveViewModel.UsersEmails);
     }
     db.Reserveds.Add(CreateReserveViewModelToReserved.CreateMapper()
                      .Map <CreateReserveViewModel, Reserved>(createReserveViewModel));
     db.SaveChanges();
     return(Json("success", JsonRequestBehavior.AllowGet));
 }
Example #4
0
        public ActionResult Reserve(int?RoomId)
        {
            var room = db.Rooms.Find(RoomId);


            //createReserveViewModel.GetUserList = db.Users.Select(x =>
            //new ApplicationUser { Id = x.Id, UserName = x.UserName }).ToList();
            //var uEmails = db.Users.Select(x => new ApplicationUser
            //{

            //}).ToList();

            var allUsers = db.Users.ToList();



            CreateReserveViewModel createReserveViewModel = new CreateReserveViewModel
            {
                ReservedTimeFrom = room.MinTime,
                ReservedTimeTo   = room.MaxTime,
                RoomId           = RoomId,
                Room             = room,
                GetUserList      = allUsers
            };

            //var allUserNames = db.Users.Select(x => x.UserName).ToList();
            //ViewBag.UsersEmails = allUserNames;
            ViewBag.CurrentUserName = currentUserName;


            ViewBag.NameRoom = room.NameRoom;


            //ViewBag.RoomId = new SelectList(db.Rooms, "RoomId","NameRoom");
            return(View(createReserveViewModel));
        }
Example #5
0
        public async Task <ActionResult> SaveReserve(CreateReserveViewModel createReserveViewModel)
        {
            createReserveViewModel.UserId = currentUserId;
            if (createReserveViewModel.UsersEmails != null)
            {
                var selecteUsersEmails = db.Users.Where(x =>
                                                        createReserveViewModel.UsersEmails.Contains(x.Id))
                                         .Select(x => x.UserName).ToArray();
                createReserveViewModel.SelectedUsersEmails = string.Join(",", selecteUsersEmails);
            }

            Reserved reserved = new Reserved
            {
                ReservedId          = createReserveViewModel.ReservedId,
                EventName           = createReserveViewModel.EventName,
                Description         = createReserveViewModel.Description,
                ReservedDate        = createReserveViewModel.ReservedDate,
                ReservedTimeFrom    = createReserveViewModel.ReservedTimeFrom,
                ReservedTimeTo      = createReserveViewModel.ReservedTimeTo,
                RoomId              = createReserveViewModel.RoomId,
                UserId              = createReserveViewModel.UserId,
                SelectedUsersEmails = createReserveViewModel.SelectedUsersEmails,
                IsPrivate           = createReserveViewModel.IsPrivate,
                UsersEmails         = createReserveViewModel.UsersEmails
            };

            db.Reserveds.Add(reserved);

            //db.Reserveds.Add(
            //    CreateReserveViewModelToReserved.CreateMapper()
            //    .Map<CreateReserveViewModel, Reserved>(createReserveViewModel)
            //    );

            db.SaveChanges();


            if (createReserveViewModel.UsersEmails != null)
            {
                await Task.Run(async() =>
                {
                    var date         = reserved.ReservedDate.ToShortDateString();
                    var id           = reserved.ReservedId;
                    var msg          = "Вас запрошено на";
                    string emailBody = $"<div class='center-block'>" +
                                       $"<p>{msg} {reserved.EventName} <br/>" +
                                       $"Дата: {date} <br/>" +
                                       $"Час початку: {reserved.ReservedTimeFrom} <br/>" +
                                       $"Час кінця: {reserved.ReservedTimeTo} <br/>" +
                                       $"Організатор: {currentUserName} <br/></p>";

                    foreach (var email in createReserveViewModel.UsersEmails)
                    {
                        var emailTo = db.Users.Find(email).Email.ToString();

                        var link    = $"https://localhost:44367/Reserveds/AcceptInvite?id={id}&email={emailTo}&accept=";
                        var linkMsg = $"<p><a href = '{link}true' > Прийняти </a> </p> " +
                                      $" <p><a href = '{link}false' > Відхилити </a></p></div>";

                        bool isSend = await SendEmailAsync(emailTo, reserved.EventName, emailBody + linkMsg);
                    }
                });
            }

            return(Json(reserved.ReservedId, JsonRequestBehavior.AllowGet));
        }