示例#1
0
        public ActionResult Edit(EditReserveViewModel editReserveViewModel)
        {
            var room = db.Rooms.Find(editReserveViewModel.RoomId);

            string message = "";

            if (editReserveViewModel.ReservedDate < DateTime.Today ||
                (editReserveViewModel.ReservedDate == DateTime.Today &&
                 editReserveViewModel.ReservedTimeFrom < DateTime.Now.TimeOfDay)
                )
            {
                message += "Уваги ви бронюєте на минулий час <br/>";
            }
            if (editReserveViewModel.ReservedTimeFrom < room.MinTime ||
                editReserveViewModel.ReservedTimeTo > room.MaxTime)
            {
                message += "Час виходить за межі ( "
                           + room.MinTime + " "
                           + room.MaxTime + " ) <br/>";
            }
            if (editReserveViewModel.UsersEmails != null && editReserveViewModel.UsersEmails.Length > room.MaxPeople)
            {
                message += $"Не всі помістяться в кімнаті (максимальна кількість: {room.MaxPeople} ) <br/>";
            }

            return(Json(message, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        // GET: Reserveds/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            //var reserved = db.Reserveds.Find(id);
            var reserved = db.Reserveds.Include(x => x.Room).Include(x => x.User).First(x => x.ReservedId == id);

            if (reserved == null)
            {
                return(HttpNotFound());
            }


            var editReserveViewModel = new EditReserveViewModel(reserved)
            {
                ReservedId          = reserved.ReservedId,
                EventName           = reserved.EventName,
                Description         = reserved.Description,
                ReservedDate        = reserved.ReservedDate,
                ReservedTimeFrom    = reserved.ReservedTimeFrom,
                ReservedTimeTo      = reserved.ReservedTimeTo,
                SelectedUsersEmails = reserved.SelectedUsersEmails,
                AcceptedEmails      = reserved.AcceptedEmails,
                DeniedEmails        = reserved.DeniedEmails,
                IsPrivate           = reserved.IsPrivate,
                UsersEmails         = reserved.UsersEmails,

                RoomId = reserved.RoomId,
                UserId = reserved.UserId,

                Room = reserved.Room,
                User = reserved.User,

                GetUserList = db.Users.ToList()
            };


            ViewBag.CurrentUserId   = currentUserId;
            ViewBag.currentUserName = currentUserName;

            List <string> unionEmail = new List <string>();

            if (!string.IsNullOrEmpty(editReserveViewModel.SelectedUsersEmails))
            {
                unionEmail.AddRange(editReserveViewModel.SelectedUsersEmails.Split(',').ToList());
            }
            if (!string.IsNullOrEmpty(editReserveViewModel.AcceptedEmails))
            {
                unionEmail.AddRange(editReserveViewModel.AcceptedEmails.Split(',').ToList());
            }


            //ViewBag.selected = unionEmail;
            editReserveViewModel.UsersEmails = unionEmail.ToArray();

            ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "NameRoom", editReserveViewModel.RoomId);
            return(View(editReserveViewModel));
        }
示例#3
0
        public async Task <ActionResult> SaveEdit(EditReserveViewModel editReserveViewModel)
        {
            var reserved = db.Reserveds.Find(editReserveViewModel.ReservedId);
            var room     = db.Rooms.Find(editReserveViewModel.RoomId);

            if (reserved == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }


            if (editReserveViewModel.UsersEmails != null)
            {
                // email from edit
                var selecteUsersEmails = db.Users.Where(x =>
                                                        editReserveViewModel.UsersEmails.Contains(x.Id))
                                         .Select(x => x.UserName).ToArray();
                editReserveViewModel.SelectedUsersEmails = string.Join(",", selecteUsersEmails);

                //check for accepted email for sendmail
                if (reserved.AcceptedEmails != null)
                {
                    //email from db accepted
                    reserved.UsersEmails = reserved.AcceptedEmails.Split(',').ToArray();
                    var acceptedEmailsList = new List <string>();


                    foreach (var oldItem in reserved.UsersEmails)
                    {
                        foreach (var item in selecteUsersEmails)
                        {
                            if (oldItem == item)
                            {
                                acceptedEmailsList.Add(item);
                                continue;
                            }
                        }
                        if (acceptedEmailsList.Count > 0)
                        {
                            reserved.UsersEmails = acceptedEmailsList.ToArray();
                        }
                        else
                        {
                            reserved.UsersEmails = null;
                        }
                    }
                }
            }

            reserved.SelectedUsersEmails = editReserveViewModel.SelectedUsersEmails;

            //sendmail
            if (!string.IsNullOrEmpty(editReserveViewModel.SelectedUsersEmails))
            {
                var eventName = reserved.EventName;
                if (reserved.EventName != editReserveViewModel.EventName)
                {
                    eventName = $"{editReserveViewModel.EventName} ({reserved.EventName})";
                }
                var date = reserved.ReservedDate.ToShortDateString();
                if (reserved.ReservedDate != editReserveViewModel.ReservedDate)
                {
                    date = $"{editReserveViewModel.ReservedDate.ToShortDateString()} ({reserved.ReservedDate.ToShortDateString()})";
                }
                var timeFrom = reserved.ReservedTimeFrom.ToString();
                if (reserved.ReservedTimeFrom != editReserveViewModel.ReservedTimeFrom)
                {
                    timeFrom = $"{editReserveViewModel.ReservedTimeFrom} ({reserved.ReservedTimeFrom})";
                }
                var timeTo = reserved.ReservedTimeTo.ToString();
                if (reserved.ReservedTimeTo != editReserveViewModel.ReservedTimeTo)
                {
                    timeTo = $"{editReserveViewModel.ReservedTimeTo} ({reserved.ReservedTimeTo})";
                }
                var roomForEvent = room.NameRoom;
                if (reserved.RoomId != editReserveViewModel.RoomId)
                {
                    roomForEvent = $"{db.Rooms.Find(editReserveViewModel.RoomId)} ({room.NameRoom})";
                }


                var    id        = reserved.ReservedId;
                string emailBody = "";

                if (reserved.UsersEmails != null)
                {
                    emailBody = $"<div><p>Деякі зміни в {eventName} <br/>" +
                                $"Кімната: {roomForEvent} <br/>" +
                                $"Дата: {date} <br/>" +
                                $"Час початку: {timeFrom} <br/>" +
                                $"Час кінця: {timeTo} <br/>" +
                                $"Організатор: {currentUserName} <br/></p></div>";
                    foreach (var userName in reserved.UsersEmails)
                    {
                        var emailTo = db.Users.First(x => x.UserName == userName).Email.ToString();

                        editReserveViewModel.SelectedUsersEmails = string.Join(",",
                                                                               RemoveEmailFromString(userName, editReserveViewModel.SelectedUsersEmails));
                        await Task.Run(async() =>
                        {
                            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);
                        });
                    }
                }

                emailBody = $"<div><p>Вас запрошено на {editReserveViewModel.EventName} <br/>" +
                            $"Кімната: {room.NameRoom} <br/>" +
                            $"Дата: {editReserveViewModel.ReservedDate.ToShortDateString()} <br/>" +
                            $"Час початку: {editReserveViewModel.ReservedTimeFrom} <br/>" +
                            $"Час кінця: {editReserveViewModel.ReservedTimeTo} <br/>" +
                            $"Організатор: {currentUserName} <br/></p></div>";
                editReserveViewModel.UsersEmails = editReserveViewModel.SelectedUsersEmails.Split(',').ToArray();
                if (editReserveViewModel.UsersEmails.Length > 0)
                {
                    foreach (var userName in editReserveViewModel.UsersEmails)
                    {
                        //var email = db.Users.First(x => x.UserName == userName).Email.ToString();
                        var emailTo = db.Users.First(x => x.UserName == userName).Email.ToString();
                        await Task.Run(async() =>
                        {
                            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);
                        });
                    }
                }
            }


            reserved.AcceptedEmails   = editReserveViewModel.AcceptedEmails;
            reserved.DeniedEmails     = editReserveViewModel.DeniedEmails;
            reserved.Description      = editReserveViewModel.Description;
            reserved.EventName        = editReserveViewModel.EventName;
            reserved.IsPrivate        = editReserveViewModel.IsPrivate;
            reserved.ReservedDate     = editReserveViewModel.ReservedDate;
            reserved.ReservedTimeFrom = editReserveViewModel.ReservedTimeFrom;
            reserved.ReservedTimeTo   = editReserveViewModel.ReservedTimeTo;
            reserved.RoomId           = editReserveViewModel.RoomId;
            //reserved.SelectedUsersEmails = editReserveViewModel.SelectedUsersEmails;
            reserved.UsersEmails = editReserveViewModel.UsersEmails;

            db.Entry(reserved).State = EntityState.Modified;
            db.SaveChanges();

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