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