/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult MoveDate(Guid id) { var date = Db.ActivityDates.SingleOrDefault(x => x.Id == id); var course = date.Activity; var model = new CourseMoveDateModel { Course = course, ActivityDateId = date.Id, Date = date, NewDate = date.Begin.ToShortDateString(), NewBegin = date.Begin.TimeOfDay.ToString(), NewEnd = date.End.TimeOfDay.ToString(), OrganiserId2 = course.Organiser.Id, OrganiserId3 = course.Organiser.Id, Description = date.Description }; ViewBag.Organiser = Db.Organisers.OrderBy(x => x.ShortName).Select(c => new SelectListItem { Text = c.ShortName, Value = c.Id.ToString(), }); return(View(model)); }
public JsonResult MoveDate(CourseMoveDateModel model) { var logger = LogManager.GetLogger("Course"); var activityDate = Db.ActivityDates.SingleOrDefault(d => d.Id == model.ActivityDateId); activityDate.Description = model.Description; // Berechnung der neuen Zeiten var day = DateTime.Parse(model.NewDate); var from = DateTime.Parse(model.NewBegin); var to = DateTime.Parse(model.NewEnd); var start = day.Add(from.TimeOfDay); var end = day.Add(to.TimeOfDay); // Das Änderungsobjekt anlegen var changeService = new ChangeService(Db); var changeObject = changeService.CreateActivityDateChange(activityDate, start, end, model.RoomIds); // Es hat keine Änderungen gegeben, die eine Notification ergeben! // es können sicht aber immer noch die Dozenten verändert haben // Das Umsetzen was geändert wurde activityDate.Hosts.Clear(); if (model.DozIds != null) { foreach (var dozId in model.DozIds) { activityDate.Hosts.Add(Db.Members.SingleOrDefault(m => m.Id == dozId)); } } if (changeObject != null) { // Es liegt eine Änderung vor => Änderung in DB speichern // Änderung umsetzen changeObject.UserId = AppUser.Id; Db.DateChanges.Add(changeObject); // Änderungen am DateObjekt vornehmen activityDate.Begin = start; activityDate.End = end; // es kommen die neuen Räume und Dozenten // => zuerst alle löschen! activityDate.Rooms.Clear(); if (model.RoomIds != null) { foreach (var roomId in model.RoomIds) { activityDate.Rooms.Add(Db.Rooms.SingleOrDefault(r => r.Id == roomId)); } } } // Um die Anzahl der Transaktionen klein zu halten werden erst // an dieser Stelle alle Änderungen am Datum und // dem ChangeObjekt gespeichert Db.SaveChanges(); // Jetzt erst die Notification auslösen if (changeObject != null) { NotificationService nservice = new NotificationService(); nservice.CreateSingleNotification(changeObject.Id.ToString()); } return(Json(new { result = "Redirect", url = Url.Action("Details", new { id = activityDate.Activity.Id }) })); }