Example #1
0
        /// <summary>
        /// Alle Vorlesungen eines Dozenten
        /// </summary>
        /// <param name="LecturerId"></param>
        /// <returns></returns>
        public LecturerCoursesContract GetLecturerCourses(string LecturerId)
        {
            var db = new TimeTableDbContext();

            var lecturer = db.Members.Where(l => l.Id.ToString().Equals(LecturerId)).FirstOrDefault();

            var lecturerCourseContract = new LecturerCoursesContract();

            if (lecturer != null)
            {
                //Grundinfos
                lecturerCourseContract.LecturerId        = LecturerId;
                lecturerCourseContract.LecturerName      = lecturer.Name;
                lecturerCourseContract.LecturerShortname = lecturer.ShortName;

                var courseList = new List <LectureCourses>();

                //Abfrage aller Kurse, bei dem der Dozent verwickelt ist
                var courselist = db.Activities.OfType <Course>().Where(c =>
                                                                       c.Dates.Any(oc => oc.Hosts.Any(l => l.Id.ToString() == LecturerId)))
                                 .ToList();

                foreach (var course in courselist)
                {
                    courseList.Add(new LectureCourses
                    {
                        LectureId = course.Id.ToString(),
                        Title     = course.Name,
                    });
                }
                lecturerCourseContract.LectureCourses = courseList.OrderBy(c => c.Title);
            }

            return(lecturerCourseContract);
        }
        public dynamic GetFormData(TimeTableDbContext _dbContext, string type)
        {
            if (type == "Lecturers")
            {
                return(_dbContext.Lecturers.ToList());
            }
            else if (type == "Tags")
            {
                return(_dbContext.Tags.ToList());
            }
            else if (type == "Group")
            {
                return(_dbContext.GroupID.ToList());
            }
            else if (type == "SubGroup")
            {
                return(_dbContext.SubGroupID.ToList());
            }
            else if (type == "Subject")
            {
                return(_dbContext.Subjects.ToList());
            }
            else if (type == "Session")
            {
                return(_dbContext.Sessions.ToList());
            }

            return(null);
        }
Example #3
0
        /// <summary>
        /// Abfrage eines speziellen Events mit Hilfe der EventId
        /// </summary>
        /// <param name="eventId"></param>
        /// <returns></returns>
        public EventContract GetEvent(string eventId)
        {
            var db = new TimeTableDbContext();

            var dbevent = db.Activities.FirstOrDefault(a => a.Id.ToString().Equals(eventId));

            var eventinfo = new EventContract();

            if (dbevent != null)
            {
                eventinfo.EventId         = dbevent.Id.ToString();
                eventinfo.EventName       = dbevent.Name;
                eventinfo.EventSlots      = dbevent.Occurrence.Capacity;
                eventinfo.EventDesciption = dbevent.Description;
                eventinfo.AvailableSlots  = (dbevent.Occurrence.Capacity - dbevent.Occurrence.Subscriptions.Count());

                var eventDateList = new List <EventDate>();

                foreach (var date in dbevent.Dates)
                {
                    eventDateList.Add(new EventDate
                    {
                        Start          = date.Begin.ToString("hh\\:mm"),
                        End            = date.End.ToString("hh\\:mm"),
                        Date           = date.Begin.Date.ToString("dd.MM.yyyy"),
                        PlaceName      = date.Rooms.FirstOrDefault() != null ? date.Rooms.First().Number : "N.N.",
                        PlaceId        = date.Rooms.FirstOrDefault() != null ? date.Rooms.First().Id.ToString() : "N.N.",
                        EventOrganiser = date.Hosts.FirstOrDefault() != null ? date.Hosts.First().Name : "N.N.",
                    });
                }

                eventinfo.Dates = eventDateList;
            }
            return(eventinfo);
        }
Example #4
0
        public void CheckLecturers()
        {
            var db  = new TimeTableDbContext();
            var org = db.Organisers.SingleOrDefault(o => o.Id == _orgId);

            if (org == null)
            {
                _import.AddErrorMessage("Import", "Unbekannte Organisationseinheit", true);
                return;
            }

            foreach (var doz in _import.Dozenten.Where(d => d.IsTouched))
            {
                if (org.Members.Count(m => m.ShortName.Equals(doz.DozentID)) > 1)
                {
                    _import.AddErrorMessage("Import", string.Format("Kurzname {0} existieren mehrfach in Datenbank. Dozent wird keinem Termin zugeordnet", doz.DozentID), true);
                }
                else
                {
                    var lec = org.Members.SingleOrDefault(m => m.ShortName.Equals(doz.DozentID));
                    if (lec == null)
                    {
                        _import.AddErrorMessage("Import", string.Format("Dozent [{0} ({1})] existiert nicht in Datenbank. Wird bei Import automatisch angelegt.", doz.Name, doz.DozentID), false);
                    }
                }
            }
        }
Example #5
0
        /*
         * private List<SemesterGroup> InitSemesterGroups(TimeTableDbContext db, string gruppenId)
         * {
         *  var semester = db.Semesters.SingleOrDefault(s => s.Id == _semId);
         *  var org = db.Organisers.SingleOrDefault(x => x.Id == _orgId);
         *
         *  // Annahme, die Semestergruppen existieren!
         *  var semGroupList = new List<SemesterGroup>();
         *
         *  // Annahme, die Semestergruppen existieren nicht alle und müssen ggf. angelegt werden
         *
         *  // damit man nach den Alias namen in Abhängigkeit der Studiengänge / Fakultät suchen kann
         *  // so müssen die Namen derzeit auf globale Ebene eindeutig sein
         *  var aliasList = db.GroupAliases.Where(g => g.Name.ToUpper().Equals(gruppenId.ToUpper())
         *      && g.CapacityGroup.CurriculumGroup.Curriculum.Organiser.Id == _orgId).ToList();
         *
         *  // falls leer, jetzt in Zuordnungen nachsehen
         *  if (!aliasList.Any())
         *  {
         *      var zuordnungen = _import.GruppenZuordnungen.Where(x => x.Alias.Equals(gruppenId));
         *
         *      foreach (var zuordnung in zuordnungen)
         *      {
         *          // Studiengang finden
         *          var curr = db.Curricula.SingleOrDefault(x =>
         *              x.ShortName.Equals(zuordnung.Studiengang) &&
         *              x.Organiser.Id == org.Id);
         *          if (curr == null)
         *          {
         *              curr = new TimeTable.Data.Curriculum
         *              {
         *                  Organiser = org,
         *                  ShortName = zuordnung.Studiengang,
         *                  Name = zuordnung.Studiengang
         *              };
         *              db.Curricula.Add(curr);
         *          }
         *
         *          var sg = curr.CurriculumGroups.SingleOrDefault(x => x.Name.Equals(zuordnung.Studiengruppe));
         *          if (sg == null)
         *          {
         *              sg = new CurriculumGroup
         *              {
         *                  Name = zuordnung.Studiengruppe,
         *                  IsSubscribable = true,
         *                  Curriculum = curr
         *              };
         *              db.CurriculumGroups.Add(sg);
         *              curr.CurriculumGroups.Add(sg);
         *          }
         *
         *          var cg = string.IsNullOrEmpty(zuordnung.Kapazitätsgruppe) ?
         *              sg.CapacityGroups.SingleOrDefault(x => string.IsNullOrEmpty(x.Name)) :
         *              sg.CapacityGroups.SingleOrDefault(x => x.Name.Equals(zuordnung.Kapazitätsgruppe));
         *          if (cg == null)
         *          {
         *              cg = new CapacityGroup
         *              {
         *                  InSS = true,
         *                  InWS = true,
         *                  Name = zuordnung.Kapazitätsgruppe,
         *                  CurriculumGroup = sg
         *              };
         *              db.CapacityGroups.Add(cg);
         *              sg.CapacityGroups.Add(cg);
         *          }
         *
         *          var al = cg.Aliases.SingleOrDefault(x => x.Name.Equals(zuordnung.Alias));
         *          if (al == null)
         *          {
         *              al = new GroupAlias
         *              {
         *                  Name = zuordnung.Alias,
         *                  CapacityGroup = cg
         *              };
         *              db.GroupAliases.Add(al);
         *              cg.Aliases.Add(al);
         *          }
         *
         *          aliasList.Add(al);
         *      }
         *      db.SaveChanges();
         *  }
         *
         *
         *  foreach (var groupAlias in aliasList)
         *  {
         *      // zugehörige Kapazitätsgruppe
         *      var capGroup = groupAlias.CapacityGroup;
         *
         *      // im semester suchen
         *      var semGroup = semester.Groups.SingleOrDefault(g => g.CapacityGroup.Id == capGroup.Id);
         *
         *      if (semGroup == null)
         *      {
         *          // semestergruppe gibt es nicht => auf jeden Fall anlegen
         *          semGroup = new SemesterGroup
         *          {
         *              CapacityGroup = capGroup,
         *              Semester = semester,
         *          };
         *
         *          _Logger.InfoFormat("Semestergruppe {0} angelegt {1}", semGroup.FullName, gruppenId);
         *
         *          capGroup.SemesterGroups.Add(semGroup);
         *          db.SemesterGroups.Add(semGroup);
         *          db.SaveChanges();
         *      }
         *
         *      semGroupList.Add(semGroup);
         *  }
         *
         *  return semGroupList;
         * }
         */



        public void CheckRooms()
        {
            var db  = new TimeTableDbContext();
            var org = db.Organisers.SingleOrDefault(o => o.Id == _orgId);

            if (org == null)
            {
                _import.AddErrorMessage("Import", "Unbekannte Organisationseinheit", true);
                return;
            }

            foreach (var raum in _import.Raeume.Where(r => r.IsTouched))
            {
                var room = db.Rooms.SingleOrDefault(r => r.Number.Equals(raum.Nummer));
                if (room == null)
                {
                    _import.AddErrorMessage("Import",
                                            $"Raum [{raum.Nummer}] existiert nicht in Datenbank. Raum wird bei Import automatisch angelegt und {org.ShortName} zugeordnet", false);
                }
                else
                {
                    if (room.Assignments.All(a => a.Organiser.Id != org.Id))
                    {
                        _import.AddErrorMessage("Import",
                                                $"Raum [{raum.Nummer}] existiert hat aber keine Zuordnung zu {org.ShortName}. Zuordnung wird bei Import automatisch angelegt.", false);
                    }
                }
            }
        }
        public dynamic GetFormData(TimeTableDbContext _dbContext, string type)
        {
            if (type == "Groups")
            {
                return(_dbContext.Groups.AsNoTracking().ToList());
            }
            else if (type == "ASY")
            {
                return(_dbContext.ASY.AsNoTracking().ToList());
            }
            else if (type == "GroupID")
            {
                return(_dbContext.GroupID.AsNoTracking().ToList());
            }

            else if (type == "Rooms")
            {
                return(_dbContext.Rooms.AsNoTracking().ToList());
            }
            else if (type == "RoomsforConsectiveSession")
            {
                return(_dbContext.RoomsforConsectiveSession.AsNoTracking().ToList());
            }
            return(null);
        }
Example #7
0
        private Course GetCourse(TimeTableDbContext db, Semester sem, ActivityOrganiser org, CieCourse course)
        {
            // alle Kurse im Semester des Organisers nach dem Namen durchsuchen


            return(null);
        }
Example #8
0
        public dynamic GetFormData(TimeTableDbContext _dbContext, string type)
        {
            if (type == "Faculty")
            {
                return(_dbContext.Faculties.AsNoTracking().ToList());
            }
            else if (type == "Department")
            {
                return(_dbContext.Departments.AsNoTracking().ToList());
            }
            else if (type == "Center")
            {
                return(_dbContext.Centers.AsNoTracking().ToList());
            }
            else if (type == "Building")
            {
                return(_dbContext.Buildings.AsNoTracking().ToList());
            }
            else if (type == "Level")
            {
                return(_dbContext.EmployeeLevels.AsNoTracking().ToList());
            }
            else if (type == "Lecturers")
            {
                return(_dbContext.Lecturers.AsNoTracking().ToList());
            }

            return(null);
        }
Example #9
0
        public void RoomAdd()
        {
            TimeTableDbContext db = TestDataService.GetDataContext();

            //Testen ob wirklich nur 1 Raum in der Datenbank ist
            int n2 = db.Rooms.Count();

            Assert.AreEqual(1, n2);

            // Neuen Raum hinzufügen
            Room r2 = new Room()
            {
                Name   = "Computerlabor",
                Number = "R BG.089 "
            };

            db.Rooms.Add(r2);

            // Schreib es in die Datenbank
            db.SaveChanges();

            // Zähle ob jetzt 2 Räume da sind
            var db3 = new TimeTableDbContext();
            int n3  = db3.Rooms.Count();

            Assert.AreEqual(2, n3);
        }
 public DashboardFunction(Panel _appPanel, Panel _formPanel)
 {
     _db       = new TimeTableDbContext();
     AppPanel  = _appPanel;
     FormPanel = _formPanel;
     LoadAppForms();
 }
Example #11
0
        /// <summary>
        /// Dozenten deren Name/vorname mit x startet einer Fakultät
        /// </summary>
        /// <param name="Startswith"></param>
        /// <param name="orgName"></param>
        /// <returns></returns>
        public IEnumerable <LecturerContract> GetLecturersStartwith(string Startswith, string orgName)
        {
            var db = new TimeTableDbContext();

            //Member sind alle Organisationsmitglieder?
            var lecturers = db.Members.Where(l => l.ShortName.StartsWith(Startswith) ||
                                             l.Name.StartsWith(Startswith) &&
                                             l.Organiser.ShortName.Equals(orgName));

            var lecturerContract = new List <LecturerContract>();

            foreach (var lecturer in lecturers)
            {
                if (lecturer != null)
                {
                    lecturerContract.Add(new LecturerContract
                    {
                        LecturerId        = lecturer.Id.ToString(),
                        LecturerName      = lecturer.Name,
                        LecturerShortname = lecturer.ShortName,
                    });
                }
            }
            return(lecturerContract.OrderBy(l => l.LecturerName));
        }
Example #12
0
        private OrganiserMember InitLecturer(TimeTableDbContext db, Dozent dozent, ActivityOrganiser organiser)
        {
            var n = organiser.Members.Count(l => l.ShortName.Equals(dozent.DozentID));

            if (n > 1)
            {
                return(null);
            }

            var lecturer = organiser.Members.FirstOrDefault(l => l.ShortName.Equals(dozent.DozentID));

            if (lecturer == null)
            {
                string profileUrl = null;
                if (dozent.Typ.ToUpper().Equals("PROF"))
                {
                    profileUrl = string.Format("http://wi.hm.edu/dozenten/{0}/index.de.html", dozent.Name.ToLowerInvariant());
                }

                lecturer = new OrganiserMember
                {
                    ShortName   = dozent.DozentID,
                    Name        = dozent.Name,
                    Role        = dozent.Typ,
                    Description = dozent.Name,
                    UrlProfile  = profileUrl,
                };
                organiser.Members.Add(lecturer);
                db.Members.Add(lecturer);
                db.SaveChanges();
                _numLecturers++;
            }
            return(lecturer);
        }
Example #13
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult GetDocument(Guid id)
        {
            var db = new TimeTableDbContext();

            var file = db.Storages.SingleOrDefault(img => img.Id == id);

            return File(file.BinaryData, file.FileType, file.Name);
        }
        public SubjectsFormModel GetId(SubjectsFormModel obj)
        {
            TimeTableDbContext _dbContext = new TimeTableDbContext();
            int exitCount = _dbContext.Subjects.Count() + 1;

            obj.SubjectCode = "SUB" + exitCount.ToString().PadLeft(4, '0');
            return(obj);
        }
Example #15
0
        internal ICollection <Course> GetAllLottryCourses(Semester semester)
        {
            var Db = new TimeTableDbContext();

            return(Db.Activities.OfType <Course>().Where(c =>
                                                         c.Occurrence.LotteryEnabled &&
                                                         c.SemesterGroups.Any(g => g.Semester.Id == semester.Id)).ToList());
        }
Example #16
0
        public void CourseSubscritpions()
        {
            TimeTableDbContext db = TestDataService.GetDataContext();


            Course c1 = db.Activities.OfType <Course>().SingleOrDefault(a1 => a1.ShortName.Equals("TM"));
            Course c2 = db.Activities.OfType <Course>().SingleOrDefault(a2 => a2.ShortName.Equals("Info"));
        }
Example #17
0
        internal int GetNextPriority(Semester semester, string userId)
        {
            var Db = new TimeTableDbContext();

            // Alle WPM-Subscriptions für den User holen und nach Prio und Datum sortieren

            // alle Subscriptions durchgehen und Reihenfolge prüfen

            // ggf. Prio setzen

            // neue Prio ermitteln
            var wpmList = Db.Activities.OfType <Course>().Where(a =>
                                                                a.Occurrence.Subscriptions.Any(u => u.UserId.Equals(userId)) &&
                                                                a.SemesterGroups.Any(g => g.Semester.Id == semester.Id) &&
                                                                a.SemesterGroups.Any(g => g.CapacityGroup.CurriculumGroup.Name.Equals("WPM"))).ToList();

            var subList = new List <SubscriptionCourseViewModel>();

            foreach (var wpm in wpmList)
            {
                // es könnten ja auch mehrere Eintragungen vorliegen
                var wpmsubs = wpm.Occurrence.Subscriptions.Where(s => s.UserId.Equals(userId));

                foreach (var subscription in wpmsubs)
                {
                    subList.Add(new SubscriptionCourseViewModel
                    {
                        SubscriptionId         = subscription.Id,
                        Course                 = wpm,
                        Priority               = subscription.Priority.HasValue ? subscription.Priority.Value : 999,
                        SubscriptionTotalCount = wpm.Occurrence.Subscriptions.Count,
                        SubscriptionPrio1Count = wpm.Occurrence.Subscriptions.Count(s => s.Priority == 1),
                        SubscriptionPrio2Count = wpm.Occurrence.Subscriptions.Count(s => s.Priority == 2),
                        Capacity               = wpm.Occurrence.Capacity,
                        SubscriptionDateTime   = subscription.TimeStamp,
                    });
                }
            }

            var orderdSubList = subList.OrderBy(item => item.Priority).ThenBy(item => item.SubscriptionDateTime);

            // Hypothese: alle sind nach Prio und ohne Löcher geordnet
            // zur Sicherheit hier alles durchgehen!
            var prio = 1;

            foreach (var item in orderdSubList)
            {
                if (item.Priority == 999 || item.Priority != prio)
                {
                    var subscription = Db.Subscriptions.OfType <OccurrenceSubscription>().SingleOrDefault(s => s.Id == item.SubscriptionId);
                    subscription.Priority = prio;
                    Db.SaveChanges();
                }
                prio++;
            }

            return(orderdSubList.Count() + 1);
        }
Example #18
0
        public LecturersFormModel GetId(LecturersFormModel obj)
        {
            TimeTableDbContext _dbContext = new TimeTableDbContext();
            int exitCount = _dbContext.Lecturers.Count() + 1;

            obj.EmployeeId = exitCount.ToString().PadLeft(6, '0');
            obj.Rank       = obj.EmployeeLevel + "." + obj.EmployeeId;
            return(obj);
        }
        public dynamic GetFormData(TimeTableDbContext _dbContext, string type)
        {
            if (type == "Programme")
            {
                return(_dbContext.Programme.AsNoTracking().ToList());
            }

            return(null);
        }
Example #20
0
 public static TimeTableDbContext GetDataContext()
 {
     if (_ctx == null)
     {
         _ctx = new TimeTableDbContext();
         InitTestData();
     }
     return(_ctx);
 }
        public dynamic GetFormData(TimeTableDbContext _dbContext, string type)
        {
            if (type == "WorkingDays")
            {
                return(_dbContext.WorkingDays.AsNoTracking().ToList());
            }

            return(null);
        }
Example #22
0
        /// <summary>
        /// Löscht alle Kurse aus dem angegebenen Semester, die aus gpUntis importiert wurden
        /// </summary>
        /// <param name="semId"></param>
        /// <param name="orgId"></param>
        public void DeleteSemester(Guid semId, Guid orgId)
        {
            var db = new TimeTableDbContext();

            var semService       = new SemesterService();
            var timeTableService = new TimeTableInfoService(db);

            var msg   = "Sammle Daten";
            var perc1 = 0;

            Clients.Caller.updateProgress(msg, perc1);

            var semester = semService.GetSemester(semId);

            if (semester == null)
            {
                msg   = "Semester existiert nicht";
                perc1 = 100;

                Clients.Caller.updateProgress(msg, perc1);
                return;
            }

            var courses = db.Activities.OfType <Course>().Where(c =>
                                                                c.Organiser.Id == orgId && // Veranstalter
                                                                (c.SemesterGroups.Any(g => // Mit Semestergruppe
                                                                                      g.Semester.Id == semId &&
                                                                                      g.CapacityGroup.CurriculumGroup.Curriculum.Organiser.Id == orgId) ||
                                                                 !c.SemesterGroups.Any()                                                         // oder ohne Zuordnung
                                                                ) &&
                                                                (!string.IsNullOrEmpty(c.ExternalSource) && c.ExternalSource.Equals("GPUNTIS"))) // aus GPUNTIS
                          .ToList();

            msg   = string.Format("Lösche {0} von {1} Kursen", courses.Count, courses.Count);
            perc1 = 0;
            Clients.Caller.updateProgress(msg, perc1);

            var n = courses.Count;
            var i = 0;

            foreach (var course in courses)
            {
                i++;
                msg   = string.Format("Lösche {0}", course.Name);
                perc1 = (i * 100) / n;

                Clients.Caller.updateProgress(msg, perc1);

                timeTableService.DeleteCourse(course.Id);
            }


            msg   = "Alle Kurse gelöscht";
            perc1 = 100;
            Clients.Caller.updateProgress(msg, perc1);
        }
Example #23
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public IEnumerable <EventContract> GetAllEvents()
        {
            var db = new TimeTableDbContext();

            var now = DateTime.Now;
            //alle zukünftigen Events
            var events = db.Activities.OfType <Event>()
                         .Where(ev => ev.Dates.Any(d => d.End >= now)).ToList();

            //andere ansatz
            //var events = db.Activities.OfType<Event>()
            //.Where(ev => ev.Published == true && ev.Dates.Any(d => d.End >= now)).ToList();

            var eventList = new List <EventContract>();

            //jedes zukünftige event soll hinzugefügt werden mit Datum um Veranstalter
            foreach (var @event in events)
            {
                var nextEvent = new EventContract
                {
                    EventId         = @event.Id.ToString(),
                    EventName       = @event.Name,
                    EventDesciption = @event.Description,

                    //geht des so?
                    EventSlots     = @event.Occurrence.Capacity,
                    AvailableSlots = @event.Occurrence.Capacity - @event.Occurrence.Subscriptions.Count(),
                };
                //Die einzelnen Termine der Veranstaltung
                var eventDateList = new List <EventDate>();

                //Alle Termine der Veranstaltung in der Zukunft
                foreach (var date in @event.Dates)
                {
                    //nur zukünftige Termine oder in zukuft reichende
                    if (date.Begin >= now || (date.Begin <= now && date.End > now))
                    {
                        eventDateList.Add(new EventDate
                        {
                            Start          = date.Begin.ToString("hh\\:mm"),
                            End            = date.End.ToString("hh\\:mm"),
                            Date           = date.Begin.Date.ToString("dd.MM.yyyy"),
                            PlaceName      = date.Rooms.FirstOrDefault() != null ? date.Rooms.First().Number : "N.N.",
                            PlaceId        = date.Rooms.FirstOrDefault() != null ? date.Rooms.First().Id.ToString() : "N.N.",
                            EventOrganiser = date.Hosts.FirstOrDefault() != null ? date.Hosts.First().Name : "N.N.",
                        });
                        nextEvent.Dates = eventDateList;
                    }
                }
                eventList.Add(nextEvent);
            }
            //return eventList.OrderBy(ev => ev.Dates.First(e => e.Start>=now));
            return(eventList);
        }
Example #24
0
        public string ImportLottery(CourseLottery lottery)
        {
            string msg;

            _Logger.DebugFormat("Importiere Lotterie: {0}", lottery.Name);
            var db = new TimeTableDbContext();

            var organiser = db.Organisers.SingleOrDefault(s => s.Id == _orgId);
            var sem       = db.Semesters.SingleOrDefault(s => s.Id == _semId);

            var dbLottery = db.Lotteries.FirstOrDefault(x =>
                                                        x.Name.Equals(lottery.Name) &&
                                                        x.Semester != null && x.Semester.Id == sem.Id &&
                                                        x.Organiser != null && x.Organiser.Id == organiser.Id);

            if (dbLottery == null)
            {
                dbLottery = new TimeTable.Data.Lottery
                {
                    Name             = lottery.Name,
                    DrawingFrequency = DrawingFrequency.Daily,
                    DrawingTime      = lottery.FirstDrawing.TimeOfDay,
                    FirstDrawing     = lottery.FirstDrawing,
                    LastDrawing      = lottery.LastDrawing,
                    JobId            = string.Empty,
                    Organiser        = organiser,
                    Semester         = sem,
                    MaxConfirm       = lottery.SlotCount,
                    Description      = string.Empty
                };

                db.Lotteries.Add(dbLottery);
                db.SaveChanges();
            }

            // ok: im Augenblick gehen wir davon aus, dass als externe ID die LehrveranID aus vdb_t07 kommt
            // damit müssten alle importieren Kurse eindeutig identifizierbar sein
            foreach (var lotteryLot in lottery.Lots)
            {
                var course = db.Activities.OfType <Course>().FirstOrDefault(x =>
                                                                            x.ExternalId.Equals(lotteryLot.CourseId) &&
                                                                            x.SemesterGroups.Any(g => g.Semester.Id == sem.Id && g.CapacityGroup.CurriculumGroup.Curriculum.Organiser.Id == organiser.Id));

                if (course != null)
                {
                    dbLottery.Occurrences.Add(course.Occurrence);
                }
            }
            db.SaveChanges();


            msg = $"Lotterie {lottery.Name} importiert";
            return(msg);
        }
 public dynamic GetFormData(TimeTableDbContext _dbContext, string type)
 {
     if (type == "Groups")
     {
         return(_dbContext.Groups.AsNoTracking().ToList());
     }
     else if (type == "ASY")
     {
         return(_dbContext.ASY.AsNoTracking().ToList());
     }
     return(null);
 }
Example #26
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public NextEventContract GetNextEvent(Guid id)
        {
            var db = new TimeTableDbContext();

            var currentEvent = db.Activities.OfType <Event>().SingleOrDefault(ev => ev.Id == id);

            var now = DateTime.Now.AddMinutes(-1);

            // Gib mir von dem Event das Ende des nächsten Termins in der Zukunft
            var currentDate = currentEvent.Dates.Where(d => d.End >= now).OrderBy(d => d.End).FirstOrDefault();

            // Gib mir jetzt das Event, mit dem zeitlich am nächst gelegenen Beginn zum aktuellen Datum
            var eventList =
                db.Activities.OfType <Event>()
                .Where(ev => ev.Published == true && ev.Id != id &&
                       ev.Dates.Any(d => d.End >= currentDate.Begin)).ToList();

            ActivityDate nextDate = null;

            foreach (var @event in eventList)
            {
                var testDate = @event.Dates.Where(d => d.End >= now).OrderBy(d => d.Begin).FirstOrDefault();

                if (nextDate == null)
                {
                    nextDate = testDate;
                }
                else
                {
                    if (testDate.Begin < nextDate.Begin)
                    {
                        nextDate = testDate;
                    }
                }
            }

            if (nextDate == null)
            {
                return(GetNextEvent());
            }


            var nextEvent = new NextEventContract
            {
                EventId     = nextDate.Activity.Id,
                Title       = nextDate.Activity.Name,
                Description = nextDate.Activity.Description,
                From        = nextDate.Begin,
                Location    = nextDate.Rooms.Any() ? nextDate.Rooms.First().Number : string.Empty,
            };

            return(nextEvent);
        }
Example #27
0
        /// <summary>
        /// Alle zukünftigen Sprechstunden bis Zeitpunkt
        /// </summary>
        /// <param name="until"></param>
        /// <returns></returns>
        public IEnumerable <LecturerOfficeHourContract> GetAllOfficehours(DateTime until)
        {
            var db = new TimeTableDbContext();

            //Alle Sprechstunden
            var officeHours = db.Activities.OfType <OfficeHour>().ToList();

            var officeHourContract = new List <LecturerOfficeHourContract>();

            foreach (var officeHour in officeHours)
            {
                //Nur buchbaren zukünftige Termine bis gewälten Zeitpunkt
                var nextDate = officeHour.Dates.Where(oc => oc.Begin >= DateTime.Now && oc.Begin <= until && oc.Occurrence.IsAvailable).OrderBy(oc => oc.Begin).ToList();

                if (nextDate != null)
                {
                    foreach (var date in nextDate)
                    {
                        var officehourDate = new LecturerOfficeHourContract();

                        officehourDate.LecturerId = date.Hosts.FirstOrDefault() != null?date.Hosts.First().Id.ToString() : "N.N.";

                        officehourDate.LecturerName = date.Hosts.FirstOrDefault() != null?date.Hosts.First().Name : "N.N.";

                        //Steht der prof beim Raum als Owner drin?
                        officehourDate.LecturerRoomId = date.Rooms.Where(r => r.Owner == officehourDate.LecturerName).FirstOrDefault() != null?date.Hosts.First().Id.ToString() : "N.N.";

                        officehourDate.LecturerRoomNumber = date.Rooms.Where(r => r.Owner == officehourDate.LecturerName).FirstOrDefault() != null?date.Hosts.First().Name : "N.N.";

                        var officehourSlots = new List <LecturerOfficeHourDateSlot>();

                        foreach (var slot in date.Slots)
                        {
                            officehourSlots.Add(new LecturerOfficeHourDateSlot
                            {
                                OfficeHourSlotId            = slot.Id.ToString(),
                                from                        = slot.Begin,
                                until                       = slot.End,
                                NumberOfPossibleSubscribers = slot.Occurrence.Capacity,
                                CurrentNumberOfSubscribers  = slot.Occurrence.Subscriptions.Count(c => c.Id.ToString() != null),
                                isBookablefrom              = slot.Occurrence.FromDateTime,
                                isBookableuntil             = slot.Occurrence.UntilDateTime,
                            });
                        }
                        officehourDate.OfficeHours = officehourSlots;
                        officeHourContract.Add(officehourDate);
                    }
                }
            }

            return(officeHourContract.OrderBy(oh => oh.LecturerName));
        }
        public dynamic GetFormData(TimeTableDbContext _dbContext, string type)
        {
            if (type == "Subjects")
            {
                return(_dbContext.Subjects.ToList());
            }
            if (type == "Year")
            {
                return(_dbContext.ASY.Select(year => year.Year).Distinct().ToList());
            }

            return(null);
        }
Example #29
0
        public void TestFail()
        {
            TimeTableDbContext db = TestDataService.GetDataContext();

            //neue Datenbankverknüpfunt
            var db2 = new TimeTableDbContext();

            //Zählt angelegt Räume
            int n2 = db2.Rooms.Count();


            //Muss 1 sein
            Assert.AreEqual(1, n2);
        }
Example #30
0
        public ActionResult CustomOccurrenceMail(OccurrenceMailingModel model)
        {
            var logger = LogManager.GetLogger("OccurrenceMail");

            if (ModelState.IsValid)
            {
                var db = new TimeTableDbContext();

                var occ = db.Occurrences.SingleOrDefault(c => c.Id == model.OccurrenceId);

                if (occ != null)
                {
                    // Liste der Empfänger ermitteln
                    var ac      = new ActivityService();
                    var summary = ac.GetSummary(model.OccurrenceId);

                    var subscribers = summary.Subscriptions;
                    var users       = new List <ApplicationUser>();

                    foreach (var subscription in subscribers)
                    {
                        var user = UserManager.FindById(subscription.UserId);
                        if (user != null)
                        {
                            users.Add(user);
                        }
                    }

                    // Mail an Teilnehmer einer Veranstaltung
                    // durch selbstständiges Eintragen automatisch Erhalt von Mails gewährleisten
                    model.IsImportant        = true;
                    model.IsDistributionList = false;
                    model.ListName           = summary.Name;

                    SendMail(users, model);

                    return(RedirectToAction("MailSentSuccess", "Mailing", new { id = model.OccurrenceId }));
                }
                else
                {
                    logger.ErrorFormat("Occurrence {0} does not exist", model.OccurrenceId);
                    return(RedirectToAction("MailSentError", "Mailing"));
                }
            }
            else
            {
                ViewBag.ErrorMessage = "Fehler im Formular: " + ModelState.ToString();
                return(View("InvalidModel"));
            }
        }