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; }
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; }
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 ); }
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(); }
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; }
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; }
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; }
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; }
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(); }
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(); }
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; }
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(); }
public ActionResult Index() { HousingContext db = new HousingContext(); return View(db.campuses.OrderBy(x => x.campusName)); }