Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        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 }) }));
        }