Example #1
0
 public static Boolean importParishes(String filename)
 {
     CsvFileDescription inputFileDescription = new CsvFileDescription
       {
     SeparatorChar = ',',
     FirstLineHasColumnNames = true
       };
       CsvContext cc = new CsvContext();
       HousingContext hdb = new HousingContext();
       IEnumerable<ParishCSV> csvparishes = cc.Read<ParishCSV>(filename, inputFileDescription);
       List<Parish> parishes = hdb.parishes.ToList();
       foreach (ParishCSV parish in csvparishes)
       {
     if (!parishes.Where(x => x.name == parish.name && x.city == parish.city && x.state == parish.state).Any())
     {
       hdb.parishes.Add(new Parish
       {
     name = parish.name,
     city = parish.city,
     state = parish.state,
     femaleChaperones = parish.femaleChaperones,
     maleChaperones = parish.maleChaperones,
     femaleStudents = parish.femaleStudents,
     maleStudents = parish.maleStudents
       });
     }
       }
       hdb.SaveChanges();
       return true;
 }
Example #2
0
        public static Floor getFittedFloor(Guid matchID, Int32 floorID)
        {
            HousingContext hdb = new HousingContext();

              Floor f = (
            from fl in hdb.floors.Include("building")
            where fl.FloorID == floorID
            select fl).FirstOrDefault();
              List<TemporaryAssignment> tempAssignments = (
            from t in hdb.temporaryAssignments
            where t.MatchIdentifier == matchID
            select t
            ).ToList();
              foreach (Room r in f.rooms)
              {
            TemporaryAssignment temp = tempAssignments.Where(x => x.RoomID == r.RoomID).FirstOrDefault();
            int? parishID = null;
            if (temp != null)
            {
              parishID = temp.ParishID;
              f.building.gender = temp.gender;
            }
            r.assignedTo = (from p in hdb.parishes where parishID == p.ParishID select p).FirstOrDefault();
              }
              return f;
        }
Example #3
0
        public String buildSVG(Boolean clearRooms = false, Int32 ParishID = 0)
        {
            HousingContext db = new HousingContext();
              List<RoomColor> colors = db.roomColors.ToList();
              List<Room> rooms = this.rooms.ToList();
              List<Parish> parishes = parishesOnFloor();
              int j = 0;
              for (int i = 0; i < parishes.Count(); i++)
              {
            if (i > colors.Count())
            {
              j = 0;
            }
            parishes[i].curColor = colors[j];
            j++;
              }

              String roomString = "";
              RoomColor curColor;
              String parishKey = "";
              j = 0;
              if (ParishID != 0)
              {
            parishes = parishes.Where(x => x.ParishID == ParishID).ToList();
              }
              foreach (Parish p in parishes)
              {
            parishKey += parishSVG(p, j++);
              }
              foreach (Room r in rooms)
              {
            if (r.assignedTo == null || clearRooms)
            {
              roomString += r.buildSVG();
            }
            else if (parishes.Where(x => x.ParishID == r.assignedTo.ParishID).Any())
            {
              curColor = parishes.Where(x => x.ParishID == r.assignedTo.ParishID).First().curColor;
              roomString += r.buildSVG(Color.FromArgb(curColor.foreColor), Color.FromArgb(curColor.backColor), 100);
            }
            else
            {
              roomString += r.buildSVG();
            }
              }
              return String.Format(
            "<svg width=\"{1}\" height=\"{2}\" xmlns=\"http://www.w3.org/2000/svg\">\n<g>\n{3}{0}{4}\n</g>\n</svg>", roomString, this.width() + 2, this.height() + 2, this.svgExtras, parishKey
              );
        }
Example #4
0
 public static List<Floor> getFittedFloor(Guid matchID)
 {
     HousingContext hdb = new HousingContext();
       //var q = from f in hdb.floors
       //        join r in hdb.rooms
       //          on f.FloorID equals r.FloorID
       //        join t in hdb.temporaryAssignments
       //          on r.RoomID equals t.RoomID into g
       //          from temp in g.Where(temps => temps.MatchIdentifier == matchID).DefaultIfEmpty()
       //        select f;
       return (
     from f in hdb.floors
     join r in hdb.rooms
       on f.FloorID equals r.FloorID
     join t in hdb.temporaryAssignments
       on r.RoomID equals t.RoomID into g
     from temp in g.Where(temps => temps.MatchIdentifier == matchID).DefaultIfEmpty()
     select f
       ).ToList();
 }
Example #5
0
 public static Boolean fitParishes(List<Parish> parishes, List<Campus> campuses, Guid matchIdentifier, Guid runID)
 {
     foreach (Parish p in parishes)
       {
     foreach (Campus c in campuses)
     {
       if (!(c.fitGroup(p, true) && c.fitGroup(p, false)))
       {
     break;
       }
     }
       }
       HousingContext hdb = new HousingContext();
       foreach (Campus c in campuses)
       {
     foreach (Building b in c.buildings)
     {
       foreach (Floor f in b.floors)
       {
     foreach (Room r in f.rooms)
     {
       if (r.assignedTo == null)
       {
         continue;
       }
       hdb.temporaryAssignments.Add(new TemporaryAssignment
       {
         ParishID = r.assignedTo.ParishID,
         RoomID = r.RoomID,
         gender = b.gender,
         MatchIdentifier = matchIdentifier,
         runID = runID
       });
     }
       }
     }
       }
       hdb.SaveChanges();
       return true;
 }
Example #6
0
 public static Boolean importAdjacentRooms(String filename)
 {
     CsvFileDescription inputFileDescription = new CsvFileDescription
       {
     SeparatorChar = ',',
     FirstLineHasColumnNames = true
       };
       CsvContext cc = new CsvContext();
       HousingContext hdb = new HousingContext();
       List<AdjacentRoomsCSV> csvadjacentRooms = cc.Read<AdjacentRoomsCSV>(filename, inputFileDescription).ToList();
       List<Room> rooms = (
     from room in hdb.rooms
     select room
     ).ToList();
       foreach (AdjacentRoomsCSV csvRoom in csvadjacentRooms)
       {
     List<Room> adjacentRooms = new List<Room>();
     foreach (Room r in rooms.Where(
     x => x.floor.level == csvRoom.FloorNumber && x.roomNumber == csvRoom.RoomNumber && x.floor.building.name == csvRoom.BuildingName
       && x.floor.building.campus.campusName == csvRoom.CampusName
     )) {
       adjacentRooms = (
     from room in hdb.rooms
     where csvRoom.RoomNumber == r.roomNumber
       && csvRoom.AdjacentRoomNumber == room.roomNumber
       && csvRoom.FloorNumber == r.floor.level
       && room.FloorID == r.FloorID
     select room
       ).ToList();
       if (adjacentRooms != null && adjacentRooms.Count > 0)
       {
     r.adjacentRooms.Add(adjacentRooms.First());
       }
     }
       }
       hdb.SaveChanges();
       return true;
 }
Example #7
0
 public static Boolean useFit(Guid matchID)
 {
     HousingContext hdb = new HousingContext();
       List<TemporaryAssignment> tempAssignments = (
     from t in hdb.temporaryAssignments
     where t.MatchIdentifier == matchID
     select t
     ).ToList();
       foreach (Room r in hdb.rooms)
       {
     TemporaryAssignment temp = tempAssignments.Where(x => x.RoomID == r.RoomID).FirstOrDefault();
     int? parishID = null;
     if (temp != null)
     {
       parishID = temp.ParishID;
     }
     Parish p = (from pa in hdb.parishes where parishID == pa.ParishID select pa).FirstOrDefault();
     r.assignedTo = p;
       }
       hdb.SaveChanges();
       return true;
 }
Example #8
0
 public static Boolean performFitting(Guid runID)
 {
     HousingContext hdb = new HousingContext();
       List<Guid> successfulMatches = new List<Guid>();
       Guid attemptedMatch;
       List<Parish> parishes = (
     from parish in hdb.parishes
     orderby parish.femaleChaperones + parish.femaleStudents descending
     select parish
       ).ToList();
       List<Campus> campuses = (
     from campus in hdb.campuses
     select campus
       ).ToList();
       attemptedMatch = Guid.NewGuid();
       if (fitParishes(parishes, campuses, attemptedMatch, runID))
       {
     successfulMatches.Add(attemptedMatch);
       }
       parishes = (
     from parish in hdb.parishes
     orderby parish.maleChaperones + parish.maleStudents descending
     select parish
       ).ToList();
       attemptedMatch = Guid.NewGuid();
       if (fitParishes(parishes, campuses, attemptedMatch, runID))
       {
     successfulMatches.Add(attemptedMatch);
       }
       parishes = (
     from parish in hdb.parishes
     orderby parish.maleChaperones + parish.maleStudents + parish.femaleStudents + parish.femaleChaperones descending
     select parish
       ).ToList();
       attemptedMatch = Guid.NewGuid();
       if (fitParishes(parishes, campuses, attemptedMatch, runID))
       {
     successfulMatches.Add(attemptedMatch);
       }
       if (successfulMatches.Any())
       {
     return true;
       }
       return false;
 }
Example #9
0
        public static List<Fits> getRunFits(Guid runID)
        {
            HousingContext hdb = new HousingContext();

              return (from t in
                (
                  from t in hdb.temporaryAssignments
                  where t.runID == runID
                  select new
                  {
                    t.MatchIdentifier,
                    t.runID
                  }
                  ).Distinct()
              select new Fits
              {
                matchIdentifier = t.MatchIdentifier,
                runID = t.runID,
                emptyRooms = (
                  from r in hdb.rooms
                  join t2 in hdb.temporaryAssignments
                    on new { r.RoomID, t.MatchIdentifier } equals new { t2.RoomID, t2.MatchIdentifier } into tempg
                  from temp in tempg.DefaultIfEmpty()
                  where temp.MatchIdentifier == null
                    && r.open == true
                  select r
                ).Count(),

              }).ToList();
        }
Example #10
0
 public List<Parish> parishesOnFloor()
 {
     HousingContext db = new HousingContext();
       List<Room> rooms = this.rooms.ToList();
       return (
     from r in rooms
     where r.assignedTo != null
     select r.assignedTo
       ).Distinct().ToList();
 }
Example #11
0
 public static Boolean importRoomFile(String filename)
 {
     CsvFileDescription inputFileDescription = new CsvFileDescription
       {
     SeparatorChar = ',',
     FirstLineHasColumnNames = true
       };
       CsvContext cc = new CsvContext();
       HousingContext hdb = new HousingContext();
       IEnumerable<RoomCSV> csvrooms = cc.Read<RoomCSV>(filename, inputFileDescription);
       List<String> campusNames = (from rcsv in csvrooms
                           select rcsv.CampusName).Distinct().ToList();
       List<Campus> campuses = hdb.campuses.Include(x => x.buildings).ToList();
       List<String> buildingNames;
       List<Int32> floorNumbers;
       List<RoomCSV> csvRooms;
       Campus curCampus;
       Building curBuilding;
       Floor curFloor;
       foreach (String campusName in campusNames)
       {
     curCampus = campuses.Where(x => x.campusName == campusName).FirstOrDefault();
     if (curCampus == null)
     {
       curCampus = hdb.campuses.Add(new Campus
       {
     campusName = campusName,
     buildings = new List<Building>()
       });
     }
     buildingNames = (
       from rcsv in csvrooms
       where rcsv.CampusName == campusName
       select rcsv.BuildingName
     ).Distinct().ToList();
     foreach (String buildingName in buildingNames)
     {
       curBuilding = curCampus.buildings.Where(x => x.name == buildingName).FirstOrDefault();
       if (curBuilding == null)
       {
     curBuilding = hdb.buildings.Add(new Building
     {
       campus = curCampus,
       floors = new List<Floor>(),
       name = buildingName
     });
       }
       floorNumbers = (
     from rcsv in csvrooms
     where rcsv.BuildingName == buildingName && rcsv.CampusName == campusName
     select rcsv.FloorNumber
       ).Distinct().ToList();
       foreach (int floorNumber in floorNumbers)
       {
     curFloor = curBuilding.floors.Where(x => x.level == floorNumber).FirstOrDefault();
     if (curFloor == null) {
       curFloor = hdb.floors.Add(new Floor
       {
         building = curBuilding,
         rooms = new List<Room>(),
         level = floorNumber
       });
     }
     csvRooms = (
       from rcsv in csvrooms
       where rcsv.CampusName == campusName && rcsv.BuildingName == buildingName && rcsv.FloorNumber == floorNumber
       select rcsv
     ).ToList();
     foreach (RoomCSV room in csvRooms)
     {
       if (!curFloor.rooms.Where(x => x.roomNumber == room.RoomNumber).Any())
       {
         Room r;
         if (room.Type == "Suite")
         {
           r = new Suite
           {
             floor = curFloor,
             roomNumber = room.RoomNumber,
             chaperonesAllowed = room.ChaperonesAllowed,
             studentsAllowed = room.StudentsAllowed
           };
         }
         else
         {
           r = new Room
           {
             floor = curFloor,
             roomNumber = room.RoomNumber,
             chaperonesAllowed = room.ChaperonesAllowed,
             studentsAllowed = room.StudentsAllowed
           };
         }
         hdb.rooms.Add(r);
       }
     }
       }
     }
       }
       hdb.SaveChanges();
       List<RoomCSV> SuitesRooms = (
     from rcsv in csvrooms
     where rcsv.SuiteFloorNumber != null
     select rcsv
       ).ToList();
       foreach (RoomCSV r in SuitesRooms)
       {
     Suite curSuite = (Suite) (from suite in hdb.rooms
         where r.SuiteRoomNumber == suite.roomNumber
           && suite.floor.level == r.SuiteFloorNumber
           && suite.floor.building.name == r.SuiteBuildingName
           && suite.floor.building.campus.campusName == r.SuiteCampusName
         select suite).FirstOrDefault();
     var curRoom = (from room in hdb.rooms
               where room.floor.level == r.FloorNumber
                   && room.floor.building.name == r.BuildingName
                   && room.floor.building.campus.campusName == r.CampusName
                   && room.roomNumber == r.RoomNumber
               select room).FirstOrDefault();
     if (curSuite.rooms == null)
     {
       curSuite.rooms = new List<Room>();
     }
     curSuite.rooms.Add(curRoom);
     curSuite.chaperonesAllowed = 0;
     curSuite.studentsAllowed = 0;
       }
       hdb.SaveChanges();
       return true;
 }
Example #12
0
        public void SetAdjacentRooms(List<Int32> roomIDs)
        {
            HousingContext db = new HousingContext();
              Room curRoom = (from r in db.rooms
                     where r.RoomID == this.RoomID
                     select r).First();
              var removedRooms = from r in this.adjacentRooms
                         where !roomIDs.Contains(r.RoomID)
                         select r;
              foreach (Room r in removedRooms)
              {
            Room toRemove = curRoom.adjacentRooms.Where(x => x.RoomID == r.RoomID).First();
            toRemove.adjacentRooms.Remove(curRoom);
            curRoom.adjacentRooms.Remove(toRemove);
              }

              List<Int32> adjacentIDs =
              (from r in this.adjacentRooms
              select r.RoomID).ToList();
              List<Int32> newAdjacentIDs = roomIDs.Except(adjacentIDs).ToList();
              List<Room> newAdjacent =
            (from r in db.rooms
             where newAdjacentIDs.Contains(r.RoomID)
             select r
            ).ToList();

              foreach (Room r in newAdjacent)
              {
            curRoom.adjacentRooms.Add(r);
            r.adjacentRooms.Add(curRoom);
              }

              db.SaveChanges();
        }
Example #13
0
 public ActionResult Index()
 {
     HousingContext db = new HousingContext();
       return View(db.campuses.OrderBy(x => x.campusName));
 }