コード例 #1
0
ファイル: ActivityController.cs プロジェクト: weedkiller/NINE
        public PartialViewResult RoomPlan(string date)
        {
            var day     = string.IsNullOrEmpty(date) ? DateTime.Today  : DateTime.ParseExact(date, "dd.MM.yyyy", null);
            var nextDay = day.AddDays(1);

            var org = GetMyOrganisation();

            var model = new List <RoomActivityModel>();

            // Alle Aktivitäten, die in Räumen des aktuellen
            // Veranstalters stattfinden

            /*
             * var allActivities = Db.ActivityDates.Where(x =>
             *  x.Begin >= day && x.End < nextDay &&
             *  x.Rooms.Any(r => r.Assignments.Any(a => a.Organiser.Id == org.Id))
             *  ).ToList();
             *
             * // oder
             * // Alle Räume, die durch Veranstaltungen belegt sind
             * var allRooms = Db.Rooms.Where(r =>
             *  r.Assignments.Any(a => a.Organiser.Id == org.Id) &&
             *  r.Dates.Any(x => x.Begin >= day && x.End < nextDay)
             *  )
             *  .OrderBy(r => r.Number)
             *  .ToList();
             */

            // Alle Räume des Veranstalters
            var allRooms = Db.Rooms.Where(r =>
                                          r.Assignments.Any(a => a.Organiser.Id == org.Id))
                           .OrderBy(r => r.Number)
                           .ToList();

            foreach (var room in allRooms)
            {
                // Alle Termine in diesem Raum
                var allActivities = room.Dates.Where(x =>
                                                     x.Begin >= day && x.End < nextDay)
                                    .OrderBy(d => d.Begin)
                                    .ToList();

                var roomModel = new RoomActivityModel
                {
                    Room  = room,
                    Dates = allActivities
                };

                model.Add(roomModel);
            }



            return(PartialView("_RoomPlan", model));
        }
コード例 #2
0
ファイル: ActivityController.cs プロジェクト: weedkiller/NINE
        public FileResult RoomPlanData(string date)
        {
            var day     = string.IsNullOrEmpty(date) ? DateTime.Today : DateTime.ParseExact(date, "dd.MM.yyyy", null);
            var nextDay = day.AddDays(1);

            var org = GetMyOrganisation();

            var model = new List <RoomActivityModel>();


            // Alle Räume des Veranstalters
            var allRooms = Db.Rooms.Where(r =>
                                          r.Assignments.Any(a => a.Organiser.Id == org.Id))
                           .OrderBy(r => r.Number)
                           .ToList();

            foreach (var room in allRooms)
            {
                // Alle Termine in diesem Raum
                var allActivities = room.Dates.Where(x =>
                                                     x.Begin >= day && x.End < nextDay)
                                    .OrderBy(d => d.Begin)
                                    .ToList();

                var roomModel = new RoomActivityModel
                {
                    Room  = room,
                    Dates = allActivities
                };

                model.Add(roomModel);
            }



            var ms     = new MemoryStream();
            var writer = new StreamWriter(ms, Encoding.Default);


            writer.Write(
                "Raum;Von;Bis;Bezeichnung;Dozenten;Status");

            writer.Write(Environment.NewLine);

            foreach (var room in model)
            {
                if (room.Dates.Any())
                {
                    foreach (var activityDate in room.Dates)
                    {
                        writer.Write(room.Room.Number);
                        writer.Write(";");
                        writer.Write(activityDate.Begin.ToShortTimeString());
                        writer.Write(";");
                        writer.Write(activityDate.End.ToShortTimeString());
                        writer.Write(";");
                        writer.Write(activityDate.Activity.Name);
                        writer.Write(";");
                        foreach (var dateHost in activityDate.Hosts)
                        {
                            writer.Write(dateHost.Name);
                            if (dateHost != activityDate.Hosts.Last())
                            {
                                writer.Write(", ");
                            }
                        }
                        writer.Write(";");
                        if (activityDate.Occurrence != null && activityDate.Occurrence.IsCanceled)
                        {
                            writer.Write("abgesagt");
                        }
                        writer.Write(Environment.NewLine);
                    }
                }
                else
                {
                    writer.Write(room.Room.Number);
                    writer.Write(";");
                    writer.Write(";;;;keine Belegung");
                    writer.Write(Environment.NewLine);
                }
            }

            writer.Flush();
            writer.Dispose();

            var sb = new StringBuilder();

            sb.Append("Belegungsplan");
            sb.Append("_");
            sb.Append(day.ToString("yyyyMMdd"));
            sb.Append(".csv");

            return(File(ms.GetBuffer(), "text/csv", sb.ToString()));
        }