예제 #1
0
        public ActionResult CreateEvent(CourseCreateModelExtended model)
        {
            Init(null);
            var user = GetCurrentUser();

            var org = _union;

            var @event = new Event
            {
                Name        = model.Name,
                ShortName   = model.ShortName,
                Description = model.Description,
                Organiser   = org,
                Occurrence  = new Occurrence
                {
                    Capacity          = -1,
                    IsAvailable       = true,
                    FromIsRestricted  = false,
                    UntilIsRestricted = false,
                    IsCanceled        = false,
                    IsMoved           = false,
                    UseGroups         = false,
                },
            };

            if (model.GroupIds != null)
            {
                foreach (var groupId in model.GroupIds)
                {
                    var semGroup = Db.SemesterGroups.SingleOrDefault(g => g.Id == groupId);

                    if (semGroup != null)
                    {
                        @event.SemesterGroups.Add(semGroup);

                        var occGroup = new OccurrenceGroup
                        {
                            Capacity            = 0,
                            FitToCurriculumOnly = true,
                            Occurrence          = @event.Occurrence
                        };
                        occGroup.SemesterGroups.Add(semGroup);
                        semGroup.OccurrenceGroups.Add(occGroup);
                        @event.Occurrence.Groups.Add(occGroup);
                        Db.OccurrenceGroups.Add(occGroup);
                    }
                }
            }

            /*
             * var member = GetMember(user.UserName, _union.ShortName);
             *
             * if (member != null)
             * {
             *  // das Objeklt muss aus dem gleichen Kontext kommen
             *  var me = Db.Members.SingleOrDefault(m => m.Id == member.Id);
             *
             *  ActivityOwner owner = new ActivityOwner
             *  {
             *      Activity = @event,
             *      Member = me,
             *      IsLocked = false
             *  };
             *
             *  @event.Owners.Add(owner);
             *  Db.ActivityOwners.Add(owner);
             * }*/

            var dozList = new List <OrganiserMember>();

            if (model.DozIds != null)
            {
                dozList.AddRange(model.DozIds.Select(dozId => Db.Members.SingleOrDefault(g => g.Id == dozId)).Where(doz => doz != null));
            }

            var roomList = new List <Room>();

            if (model.RoomIds != null)
            {
                roomList.AddRange(model.RoomIds.Select(roomId => Db.Rooms.SingleOrDefault(g => g.Id == roomId)).Where(doz => doz != null));
            }

            // Termine anelegen
            var semesterService = new SemesterService();

            if (model.Dates != null)
            {
                foreach (var date in model.Dates)
                {
                    string[] elems = date.Split('#');
                    var      day   = DateTime.Parse(elems[0]);
                    var      begin = TimeSpan.Parse(elems[1]);
                    var      end   = TimeSpan.Parse(elems[2]);
                    var      isWdh = bool.Parse(elems[3]);

                    ICollection <DateTime> dayList;
                    var semester = semesterService.GetSemester(day);

                    if (isWdh && semester != null)
                    {
                        dayList = semesterService.GetDays(semester.Id, day);
                    }
                    else
                    {
                        dayList = new List <DateTime> {
                            day
                        };
                    }


                    foreach (var dateDay in dayList)
                    {
                        var activityDate = new ActivityDate
                        {
                            Activity   = @event,
                            Begin      = dateDay.Add(begin),
                            End        = dateDay.Add(end),
                            Occurrence = new Occurrence
                            {
                                Capacity          = -1,
                                IsAvailable       = true,
                                FromIsRestricted  = false,
                                UntilIsRestricted = false,
                                IsCanceled        = false,
                                IsMoved           = false,
                                UseGroups         = false,
                            },
                        };

                        foreach (var room in roomList)
                        {
                            activityDate.Rooms.Add(room);
                        }

                        foreach (var doz in dozList)
                        {
                            activityDate.Hosts.Add(doz);
                        }

                        Db.ActivityDates.Add(activityDate);
                    }
                }
            }


            Db.Activities.Add(@event);
            Db.SaveChanges();


            return(PartialView("_CreateEventSuccess", @event));
        }
예제 #2
0
        public ActionResult CreateThesis(CourseCreateModelExtended model)
        {
            var org      = GetMyOrganisation();
            var semester = SemesterService.GetSemester(model.SemesterId);

            var course = new Exam
            {
                Name       = model.Name,
                ShortName  = model.ShortName,
                Organiser  = org,
                Occurrence = new Occurrence
                {
                    Capacity          = -1,
                    IsAvailable       = true,
                    FromIsRestricted  = false,
                    UntilIsRestricted = false,
                    IsCanceled        = false,
                    IsMoved           = false,
                    UseGroups         = false,
                },
            };

            // da kommen Kapazitätsgruppen
            // d.h. Semestergruppe suchen und ggf. anlegen
            if (model.GroupIds != null)
            {
                foreach (var groupId in model.GroupIds)
                {
                    var capGroup = Db.CapacityGroups.SingleOrDefault(g => g.Id == groupId);

                    var semGroup =
                        Db.SemesterGroups.SingleOrDefault(
                            g => g.Semester.Id == semester.Id && g.CapacityGroup.Id == groupId);

                    // die Semestergruppe gibt es nicht => anlegen
                    if (semGroup == null)
                    {
                        semGroup = new SemesterGroup
                        {
                            CapacityGroup = capGroup,
                            Semester      = semester,
                            IsAvailable   = false,
                        };
                        Db.SemesterGroups.Add(semGroup);
                    }
                    course.SemesterGroups.Add(semGroup);

                    var occGroup = new OccurrenceGroup
                    {
                        Capacity            = 0,
                        FitToCurriculumOnly = true,
                        Occurrence          = course.Occurrence
                    };
                    occGroup.SemesterGroups.Add(semGroup);
                    semGroup.OccurrenceGroups.Add(occGroup);
                    course.Occurrence.Groups.Add(occGroup);
                    Db.OccurrenceGroups.Add(occGroup);
                }
            }



            var member = GetMyMembership();

            if (member != null)
            {
                // das Objeklt muss aus dem gleichen Kontext kommen
                var me = Db.Members.SingleOrDefault(m => m.Id == member.Id);

                ActivityOwner owner = new ActivityOwner
                {
                    Activity = course,
                    Member   = me,
                    IsLocked = false
                };

                course.Owners.Add(owner);
                Db.ActivityOwners.Add(owner);
            }


            Db.Activities.Add(course);
            Db.SaveChanges();

            return(PartialView("_CreateThesisSuccess", course));
        }