From d347b988ea34b6dfbd278653e4ce0dd438214fc0 Mon Sep 17 00:00:00 2001 From: markegge Date: Thu, 26 Oct 2023 10:01:55 -0700 Subject: [PATCH 01/13] created new data model and direct DB access functions --- ...AvgHourlyOccupancyData.StoredProcedure.sql | Bin 0 -> 3050 bytes ...turnAvgHourlySpeedData.StoredProcedure.sql | Bin 0 -> 2990 bytes ...vgHourlyThroughputData.StoredProcedure.sql | Bin 0 -> 3158 bytes ....ReturnAvgVolumeByLane.StoredProcedure.sql | Bin 0 -> 1590 bytes ...o.ReturnMiscDataReport.StoredProcedure.sql | Bin 0 -> 2658 bytes .../Controllers/CorridorsController.cs | 7 +- .../Controllers/DetectorController.cs | 115 +- .../Controllers/ReportsController.cs | 13 +- .../FMS Dashboard/Models/ApplicationRole.cs | 29 - server/FMS Dashboard/Models/DataModel.edmx | 2893 ----------------- .../Models/DataModel.edmx.diagram | 61 - server/FMS Dashboard/Models/Errors2017.cs | 27 - server/FMS Dashboard/Models/Errors2018.cs | 27 - server/FMS Dashboard/Models/Errors2019.cs | 27 - server/FMS Dashboard/Models/Errors2020.cs | 27 - server/FMS Dashboard/Models/Errors2021.cs | 27 - server/FMS Dashboard/Models/Errors2022.cs | 27 - server/FMS Dashboard/Models/LaneErrors2015.cs | 34 - server/FMS Dashboard/Models/LaneErrors2016.cs | 34 - server/FMS Dashboard/Models/LaneErrors2017.cs | 34 - server/FMS Dashboard/Models/LaneErrors2018.cs | 34 - server/FMS Dashboard/Models/LaneErrors2019.cs | 34 - server/FMS Dashboard/Models/LaneErrors2020.cs | 34 - server/FMS Dashboard/Models/LaneErrors2021.cs | 34 - server/FMS Dashboard/Models/LaneErrors2022.cs | 34 - ...DataModel.Context.cs => Model1.Context.cs} | 118 +- ...DataModel.Context.tt => Model1.Context.tt} | 2 +- ...taModel.Designer.cs => Model1.Designer.cs} | 2 +- .../Models/{DataModel.cs => Model1.cs} | 0 server/FMS Dashboard/Models/Model1.edmx | 1320 ++++++++ .../FMS Dashboard/Models/Model1.edmx.diagram | 33 + .../Models/{DataModel.tt => Model1.tt} | 2 +- server/FMS Dashboard/Models/RawData2015.cs | 29 - server/FMS Dashboard/Models/RawData2016.cs | 29 - server/FMS Dashboard/Models/RawData2017.cs | 29 - server/FMS Dashboard/Models/RawData2018.cs | 29 - server/FMS Dashboard/Models/RawData2019.cs | 29 - server/FMS Dashboard/Models/RawData2020.cs | 29 - server/FMS Dashboard/Models/RawData2021.cs | 29 - server/FMS Dashboard/Models/RawData2022.cs | 29 - ...=> ReturnAvgHourlyOccupancyData_Result.cs} | 12 +- ....cs => ReturnAvgHourlySpeedData_Result.cs} | 12 +- ...> ReturnAvgHourlyThroughputData_Result.cs} | 12 +- ...dor.cs => ReturnAvgVolumeByLane_Result.cs} | 8 +- .../Models/ReturnMiscDataReport_Result.cs | 21 + 45 files changed, 1573 insertions(+), 3753 deletions(-) create mode 100644 database/dbo.ReturnAvgHourlyOccupancyData.StoredProcedure.sql create mode 100644 database/dbo.ReturnAvgHourlySpeedData.StoredProcedure.sql create mode 100644 database/dbo.ReturnAvgHourlyThroughputData.StoredProcedure.sql create mode 100644 database/dbo.ReturnAvgVolumeByLane.StoredProcedure.sql create mode 100644 database/dbo.ReturnMiscDataReport.StoredProcedure.sql delete mode 100644 server/FMS Dashboard/Models/ApplicationRole.cs delete mode 100644 server/FMS Dashboard/Models/DataModel.edmx delete mode 100644 server/FMS Dashboard/Models/DataModel.edmx.diagram delete mode 100644 server/FMS Dashboard/Models/Errors2017.cs delete mode 100644 server/FMS Dashboard/Models/Errors2018.cs delete mode 100644 server/FMS Dashboard/Models/Errors2019.cs delete mode 100644 server/FMS Dashboard/Models/Errors2020.cs delete mode 100644 server/FMS Dashboard/Models/Errors2021.cs delete mode 100644 server/FMS Dashboard/Models/Errors2022.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2015.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2016.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2017.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2018.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2019.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2020.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2021.cs delete mode 100644 server/FMS Dashboard/Models/LaneErrors2022.cs rename server/FMS Dashboard/Models/{DataModel.Context.cs => Model1.Context.cs} (63%) rename server/FMS Dashboard/Models/{DataModel.Context.tt => Model1.Context.tt} (99%) rename server/FMS Dashboard/Models/{DataModel.Designer.cs => Model1.Designer.cs} (83%) rename server/FMS Dashboard/Models/{DataModel.cs => Model1.cs} (100%) create mode 100644 server/FMS Dashboard/Models/Model1.edmx create mode 100644 server/FMS Dashboard/Models/Model1.edmx.diagram rename server/FMS Dashboard/Models/{DataModel.tt => Model1.tt} (99%) delete mode 100644 server/FMS Dashboard/Models/RawData2015.cs delete mode 100644 server/FMS Dashboard/Models/RawData2016.cs delete mode 100644 server/FMS Dashboard/Models/RawData2017.cs delete mode 100644 server/FMS Dashboard/Models/RawData2018.cs delete mode 100644 server/FMS Dashboard/Models/RawData2019.cs delete mode 100644 server/FMS Dashboard/Models/RawData2020.cs delete mode 100644 server/FMS Dashboard/Models/RawData2021.cs delete mode 100644 server/FMS Dashboard/Models/RawData2022.cs rename server/FMS Dashboard/Models/{Errors2016.cs => ReturnAvgHourlyOccupancyData_Result.cs} (56%) rename server/FMS Dashboard/Models/{ApplicationUser.cs => ReturnAvgHourlySpeedData_Result.cs} (64%) rename server/FMS Dashboard/Models/{Errors2015.cs => ReturnAvgHourlyThroughputData_Result.cs} (56%) rename server/FMS Dashboard/Models/{newCorridor.cs => ReturnAvgVolumeByLane_Result.cs} (69%) create mode 100644 server/FMS Dashboard/Models/ReturnMiscDataReport_Result.cs diff --git a/database/dbo.ReturnAvgHourlyOccupancyData.StoredProcedure.sql b/database/dbo.ReturnAvgHourlyOccupancyData.StoredProcedure.sql new file mode 100644 index 0000000000000000000000000000000000000000..a75724a35676108f73969dbcc86aafa560e97ab1 GIT binary patch literal 3050 zcmeH}YflqF6o${&HSs^}w<1v~H6e;Iq0&l;&|^G3@aJs;o zgx$m{>@uEXXUp5`zbS-v<$Z* z79t0ZUT42;Evwt1?XdQ_ZE%{!C2+rkr-57*Pg+P-*ws02gX}i@<^oyi(es2A+p9ZU zxs5WIW_IfGv~Ce=7feU?1^ZQU&?hU8+1J3e51-GfuZ(QQ*G-pGWuymB*X1T)zY30e zN}w&|bL$njQ?ePdc7`7bS&6{u6pJakE}&ko9N7=GBA%P|vX7jqw+nTQo-_3J*{7UN z?3{Dvd=*_aHR3sUT6^qMDl+%-Zu787B~*z(l@ik@O{!*-eTDiF0B8qGSOoUzw zM8?D%J8Uwt9Ox-jAtIiT$vmeyUk?r4g*?(!raSb0O$=L9yzi3es+;OA&IVDcD|{cl zocfUB;ebc8M3&{RKWUx>&ri4;x$11YdC_upGCw6$yUKQgl&=EKAl(j#F=5|A_rz6; zkN*=ohYpvesW%alxj&vuopKY&Hk`lqH`h?MBd}S*lP(pfDxdfM5!$@Y+ak>Mc|D8b z&3QUbqq;P|i!j!Jh2+s`hhA^_&rf=9V(CK@JvmV(@9h@y&MNbz7C`T-oE@q|276Kfw;)xv z57XWe9yk3_?WuPUrZRQTC7v?R literal 0 HcmV?d00001 diff --git a/database/dbo.ReturnAvgHourlySpeedData.StoredProcedure.sql b/database/dbo.ReturnAvgHourlySpeedData.StoredProcedure.sql new file mode 100644 index 0000000000000000000000000000000000000000..3071f06657f82d5232f719bbd537c94ca778e34f GIT binary patch literal 2990 zcmeH}ZBNrs6vxlon)n_1Zb(GNOo(DksB{7WHXIMe7_yXY4s>pWbr8P1`upFzOUD>K z#9%^Vnzr|z=kq`3-1hso1KYEz#rDzO+PQVOE-kYw+kt*$kL{7ITiv}EZGPg4p&r|3 zA8*4a(s5v1QCQ%A2#Bu%tZRyFpUAiBxAF++F37NEYqw@Yz)9|?%& zcH-)?ViDI4Sf1M#{8z!e3&w@?nyZxX?!a$5rj(Zy!F96 z0)-RmG{n{!-06N$zl9EvOhy-Ukjq?Dv5PwNLyVQs5h1b+oe}g?ymeU**&W+g_PNWT z?ffd+461y|`jGA`V!z)StWo_c{ig1SnTZCSvc@{4XT&dCP{OV+<3Gg%XY8=Cm z2z%T*FXY+RLpz-rA@XDB=fvZ?p$omJyQr#e-%<6}`66nM-1@AWSi5q4;&J(et%1X1 zZX88~y&?`TrKz}$V20$c<18#Bb_gbOMAD|iim0EsTta_OXH@8Wy;=DcGA*nt{`fi@ z#eT`8sBXeczBO^{bem3?n3;`1B}kMUr}PKD;=L3ySy7r)119$>Z-N{Qi**S&xq=MJ0A6% zW^{k7Q)6G@PMFJ-_wqGHT{j^kW=1(&@qBoF7?6v`m}(zrBYMDpkCd6J=4U7H|NUtY x&SXvQ?_gb`YCi65z-X>gq2tb*u0P{sTfJxAOo1 literal 0 HcmV?d00001 diff --git a/database/dbo.ReturnAvgHourlyThroughputData.StoredProcedure.sql b/database/dbo.ReturnAvgHourlyThroughputData.StoredProcedure.sql new file mode 100644 index 0000000000000000000000000000000000000000..3b86c2888cb9de105951aafbb788c59955dfaa59 GIT binary patch literal 3158 zcmeH~ZBJ7{5QXP!P5ck{8!u5PH6e;Iq0$N{w8)z=hBT!u1uZRUZ!!FN^*OU$ZlM)5 zkr)!QxxKqPv$HdE=FElf-wtfg%9hwCdt-fTF}_;eu56qABYSL*Y~8Bsrw+t!*2~q}$>CeLHmv zL-tSYg8kG=c$V@U`EB9G23lvxQ}%+q<=!k=-WIK3%l?~Z_6&^|$nySMu;;9c#F>mm zHIKGpR!;U^USYmzHLKWxZ87%Pt+E==Ow@jlPL*?IJgIT2#H_-4liY4H-<@(+cJw@D zB=+jwMs`Qhb9w4Wtyqq+O-}pvh5O57yA3W+m~W6*EN4;MY#X1}dyv$wmx8jjjiBmib%zZiX zK^5HLQUB7-0U51SkoDZ% zc129L)Nq_*g@-<+YEFqleM?BJg26N%MxRz)Z=8R(?<$S@$`0>cI5uk^;9}X{k*T76 z95F|cP5Pti6La@RXDX}CD#S literal 0 HcmV?d00001 diff --git a/database/dbo.ReturnAvgVolumeByLane.StoredProcedure.sql b/database/dbo.ReturnAvgVolumeByLane.StoredProcedure.sql new file mode 100644 index 0000000000000000000000000000000000000000..6295478246ce8e499b8dec684f3f65c3097c536f GIT binary patch literal 1590 zcmbuAYi|-k7=_PQO#Bb?5gXGYCXJVvbYUry!cu9mF{U9~z=}a=+Lfk%UVYw~T|mHo z&}^2uyw`K)%<}7JUuSB_>9dY?t1-{LQaz}{{-vJkiJI#A@j!cPk7M^r-|!zQ(;G54 zA~MZ=mXS^w=h(&?>4)F58Y5!noM|Q^BJ*RYOJsFbVXDTZ&U9ooyB1e{>7n?_@si`s%U$M?X zf6eTMG1D_|x06l1?gH`&@egFp@K5!HXF^Yb$76psoqSc!$AGU5<~pc?X9?C*dfi{^ zW@Y(TY^w}saM%G?9Y!Pc*??oyOgXQ*Si3{ULj|-eyt~*aau*mkRkz@aFaUqb7;aqZ zZ=|6tVlVWb9)e~A`Uz*&MAN1?JG~iw+4-6dr#wZZo!E%|5cT*OJH5kmlf&JahMtE) zSN0Whe0xkm_xzfgEz@rG7d;($zjf7b){67nd&<~D17%&nLqjJp73q^#Wk9ywkDZF$ zm-9R(VO`~oxFa#+;gX}KS6|<=StF}kS{~Ed-|7YoRz1!0Z09d-lKI*D@2DWp4;(c~qInvS{^!Ly- zgp;!mvYFdnw3;p0l0EQujn!Qwmf_X>y=0HruVE*hh+!USMW_tyIlskv!`jxeeS6Kb z3w4X#WFDgQ8)UXP*Tj=Hry8tU>^I2d2J4-Yv(j^iC$*>7_7pbO$Zl?jp2rnScs9xH ziG9R=(*``5-DdrgoDPr+6$~iIozq2r>@`f$a*TxPE9oJ-jve`#ZQfllliDk2J=gz& z)ezYO-WhUz&tZtY4n2dP^G@M}l`ypI^$YJ%#Uh#p(!xkYz|cKXTzmK~{G=db7Im@} zaVD9cv6hmhvBxujJ7(9lPwaE|ukTuwwGLEi%2Q=~QXy}*9NYfhKr0;WlUZ+Ds zS0$I-*Ydcwh)P`)`tI?C55nLPKg}9h4t3B@c#NKRp`SQzLnOi5bE+kj4?ss7Egihf zSoQb@l&eF|N_Zju19Xl&FO>^#5;PY61gXR+)!+IyEgijC#J^koq_ukK<5DSAlWkV^ zUMcmyQ_F2WC_VA8l&a}DYje4js#%IPf&>d(%zsA(0+={Z(doAXIh0~rySKTnz{TTG2Iyfp3W1PTZI(~x!D zZ^DkIK-4pdoG=~!Ctoqfpy?b-%0tNU4n4Hae}O%^=c+7ej%w1xYAO%mM(DW5`UlkT IRs7fZ1FM*dh5!Hn literal 0 HcmV?d00001 diff --git a/server/FMS Dashboard/Controllers/CorridorsController.cs b/server/FMS Dashboard/Controllers/CorridorsController.cs index 2d39554..9aa562d 100644 --- a/server/FMS Dashboard/Controllers/CorridorsController.cs +++ b/server/FMS Dashboard/Controllers/CorridorsController.cs @@ -11,7 +11,7 @@ public class CorridorsController : Controller { public ActionResult AddNew(AddCorridorVM vm) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var corridor = new Corridor(); corridor.Description = vm.corridorDescription; @@ -32,6 +32,7 @@ public ActionResult AddNew(AddCorridorVM vm) } catch (Exception ex) { + Console.WriteLine(ex.Message, "New Corridor Processing failed."); throw; } } @@ -44,7 +45,7 @@ public ActionResult AddNew(AddCorridorVM vm) public ActionResult GetCorridorValidity() { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_Validity .Join(context.CorridorDetectors, @@ -68,7 +69,7 @@ public ActionResult GetCorridorValidity() public ActionResult GetCorridors() { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var corridors = context.Corridors.ToList(); diff --git a/server/FMS Dashboard/Controllers/DetectorController.cs b/server/FMS Dashboard/Controllers/DetectorController.cs index 4321337..626531a 100644 --- a/server/FMS Dashboard/Controllers/DetectorController.cs +++ b/server/FMS Dashboard/Controllers/DetectorController.cs @@ -40,7 +40,7 @@ public class DetectorController : Controller public JsonResult GetValidityData() { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_Validity.ToList(); return Json(data, JsonRequestBehavior.AllowGet); @@ -49,7 +49,7 @@ public JsonResult GetValidityData() public JsonResult GetValidity() { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_Validity.ToList(); return Json(data, JsonRequestBehavior.AllowGet); @@ -59,7 +59,7 @@ public JsonResult GetValidity() public JsonResult GetDetectors() { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { try { @@ -78,7 +78,7 @@ public JsonResult GetDetectors() public static Corridor GetCorridor(int corridor_id) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var detector = context.Corridors.Where(x => x.id == corridor_id).FirstOrDefault(); return detector; @@ -87,7 +87,7 @@ public static Corridor GetCorridor(int corridor_id) public static Detector GetDetector(int det_num) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var detector = context.Detectors.Where(x => x.det_num == det_num).FirstOrDefault(); return detector; @@ -96,7 +96,7 @@ public static Detector GetDetector(int det_num) //public JsonResult GetErrorData(int det_num, int year) //{ - // using (var context = new FreewayMSEntities()) + // using (var context = new FreewayMSEntities2()) // { // var data = context.vw_Errors.Where(x => x.detector_number == det_num && x.year == year) // .GroupBy(x => x.detector_number) @@ -160,7 +160,7 @@ public static Detector GetDetector(int det_num) public JsonResult AvgHourlySpeed(int det_num, int year) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgHourlySpeed.Where(x => x.detector_number == det_num && x.year == year).ToList(); return Json(data, JsonRequestBehavior.AllowGet); @@ -169,7 +169,7 @@ public JsonResult AvgHourlySpeed(int det_num, int year) public JsonResult DistributionDataPassingQualityControlCriteriaByDate(Guid? reportId, int? det_num, int? year) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { int detector_number = 0; @@ -208,7 +208,7 @@ public JsonResult DistributionDataPassingQualityControlCriteriaByDate(Guid? repo public JsonResult AnnualQualityControlFlagsByHourOfDay(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var report = context.GeneratedReports.Where(x => x.id == reportId).FirstOrDefault(); @@ -250,7 +250,7 @@ private bool isWeekday(DateTime? date) public JsonResult DistributionDataPassingQualityControlCriteriaByWeekday(Guid? reportId, int? year, int? det_num) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { int detector_number = 0; @@ -302,7 +302,7 @@ public JsonResult DistributionDataPassingQualityControlCriteriaByWeekday(Guid? r public JsonResult AvgHourlyOccupancyByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgHourlyOccupancy.Where(x => x.reportId == reportId).ToList(); return Json(data, JsonRequestBehavior.AllowGet); @@ -311,16 +311,27 @@ public JsonResult AvgHourlyOccupancyByReportId(Guid reportId) public JsonResult AvgHourlyOccupancyByDetNum(int det_num, int year) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgHourlyOccupancy.Where(x => x.detector_number == det_num && x.year == year).ToList(); return Json(data, JsonRequestBehavior.AllowGet); } } + public JsonResult AvgHourlyOccupancyByParams(int det_num, DateTime startDate, DateTime endDate) + { + using (var context = new FreewayMSEntities2()) + { + IEnumerable result = context.ReturnAvgHourlyOccupancyData(det_num, startDate, endDate); + // http://localhost:56118/Detector/AvgHourlyOccupancyByParams?det_num=573&startDate=2018-01-01&endDate=2019-01-01 + var data = result.ToList(); + return Json(data, JsonRequestBehavior.AllowGet); + } + } + public JsonResult GetMiscDetectorDataByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var report = context.GeneratedReports.Where(x => x.id == reportId).FirstOrDefault(); var existingLanes = context.vw_ExistingLanes.Where(x => x.detector_number == report.det_num && x.year == report.startDate.Year).FirstOrDefault(); @@ -333,9 +344,18 @@ public JsonResult GetMiscDetectorDataByReportId(Guid reportId) } } + public JsonResult GetMiscDetectorDataByParams(int det_num, int year) + { + using (var context = new FreewayMSEntities2()) + { + var existingLanes = context.vw_ExistingLanes.Where(x => x.detector_number == det_num && x.year == year).FirstOrDefault(); + return Json(new { existingLanes = existingLanes }, JsonRequestBehavior.AllowGet); + } + } + public JsonResult GetErrorDataByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { //if (year != null) //{ @@ -352,16 +372,9 @@ public JsonResult GetErrorDataByReportId(Guid reportId) } } - public string GetChartImage() - { - - - return "test"; - } - public JsonResult SpeedVsDensityByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { try { @@ -400,7 +413,7 @@ where SqlFunctions.DatePart("dw", e.collected) >= 2 && public JsonResult SpeedVsDensityByDetNum(int year, int det_num) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { try { @@ -428,7 +441,7 @@ where SqlFunctions.DatePart("dw", e.collected) >= 2 && public JsonResult FlowVsDensityByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { try { @@ -465,7 +478,7 @@ where SqlFunctions.DatePart("dw", e.collected) >= 2 && public JsonResult FlowVsDensityByDetNum(int year, int det_num) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { context.Database.CommandTimeout = 60; try @@ -496,7 +509,7 @@ where SqlFunctions.DatePart("dw", e.collected) >= 2 && public JsonResult SpeedVsFlowByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { try { @@ -537,7 +550,7 @@ where SqlFunctions.DatePart("dw", e.collected) >= 2 && public JsonResult AvgVolumeByLaneByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgVolumeByLane.Where(x => x.reportId == reportId).ToList(); return Json(data, JsonRequestBehavior.AllowGet); @@ -545,16 +558,27 @@ public JsonResult AvgVolumeByLaneByReportId(Guid reportId) } public JsonResult AvgVolumeByLaneByDetNum(int det_num, int year) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgVolumeByLane.Where(x => x.detector_number == det_num && x.year == year).ToList(); return Json(data, JsonRequestBehavior.AllowGet); } } + public JsonResult AvgVolumeByLaneByParams(int det_num, DateTime startDate, DateTime endDate) + { + using (var context = new FreewayMSEntities2()) + { + IEnumerable result = context.ReturnAvgVolumeByLane(det_num, startDate, endDate); + // http://localhost:56118/Detector/AvgVolumeByLaneByParams?det_num=573&startDate=2018-01-01&endDate=2019-01-01 + var data = result.ToList(); + return Json(data, JsonRequestBehavior.AllowGet); + } + } + public JsonResult AvgHourlySpeedByDetNum(int det_num, int year) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgHourlySpeed.Where(x => x.detector_number == det_num && x.year == year).ToList(); return Json(data, JsonRequestBehavior.AllowGet); @@ -563,16 +587,28 @@ public JsonResult AvgHourlySpeedByDetNum(int det_num, int year) public JsonResult AvgHourlySpeedByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgHourlySpeed.Where(x => x.reportId == reportId).ToList(); return Json(data, JsonRequestBehavior.AllowGet); } } + public JsonResult AvgHourlySpeedByParams(int det_num, DateTime startDate, DateTime endDate) + { + using (var context = new FreewayMSEntities2()) + { + IEnumerable result = context.ReturnAvgHourlySpeedData(det_num, startDate, endDate); + // var data = context.ReturnAvgHourlySpeedData.Where(x => x.detector_number == det_num && x.start_date == startDate && x.end_date == endDate).ToList(); + // http://localhost:56118/Detector/AvgHourlySpeedByParams?det_num=573&startDate=2018-01-01&endDate=2019-01-01 + var data = result.ToList(); + return Json(data, JsonRequestBehavior.AllowGet); + } + } + public JsonResult AvgHourlyThroughputByReportId(Guid reportId) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgHourlyThroughput.Where(x => x.reportId == reportId).ToList(); return Json(data, JsonRequestBehavior.AllowGet); @@ -581,16 +617,27 @@ public JsonResult AvgHourlyThroughputByReportId(Guid reportId) public JsonResult AvgHourlyThroughputByDetNum(int det_num, int year) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var data = context.detector_AvgHourlyThroughput.Where(x => x.detector_number == det_num && x.year == year).ToList(); return Json(data, JsonRequestBehavior.AllowGet); } } + public JsonResult AvgHourlyThroughputByParams(int det_num, DateTime startDate, DateTime endDate) + { + using (var context = new FreewayMSEntities2()) + { + IEnumerable result = context.ReturnAvgHourlyThroughputData(det_num, startDate, endDate); + // http://localhost:56118/Detector/AvgHourlyThroughputByParams?det_num=573&startDate=2018-01-01&endDate=2019-01-01 + var data = result.ToList(); + return Json(data, JsonRequestBehavior.AllowGet); + } + } + //public JsonResult GetLaneErrors(int det_num, int year) //{ - // using (var context = new FreewayMSEntities()) + // using (var context = new FreewayMSEntities2()) // { // var data = context.vw_LaneErrors.Where(x => x.detector_number == det_num && x.year == year).ToList(); // return Json(data, JsonRequestBehavior.AllowGet); @@ -598,7 +645,7 @@ public JsonResult AvgHourlyThroughputByDetNum(int det_num, int year) //} //public JsonResult GetErrors(int det_num, int year) //{ - // using (var context = new FreewayMSEntities()) + // using (var context = new FreewayMSEntities2()) // { // var data = context.vw_Errors.Where(x => x.detector_number == det_num && x.year == year).Take(10000).ToList(); // var jsonResult = Json(data, JsonRequestBehavior.AllowGet); diff --git a/server/FMS Dashboard/Controllers/ReportsController.cs b/server/FMS Dashboard/Controllers/ReportsController.cs index 9cb9fda..0180055 100644 --- a/server/FMS Dashboard/Controllers/ReportsController.cs +++ b/server/FMS Dashboard/Controllers/ReportsController.cs @@ -21,7 +21,7 @@ public class ReportsController : Controller public JsonResult GetGeneratedReports() { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { var query = context.GeneratedReports.GroupJoin( context.Detectors, @@ -89,7 +89,7 @@ public bool SendEmail(GeneratedReport report) public JsonResult AddGeneratedReport(GeneratedReport newReport) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { try { @@ -117,7 +117,7 @@ public JsonResult AddGeneratedReport(GeneratedReport newReport) public bool UpdateStatusToComplete(GeneratedReport report) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { context.Database.CommandTimeout = 180; @@ -132,6 +132,7 @@ public bool UpdateStatusToComplete(GeneratedReport report) } catch (Exception ex) { + Console.WriteLine(ex.Message, "Update Status to Complete Processing failed."); return false; } } @@ -145,7 +146,7 @@ class StartAndEndDates { public JsonResult DeleteGeneratedReport(Guid id) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { context.Database.CommandTimeout = 180; try @@ -164,6 +165,7 @@ public JsonResult DeleteGeneratedReport(Guid id) } catch (Exception ex) { + Console.WriteLine(ex.Message, "Delete Report Processing failed."); return Json(new { id = "Error!" }, JsonRequestBehavior.AllowGet); } } @@ -172,7 +174,7 @@ public JsonResult DeleteGeneratedReport(Guid id) public bool GenerateReportData(GeneratedReport newReport) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { context.Database.CommandTimeout = 180; @@ -186,6 +188,7 @@ public bool GenerateReportData(GeneratedReport newReport) } catch (Exception ex) { + Console.WriteLine(ex.Message, "New Report Processing failed."); return false; } } diff --git a/server/FMS Dashboard/Models/ApplicationRole.cs b/server/FMS Dashboard/Models/ApplicationRole.cs deleted file mode 100644 index 215c90b..0000000 --- a/server/FMS Dashboard/Models/ApplicationRole.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class ApplicationRole - { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] - public ApplicationRole() - { - this.ApplicationUsers = new HashSet(); - } - - public int id { get; set; } - public string name { get; set; } - - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] - public virtual ICollection ApplicationUsers { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/DataModel.edmx b/server/FMS Dashboard/Models/DataModel.edmx deleted file mode 100644 index 8b63047..0000000 --- a/server/FMS Dashboard/Models/DataModel.edmx +++ /dev/null @@ -1,2893 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SELECT - [Detectors].[ID] AS [ID], - [Detectors].[det_num] AS [det_num], - [Detectors].[Location] AS [Location], - [Detectors].[Route] AS [Route], - [Detectors].[Direction] AS [Direction], - [Detectors].[Milepost] AS [Milepost], - [Detectors].[GPS] AS [GPS], - [Detectors].[Type] AS [Type], - [Detectors].[Length_ft] AS [Length_ft], - [Detectors].[y] AS [y], - [Detectors].[x] AS [x], - [Detectors].[Segment] AS [Segment] - FROM [dbo].[Detectors] AS [Detectors] - - - SELECT - [newCorridors].[det_num] AS [det_num], - [newCorridors].[line_string] AS [line_string] - FROM [dbo].[newCorridors] AS [newCorridors] - - - SELECT - [RawData2018].[id] AS [id], - [RawData2018].[detector_number] AS [detector_number], - [RawData2018].[collected] AS [collected], - [RawData2018].[min_since] AS [min_since], - [RawData2018].[lane] AS [lane], - [RawData2018].[speed] AS [speed], - [RawData2018].[samples] AS [samples], - [RawData2018].[occupancy] AS [occupancy], - [RawData2018].[volume] AS [volume], - [RawData2018].[vph] AS [vph], - [RawData2018].[isGP] AS [isGP] - FROM [dbo].[RawData2018] AS [RawData2018] - - - SELECT - [vw_detector_AvgAnnualVolumeByLane].[detector_number] AS [detector_number], - [vw_detector_AvgAnnualVolumeByLane].[lane] AS [lane], - [vw_detector_AvgAnnualVolumeByLane].[year] AS [year], - [vw_detector_AvgAnnualVolumeByLane].[avg_annual_daily_traffic] AS [avg_annual_daily_traffic] - FROM [dbo].[vw_detector_AvgAnnualVolumeByLane] AS [vw_detector_AvgAnnualVolumeByLane] - - - SELECT - [vw_detector_AvgByLane].[id] AS [id], - [vw_detector_AvgByLane].[detector_number] AS [detector_number], - [vw_detector_AvgByLane].[lane] AS [lane], - [vw_detector_AvgByLane].[year] AS [year], - [vw_detector_AvgByLane].[avg_speed] AS [avg_speed], - [vw_detector_AvgByLane].[avg_volume] AS [avg_volume], - [vw_detector_AvgByLane].[avg_ADT] AS [avg_ADT] - FROM [dbo].[vw_detector_AvgByLane] AS [vw_detector_AvgByLane] - - - SELECT - [vw_detector_AvgHourlySpeed].[detector_number] AS [detector_number], - [vw_detector_AvgHourlySpeed].[avg_speed] AS [avg_speed], - [vw_detector_AvgHourlySpeed].[hour_in_day] AS [hour_in_day], - [vw_detector_AvgHourlySpeed].[lane_type] AS [lane_type], - [vw_detector_AvgHourlySpeed].[year] AS [year] - FROM [dbo].[vw_detector_AvgHourlySpeed] AS [vw_detector_AvgHourlySpeed] - - - SELECT - [vw_detector_AvgHourlyThroughput].[detector_number] AS [detector_number], - [vw_detector_AvgHourlyThroughput].[avg_throughput] AS [avg_throughput], - [vw_detector_AvgHourlyThroughput].[hour_in_day] AS [hour_in_day], - [vw_detector_AvgHourlyThroughput].[lane_type] AS [lane_type], - [vw_detector_AvgHourlyThroughput].[year] AS [year] - FROM [dbo].[vw_detector_AvgHourlyThroughput] AS [vw_detector_AvgHourlyThroughput] - - - SELECT - [vw_detector_MiscData].[Id] AS [Id], - [vw_detector_MiscData].[detector_number] AS [detector_number], - [vw_detector_MiscData].[num_days] AS [num_days], - [vw_detector_MiscData].[gp_lane_cnt] AS [gp_lane_cnt], - [vw_detector_MiscData].[hov_lane_cnt] AS [hov_lane_cnt], - [vw_detector_MiscData].[year] AS [year] - FROM [dbo].[vw_detector_MiscData] AS [vw_detector_MiscData] - - - SELECT - [vw_detector_Validity].[id] AS [id], - [vw_detector_Validity].[detector_number] AS [detector_number], - [vw_detector_Validity].[year] AS [year], - [vw_detector_Validity].[error] AS [error], - [vw_detector_Validity].[valid] AS [valid], - [vw_detector_Validity].[total] AS [total], - [vw_detector_Validity].[pct] AS [pct] - FROM [dbo].[vw_detector_Validity] AS [vw_detector_Validity] - - - SELECT - [vw_Errors].[year] AS [year], - [vw_Errors].[id] AS [id], - [vw_Errors].[detector_number] AS [detector_number], - [vw_Errors].[collected] AS [collected], - [vw_Errors].[min_since] AS [min_since], - [vw_Errors].[speed_error] AS [speed_error], - [vw_Errors].[volume_error] AS [volume_error], - [vw_Errors].[occupancy_error] AS [occupancy_error], - [vw_Errors].[difference_error] AS [difference_error], - [vw_Errors].[zeros_error] AS [zeros_error] - FROM [dbo].[vw_Errors] AS [vw_Errors] - - - SELECT - [vw_ExistingLanes].[year] AS [year], - [vw_ExistingLanes].[detector_number] AS [detector_number], - [vw_ExistingLanes].[lane1] AS [lane1], - [vw_ExistingLanes].[lane2] AS [lane2], - [vw_ExistingLanes].[lane3] AS [lane3], - [vw_ExistingLanes].[lane4] AS [lane4], - [vw_ExistingLanes].[lane5] AS [lane5], - [vw_ExistingLanes].[lane6] AS [lane6], - [vw_ExistingLanes].[lane7] AS [lane7], - [vw_ExistingLanes].[lane8] AS [lane8], - [vw_ExistingLanes].[lane9] AS [lane9], - [vw_ExistingLanes].[lane10] AS [lane10], - [vw_ExistingLanes].[HOV] AS [HOV], - [vw_ExistingLanes].[HOV2] AS [HOV2] - FROM [dbo].[vw_ExistingLanes] AS [vw_ExistingLanes] - - - SELECT - [vw_LaneErrors].[year] AS [year], - [vw_LaneErrors].[id] AS [id], - [vw_LaneErrors].[detector_number] AS [detector_number], - [vw_LaneErrors].[collected] AS [collected], - [vw_LaneErrors].[min_since] AS [min_since], - [vw_LaneErrors].[lane1] AS [lane1], - [vw_LaneErrors].[lane2] AS [lane2], - [vw_LaneErrors].[lane3] AS [lane3], - [vw_LaneErrors].[lane4] AS [lane4], - [vw_LaneErrors].[lane5] AS [lane5], - [vw_LaneErrors].[lane6] AS [lane6], - [vw_LaneErrors].[lane7] AS [lane7], - [vw_LaneErrors].[lane8] AS [lane8], - [vw_LaneErrors].[lane9] AS [lane9], - [vw_LaneErrors].[lane10] AS [lane10], - [vw_LaneErrors].[HOV] AS [HOV], - [vw_LaneErrors].[HOV2] AS [HOV2] - FROM [dbo].[vw_LaneErrors] AS [vw_LaneErrors] - - - SELECT - [vw_RawData].[year] AS [year], - [vw_RawData].[id] AS [id], - [vw_RawData].[detector_number] AS [detector_number], - [vw_RawData].[collected] AS [collected], - [vw_RawData].[min_since] AS [min_since], - [vw_RawData].[lane] AS [lane], - [vw_RawData].[speed] AS [speed], - [vw_RawData].[samples] AS [samples], - [vw_RawData].[occupancy] AS [occupancy], - [vw_RawData].[volume] AS [volume], - [vw_RawData].[vph] AS [vph], - [vw_RawData].[isGP] AS [isGP] - FROM [dbo].[vw_RawData] AS [vw_RawData] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/FMS Dashboard/Models/DataModel.edmx.diagram b/server/FMS Dashboard/Models/DataModel.edmx.diagram deleted file mode 100644 index 2b2609d..0000000 --- a/server/FMS Dashboard/Models/DataModel.edmx.diagram +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/FMS Dashboard/Models/Errors2017.cs b/server/FMS Dashboard/Models/Errors2017.cs deleted file mode 100644 index 3fce38a..0000000 --- a/server/FMS Dashboard/Models/Errors2017.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class Errors2017 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/Errors2018.cs b/server/FMS Dashboard/Models/Errors2018.cs deleted file mode 100644 index 82e0e74..0000000 --- a/server/FMS Dashboard/Models/Errors2018.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class Errors2018 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/Errors2019.cs b/server/FMS Dashboard/Models/Errors2019.cs deleted file mode 100644 index bd340b3..0000000 --- a/server/FMS Dashboard/Models/Errors2019.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class Errors2019 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/Errors2020.cs b/server/FMS Dashboard/Models/Errors2020.cs deleted file mode 100644 index 9e172a4..0000000 --- a/server/FMS Dashboard/Models/Errors2020.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class Errors2020 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/Errors2021.cs b/server/FMS Dashboard/Models/Errors2021.cs deleted file mode 100644 index f192495..0000000 --- a/server/FMS Dashboard/Models/Errors2021.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class Errors2021 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/Errors2022.cs b/server/FMS Dashboard/Models/Errors2022.cs deleted file mode 100644 index 68e4504..0000000 --- a/server/FMS Dashboard/Models/Errors2022.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class Errors2022 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2015.cs b/server/FMS Dashboard/Models/LaneErrors2015.cs deleted file mode 100644 index a9fef89..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2015.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2015 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2016.cs b/server/FMS Dashboard/Models/LaneErrors2016.cs deleted file mode 100644 index 6d92bb1..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2016.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2016 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2017.cs b/server/FMS Dashboard/Models/LaneErrors2017.cs deleted file mode 100644 index d5ff70c..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2017.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2017 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2018.cs b/server/FMS Dashboard/Models/LaneErrors2018.cs deleted file mode 100644 index 1017ee1..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2018.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2018 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2019.cs b/server/FMS Dashboard/Models/LaneErrors2019.cs deleted file mode 100644 index 17a9276..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2019.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2019 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2020.cs b/server/FMS Dashboard/Models/LaneErrors2020.cs deleted file mode 100644 index a96a7e4..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2020.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2020 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2021.cs b/server/FMS Dashboard/Models/LaneErrors2021.cs deleted file mode 100644 index a96deda..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2021.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2021 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/LaneErrors2022.cs b/server/FMS Dashboard/Models/LaneErrors2022.cs deleted file mode 100644 index fa64c95..0000000 --- a/server/FMS Dashboard/Models/LaneErrors2022.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class LaneErrors2022 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public Nullable lane1 { get; set; } - public Nullable lane2 { get; set; } - public Nullable lane3 { get; set; } - public Nullable lane4 { get; set; } - public Nullable lane5 { get; set; } - public Nullable lane6 { get; set; } - public Nullable lane7 { get; set; } - public Nullable lane8 { get; set; } - public Nullable lane9 { get; set; } - public Nullable lane10 { get; set; } - public Nullable HOV { get; set; } - public Nullable HOV2 { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/DataModel.Context.cs b/server/FMS Dashboard/Models/Model1.Context.cs similarity index 63% rename from server/FMS Dashboard/Models/DataModel.Context.cs rename to server/FMS Dashboard/Models/Model1.Context.cs index c2a287b..84857ac 100644 --- a/server/FMS Dashboard/Models/DataModel.Context.cs +++ b/server/FMS Dashboard/Models/Model1.Context.cs @@ -15,10 +15,10 @@ namespace FMS_Dashboard.Models using System.Data.Entity.Core.Objects; using System.Linq; - public partial class FreewayMSEntities : DbContext + public partial class FreewayMSEntities2 : DbContext { - public FreewayMSEntities() - : base("name=FreewayMSEntities") + public FreewayMSEntities2() + : base("name=FreewayMSEntities2") { } @@ -27,8 +27,6 @@ protected override void OnModelCreating(DbModelBuilder modelBuilder) throw new UnintentionalCodeFirstException(); } - public virtual DbSet ApplicationRoles { get; set; } - public virtual DbSet ApplicationUsers { get; set; } public virtual DbSet CorridorDetectors { get; set; } public virtual DbSet Corridors { get; set; } public virtual DbSet detector_AvgByLane { get; set; } @@ -39,33 +37,8 @@ protected override void OnModelCreating(DbModelBuilder modelBuilder) public virtual DbSet detector_MiscData { get; set; } public virtual DbSet detector_SpeedVsFlow { get; set; } public virtual DbSet detector_Validity { get; set; } - public virtual DbSet Errors2015 { get; set; } - public virtual DbSet Errors2016 { get; set; } - public virtual DbSet Errors2017 { get; set; } - public virtual DbSet Errors2018 { get; set; } - public virtual DbSet Errors2019 { get; set; } - public virtual DbSet Errors2020 { get; set; } - public virtual DbSet Errors2021 { get; set; } - public virtual DbSet Errors2022 { get; set; } public virtual DbSet GeneratedReports { get; set; } - public virtual DbSet LaneErrors2015 { get; set; } - public virtual DbSet LaneErrors2016 { get; set; } - public virtual DbSet LaneErrors2017 { get; set; } - public virtual DbSet LaneErrors2018 { get; set; } - public virtual DbSet LaneErrors2019 { get; set; } - public virtual DbSet LaneErrors2020 { get; set; } - public virtual DbSet LaneErrors2021 { get; set; } - public virtual DbSet LaneErrors2022 { get; set; } - public virtual DbSet RawData2015 { get; set; } - public virtual DbSet RawData2016 { get; set; } - public virtual DbSet RawData2017 { get; set; } - public virtual DbSet RawData2019 { get; set; } - public virtual DbSet RawData2020 { get; set; } - public virtual DbSet RawData2021 { get; set; } - public virtual DbSet RawData2022 { get; set; } public virtual DbSet Detectors { get; set; } - public virtual DbSet newCorridors { get; set; } - public virtual DbSet RawData2018 { get; set; } public virtual DbSet vw_detector_AvgAnnualVolumeByLane { get; set; } public virtual DbSet vw_detector_AvgByLane { get; set; } public virtual DbSet vw_detector_AvgHourlySpeed { get; set; } @@ -77,6 +50,23 @@ protected override void OnModelCreating(DbModelBuilder modelBuilder) public virtual DbSet vw_LaneErrors { get; set; } public virtual DbSet vw_RawData { get; set; } + public virtual ObjectResult ReturnAvgHourlySpeedData(Nullable det_num, Nullable start_date, Nullable end_date) + { + var det_numParameter = det_num.HasValue ? + new ObjectParameter("det_num", det_num) : + new ObjectParameter("det_num", typeof(int)); + + var start_dateParameter = start_date.HasValue ? + new ObjectParameter("start_date", start_date) : + new ObjectParameter("start_date", typeof(System.DateTime)); + + var end_dateParameter = end_date.HasValue ? + new ObjectParameter("end_date", end_date) : + new ObjectParameter("end_date", typeof(System.DateTime)); + + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("ReturnAvgHourlySpeedData", det_numParameter, start_dateParameter, end_dateParameter); + } + public virtual int GenerateAvgHourlyOccupancyData(Nullable report_id, Nullable det_num, Nullable start_date, Nullable end_date) { var report_idParameter = report_id.HasValue ? @@ -185,5 +175,73 @@ public virtual int GenerateMiscDataReport(Nullable report_id, Nulla return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("GenerateMiscDataReport", report_idParameter, det_numParameter, start_dateParameter, end_dateParameter, isPeriod1Parameter); } + + public virtual ObjectResult ReturnAvgHourlyOccupancyData(Nullable det_num, Nullable start_date, Nullable end_date) + { + var det_numParameter = det_num.HasValue ? + new ObjectParameter("det_num", det_num) : + new ObjectParameter("det_num", typeof(int)); + + var start_dateParameter = start_date.HasValue ? + new ObjectParameter("start_date", start_date) : + new ObjectParameter("start_date", typeof(System.DateTime)); + + var end_dateParameter = end_date.HasValue ? + new ObjectParameter("end_date", end_date) : + new ObjectParameter("end_date", typeof(System.DateTime)); + + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("ReturnAvgHourlyOccupancyData", det_numParameter, start_dateParameter, end_dateParameter); + } + + public virtual ObjectResult ReturnAvgHourlyThroughputData(Nullable det_num, Nullable start_date, Nullable end_date) + { + var det_numParameter = det_num.HasValue ? + new ObjectParameter("det_num", det_num) : + new ObjectParameter("det_num", typeof(int)); + + var start_dateParameter = start_date.HasValue ? + new ObjectParameter("start_date", start_date) : + new ObjectParameter("start_date", typeof(System.DateTime)); + + var end_dateParameter = end_date.HasValue ? + new ObjectParameter("end_date", end_date) : + new ObjectParameter("end_date", typeof(System.DateTime)); + + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("ReturnAvgHourlyThroughputData", det_numParameter, start_dateParameter, end_dateParameter); + } + + public virtual ObjectResult ReturnAvgVolumeByLane(Nullable det_num, Nullable start_date, Nullable end_date) + { + var det_numParameter = det_num.HasValue ? + new ObjectParameter("det_num", det_num) : + new ObjectParameter("det_num", typeof(int)); + + var start_dateParameter = start_date.HasValue ? + new ObjectParameter("start_date", start_date) : + new ObjectParameter("start_date", typeof(System.DateTime)); + + var end_dateParameter = end_date.HasValue ? + new ObjectParameter("end_date", end_date) : + new ObjectParameter("end_date", typeof(System.DateTime)); + + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("ReturnAvgVolumeByLane", det_numParameter, start_dateParameter, end_dateParameter); + } + + public virtual ObjectResult ReturnMiscDataReport(Nullable det_num, Nullable start_date, Nullable end_date) + { + var det_numParameter = det_num.HasValue ? + new ObjectParameter("det_num", det_num) : + new ObjectParameter("det_num", typeof(int)); + + var start_dateParameter = start_date.HasValue ? + new ObjectParameter("start_date", start_date) : + new ObjectParameter("start_date", typeof(System.DateTime)); + + var end_dateParameter = end_date.HasValue ? + new ObjectParameter("end_date", end_date) : + new ObjectParameter("end_date", typeof(System.DateTime)); + + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("ReturnMiscDataReport", det_numParameter, start_dateParameter, end_dateParameter); + } } } diff --git a/server/FMS Dashboard/Models/DataModel.Context.tt b/server/FMS Dashboard/Models/Model1.Context.tt similarity index 99% rename from server/FMS Dashboard/Models/DataModel.Context.tt rename to server/FMS Dashboard/Models/Model1.Context.tt index 4811b5a..7b8920f 100644 --- a/server/FMS Dashboard/Models/DataModel.Context.tt +++ b/server/FMS Dashboard/Models/Model1.Context.tt @@ -2,7 +2,7 @@ <#@ include file="EF6.Utility.CS.ttinclude"#><#@ output extension=".cs"#><# -const string inputFile = @"DataModel.edmx"; +const string inputFile = @"Model1.edmx"; var textTransform = DynamicTextTransformation.Create(this); var code = new CodeGenerationTools(this); var ef = new MetadataTools(this); diff --git a/server/FMS Dashboard/Models/DataModel.Designer.cs b/server/FMS Dashboard/Models/Model1.Designer.cs similarity index 83% rename from server/FMS Dashboard/Models/DataModel.Designer.cs rename to server/FMS Dashboard/Models/Model1.Designer.cs index b58af12..a59cf83 100644 --- a/server/FMS Dashboard/Models/DataModel.Designer.cs +++ b/server/FMS Dashboard/Models/Model1.Designer.cs @@ -1,4 +1,4 @@ -// T4 code generation is enabled for model 'C:\Projects\.net\Transportation\FMS\server\FMS Dashboard\Models\DataModel.edmx'. +// T4 code generation is enabled for model 'C:\Workspace\FMS\server\FMS Dashboard\Models\Model1.edmx'. // To enable legacy code generation, change the value of the 'Code Generation Strategy' designer // property to 'Legacy ObjectContext'. This property is available in the Properties Window when the model // is open in the designer. diff --git a/server/FMS Dashboard/Models/DataModel.cs b/server/FMS Dashboard/Models/Model1.cs similarity index 100% rename from server/FMS Dashboard/Models/DataModel.cs rename to server/FMS Dashboard/Models/Model1.cs diff --git a/server/FMS Dashboard/Models/Model1.edmx b/server/FMS Dashboard/Models/Model1.edmx new file mode 100644 index 0000000..665cb8e --- /dev/null +++ b/server/FMS Dashboard/Models/Model1.edmx @@ -0,0 +1,1320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT + [Detectors].[ID] AS [ID], + [Detectors].[det_num] AS [det_num], + [Detectors].[Location] AS [Location], + [Detectors].[Route] AS [Route], + [Detectors].[Direction] AS [Direction], + [Detectors].[Milepost] AS [Milepost], + [Detectors].[GPS] AS [GPS], + [Detectors].[Type] AS [Type], + [Detectors].[Length_ft] AS [Length_ft], + [Detectors].[y] AS [y], + [Detectors].[x] AS [x], + [Detectors].[Segment] AS [Segment] + FROM [dbo].[Detectors] AS [Detectors] + + + SELECT + [vw_detector_AvgAnnualVolumeByLane].[detector_number] AS [detector_number], + [vw_detector_AvgAnnualVolumeByLane].[lane] AS [lane], + [vw_detector_AvgAnnualVolumeByLane].[year] AS [year], + [vw_detector_AvgAnnualVolumeByLane].[avg_annual_daily_traffic] AS [avg_annual_daily_traffic] + FROM [dbo].[vw_detector_AvgAnnualVolumeByLane] AS [vw_detector_AvgAnnualVolumeByLane] + + + SELECT + [vw_detector_AvgByLane].[id] AS [id], + [vw_detector_AvgByLane].[detector_number] AS [detector_number], + [vw_detector_AvgByLane].[lane] AS [lane], + [vw_detector_AvgByLane].[year] AS [year], + [vw_detector_AvgByLane].[avg_speed] AS [avg_speed], + [vw_detector_AvgByLane].[avg_volume] AS [avg_volume], + [vw_detector_AvgByLane].[avg_ADT] AS [avg_ADT] + FROM [dbo].[vw_detector_AvgByLane] AS [vw_detector_AvgByLane] + + + SELECT + [vw_detector_AvgHourlySpeed].[detector_number] AS [detector_number], + [vw_detector_AvgHourlySpeed].[avg_speed] AS [avg_speed], + [vw_detector_AvgHourlySpeed].[hour_in_day] AS [hour_in_day], + [vw_detector_AvgHourlySpeed].[lane_type] AS [lane_type], + [vw_detector_AvgHourlySpeed].[year] AS [year] + FROM [dbo].[vw_detector_AvgHourlySpeed] AS [vw_detector_AvgHourlySpeed] + + + SELECT + [vw_detector_AvgHourlyThroughput].[detector_number] AS [detector_number], + [vw_detector_AvgHourlyThroughput].[avg_throughput] AS [avg_throughput], + [vw_detector_AvgHourlyThroughput].[hour_in_day] AS [hour_in_day], + [vw_detector_AvgHourlyThroughput].[lane_type] AS [lane_type], + [vw_detector_AvgHourlyThroughput].[year] AS [year] + FROM [dbo].[vw_detector_AvgHourlyThroughput] AS [vw_detector_AvgHourlyThroughput] + + + SELECT + [vw_detector_MiscData].[Id] AS [Id], + [vw_detector_MiscData].[detector_number] AS [detector_number], + [vw_detector_MiscData].[num_days] AS [num_days], + [vw_detector_MiscData].[gp_lane_cnt] AS [gp_lane_cnt], + [vw_detector_MiscData].[hov_lane_cnt] AS [hov_lane_cnt], + [vw_detector_MiscData].[year] AS [year] + FROM [dbo].[vw_detector_MiscData] AS [vw_detector_MiscData] + + + SELECT + [vw_detector_Validity].[id] AS [id], + [vw_detector_Validity].[detector_number] AS [detector_number], + [vw_detector_Validity].[year] AS [year], + [vw_detector_Validity].[error] AS [error], + [vw_detector_Validity].[valid] AS [valid], + [vw_detector_Validity].[total] AS [total], + [vw_detector_Validity].[pct] AS [pct] + FROM [dbo].[vw_detector_Validity] AS [vw_detector_Validity] + + + SELECT + [vw_Errors].[year] AS [year], + [vw_Errors].[id] AS [id], + [vw_Errors].[detector_number] AS [detector_number], + [vw_Errors].[collected] AS [collected], + [vw_Errors].[min_since] AS [min_since], + [vw_Errors].[speed_error] AS [speed_error], + [vw_Errors].[volume_error] AS [volume_error], + [vw_Errors].[occupancy_error] AS [occupancy_error], + [vw_Errors].[difference_error] AS [difference_error], + [vw_Errors].[zeros_error] AS [zeros_error] + FROM [dbo].[vw_Errors] AS [vw_Errors] + + + SELECT + [vw_ExistingLanes].[year] AS [year], + [vw_ExistingLanes].[detector_number] AS [detector_number], + [vw_ExistingLanes].[lane1] AS [lane1], + [vw_ExistingLanes].[lane2] AS [lane2], + [vw_ExistingLanes].[lane3] AS [lane3], + [vw_ExistingLanes].[lane4] AS [lane4], + [vw_ExistingLanes].[lane5] AS [lane5], + [vw_ExistingLanes].[lane6] AS [lane6], + [vw_ExistingLanes].[lane7] AS [lane7], + [vw_ExistingLanes].[lane8] AS [lane8], + [vw_ExistingLanes].[lane9] AS [lane9], + [vw_ExistingLanes].[lane10] AS [lane10], + [vw_ExistingLanes].[HOV] AS [HOV], + [vw_ExistingLanes].[HOV2] AS [HOV2] + FROM [dbo].[vw_ExistingLanes] AS [vw_ExistingLanes] + + + SELECT + [vw_LaneErrors].[year] AS [year], + [vw_LaneErrors].[id] AS [id], + [vw_LaneErrors].[detector_number] AS [detector_number], + [vw_LaneErrors].[collected] AS [collected], + [vw_LaneErrors].[min_since] AS [min_since], + [vw_LaneErrors].[lane1] AS [lane1], + [vw_LaneErrors].[lane2] AS [lane2], + [vw_LaneErrors].[lane3] AS [lane3], + [vw_LaneErrors].[lane4] AS [lane4], + [vw_LaneErrors].[lane5] AS [lane5], + [vw_LaneErrors].[lane6] AS [lane6], + [vw_LaneErrors].[lane7] AS [lane7], + [vw_LaneErrors].[lane8] AS [lane8], + [vw_LaneErrors].[lane9] AS [lane9], + [vw_LaneErrors].[lane10] AS [lane10], + [vw_LaneErrors].[HOV] AS [HOV], + [vw_LaneErrors].[HOV2] AS [HOV2] + FROM [dbo].[vw_LaneErrors] AS [vw_LaneErrors] + + + SELECT + [vw_RawData].[year] AS [year], + [vw_RawData].[id] AS [id], + [vw_RawData].[detector_number] AS [detector_number], + [vw_RawData].[collected] AS [collected], + [vw_RawData].[min_since] AS [min_since], + [vw_RawData].[lane] AS [lane], + [vw_RawData].[speed] AS [speed], + [vw_RawData].[samples] AS [samples], + [vw_RawData].[occupancy] AS [occupancy], + [vw_RawData].[volume] AS [volume], + [vw_RawData].[vph] AS [vph], + [vw_RawData].[isGP] AS [isGP] + FROM [dbo].[vw_RawData] AS [vw_RawData] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/FMS Dashboard/Models/Model1.edmx.diagram b/server/FMS Dashboard/Models/Model1.edmx.diagram new file mode 100644 index 0000000..4a5eed1 --- /dev/null +++ b/server/FMS Dashboard/Models/Model1.edmx.diagram @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/FMS Dashboard/Models/DataModel.tt b/server/FMS Dashboard/Models/Model1.tt similarity index 99% rename from server/FMS Dashboard/Models/DataModel.tt rename to server/FMS Dashboard/Models/Model1.tt index feac9cb..b0e43c7 100644 --- a/server/FMS Dashboard/Models/DataModel.tt +++ b/server/FMS Dashboard/Models/Model1.tt @@ -2,7 +2,7 @@ <#@ include file="EF6.Utility.CS.ttinclude"#><#@ output extension=".cs"#><# -const string inputFile = @"DataModel.edmx"; +const string inputFile = @"Model1.edmx"; var textTransform = DynamicTextTransformation.Create(this); var code = new CodeGenerationTools(this); var ef = new MetadataTools(this); diff --git a/server/FMS Dashboard/Models/RawData2015.cs b/server/FMS Dashboard/Models/RawData2015.cs deleted file mode 100644 index ae7e8f4..0000000 --- a/server/FMS Dashboard/Models/RawData2015.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2015 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/RawData2016.cs b/server/FMS Dashboard/Models/RawData2016.cs deleted file mode 100644 index 9c9fed0..0000000 --- a/server/FMS Dashboard/Models/RawData2016.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2016 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/RawData2017.cs b/server/FMS Dashboard/Models/RawData2017.cs deleted file mode 100644 index 7ef2a3e..0000000 --- a/server/FMS Dashboard/Models/RawData2017.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2017 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/RawData2018.cs b/server/FMS Dashboard/Models/RawData2018.cs deleted file mode 100644 index 0607c7f..0000000 --- a/server/FMS Dashboard/Models/RawData2018.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2018 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/RawData2019.cs b/server/FMS Dashboard/Models/RawData2019.cs deleted file mode 100644 index df278a9..0000000 --- a/server/FMS Dashboard/Models/RawData2019.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2019 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/RawData2020.cs b/server/FMS Dashboard/Models/RawData2020.cs deleted file mode 100644 index 83d2732..0000000 --- a/server/FMS Dashboard/Models/RawData2020.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2020 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/RawData2021.cs b/server/FMS Dashboard/Models/RawData2021.cs deleted file mode 100644 index 88fb63d..0000000 --- a/server/FMS Dashboard/Models/RawData2021.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2021 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/RawData2022.cs b/server/FMS Dashboard/Models/RawData2022.cs deleted file mode 100644 index 3c95681..0000000 --- a/server/FMS Dashboard/Models/RawData2022.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FMS_Dashboard.Models -{ - using System; - using System.Collections.Generic; - - public partial class RawData2022 - { - public int id { get; set; } - public Nullable detector_number { get; set; } - public Nullable collected { get; set; } - public Nullable min_since { get; set; } - public string lane { get; set; } - public Nullable speed { get; set; } - public Nullable samples { get; set; } - public Nullable occupancy { get; set; } - public Nullable volume { get; set; } - public Nullable vph { get; set; } - public Nullable isGP { get; set; } - } -} diff --git a/server/FMS Dashboard/Models/Errors2016.cs b/server/FMS Dashboard/Models/ReturnAvgHourlyOccupancyData_Result.cs similarity index 56% rename from server/FMS Dashboard/Models/Errors2016.cs rename to server/FMS Dashboard/Models/ReturnAvgHourlyOccupancyData_Result.cs index e12e638..64f5661 100644 --- a/server/FMS Dashboard/Models/Errors2016.cs +++ b/server/FMS Dashboard/Models/ReturnAvgHourlyOccupancyData_Result.cs @@ -10,18 +10,12 @@ namespace FMS_Dashboard.Models { using System; - using System.Collections.Generic; - public partial class Errors2016 + public partial class ReturnAvgHourlyOccupancyData_Result { - public int id { get; set; } public Nullable detector_number { get; set; } - public Nullable collected { get; set; } + public Nullable avg_occupancy { get; set; } public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } + public string lane_type { get; set; } } } diff --git a/server/FMS Dashboard/Models/ApplicationUser.cs b/server/FMS Dashboard/Models/ReturnAvgHourlySpeedData_Result.cs similarity index 64% rename from server/FMS Dashboard/Models/ApplicationUser.cs rename to server/FMS Dashboard/Models/ReturnAvgHourlySpeedData_Result.cs index fcb3563..02a255b 100644 --- a/server/FMS Dashboard/Models/ApplicationUser.cs +++ b/server/FMS Dashboard/Models/ReturnAvgHourlySpeedData_Result.cs @@ -10,14 +10,12 @@ namespace FMS_Dashboard.Models { using System; - using System.Collections.Generic; - public partial class ApplicationUser + public partial class ReturnAvgHourlySpeedData_Result { - public int id { get; set; } - public string domainName { get; set; } - public int RoleId { get; set; } - - public virtual ApplicationRole ApplicationRole { get; set; } + public Nullable detector_number { get; set; } + public Nullable avg_speed { get; set; } + public Nullable min_since { get; set; } + public string lane_type { get; set; } } } diff --git a/server/FMS Dashboard/Models/Errors2015.cs b/server/FMS Dashboard/Models/ReturnAvgHourlyThroughputData_Result.cs similarity index 56% rename from server/FMS Dashboard/Models/Errors2015.cs rename to server/FMS Dashboard/Models/ReturnAvgHourlyThroughputData_Result.cs index 13a860a..afe62b6 100644 --- a/server/FMS Dashboard/Models/Errors2015.cs +++ b/server/FMS Dashboard/Models/ReturnAvgHourlyThroughputData_Result.cs @@ -10,18 +10,12 @@ namespace FMS_Dashboard.Models { using System; - using System.Collections.Generic; - public partial class Errors2015 + public partial class ReturnAvgHourlyThroughputData_Result { - public int id { get; set; } public Nullable detector_number { get; set; } - public Nullable collected { get; set; } + public Nullable avg_throughput { get; set; } public Nullable min_since { get; set; } - public Nullable speed_error { get; set; } - public Nullable volume_error { get; set; } - public Nullable occupancy_error { get; set; } - public Nullable difference_error { get; set; } - public Nullable zeros_error { get; set; } + public string lane_type { get; set; } } } diff --git a/server/FMS Dashboard/Models/newCorridor.cs b/server/FMS Dashboard/Models/ReturnAvgVolumeByLane_Result.cs similarity index 69% rename from server/FMS Dashboard/Models/newCorridor.cs rename to server/FMS Dashboard/Models/ReturnAvgVolumeByLane_Result.cs index 6f5e161..ef2a359 100644 --- a/server/FMS Dashboard/Models/newCorridor.cs +++ b/server/FMS Dashboard/Models/ReturnAvgVolumeByLane_Result.cs @@ -10,11 +10,11 @@ namespace FMS_Dashboard.Models { using System; - using System.Collections.Generic; - public partial class newCorridor + public partial class ReturnAvgVolumeByLane_Result { - public string det_num { get; set; } - public string line_string { get; set; } + public Nullable detector_number { get; set; } + public string lane { get; set; } + public Nullable avg_daily_traffic { get; set; } } } diff --git a/server/FMS Dashboard/Models/ReturnMiscDataReport_Result.cs b/server/FMS Dashboard/Models/ReturnMiscDataReport_Result.cs new file mode 100644 index 0000000..cabe962 --- /dev/null +++ b/server/FMS Dashboard/Models/ReturnMiscDataReport_Result.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// This code was generated from a template. +// +// Manual changes to this file may cause unexpected behavior in your application. +// Manual changes to this file will be overwritten if the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace FMS_Dashboard.Models +{ + using System; + + public partial class ReturnMiscDataReport_Result + { + public Nullable detector_number { get; set; } + public int num_days { get; set; } + public Nullable gp_lane_cnt { get; set; } + public Nullable hov_lane_cnt { get; set; } + } +} From 7696cc0fba66ab86e33acf3d2cf389ce831a826c Mon Sep 17 00:00:00 2001 From: markegge Date: Thu, 26 Oct 2023 10:02:40 -0700 Subject: [PATCH 02/13] adding visual studio files --- server/FMS Dashboard/FMS Dashboard.csproj | 178 +++++++--------------- server/FMS Dashboard/Global.asax.cs | 2 +- server/FMS Dashboard/Web.config | 130 ++++++++-------- 3 files changed, 123 insertions(+), 187 deletions(-) diff --git a/server/FMS Dashboard/FMS Dashboard.csproj b/server/FMS Dashboard/FMS Dashboard.csproj index c3690e2..52fbd1a 100644 --- a/server/FMS Dashboard/FMS Dashboard.csproj +++ b/server/FMS Dashboard/FMS Dashboard.csproj @@ -239,10 +239,6 @@ True ..\packages\WebGrease.1.6.0\lib\WebGrease.dll - - True - ..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll - @@ -261,182 +257,116 @@ Global.asax - - DataModel.tt - - - DataModel.tt - - DataModel.tt + Model1.tt - DataModel.tt - - - True - True - DataModel.Context.tt - - - True - True - DataModel.tt - - - True - True - DataModel.edmx + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt + Model1.tt - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt + Model1.tt - - DataModel.tt - - - DataModel.tt - - - DataModel.tt - - - DataModel.tt + + True + True + Model1.Context.tt - - DataModel.tt + + True + True + Model1.tt - - DataModel.tt + + True + True + Model1.edmx - - DataModel.tt + + Model1.tt - - DataModel.tt + + Model1.tt - - DataModel.tt + + Model1.tt - - DataModel.tt + + Model1.tt - - DataModel.tt + + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - DataModel.tt + Model1.tt - + TextTemplatingFileGenerator - DataModel.edmx - DataModel.Context.cs + Model1.edmx + Model1.Context.cs - + TextTemplatingFileGenerator - DataModel.edmx - DataModel.cs + Model1.edmx + Model1.cs @@ -450,12 +380,12 @@ - + EntityModelCodeGenerator - DataModel.Designer.cs + Model1.Designer.cs - - DataModel.edmx + + Model1.edmx diff --git a/server/FMS Dashboard/Global.asax.cs b/server/FMS Dashboard/Global.asax.cs index 7d87d81..7f15378 100644 --- a/server/FMS Dashboard/Global.asax.cs +++ b/server/FMS Dashboard/Global.asax.cs @@ -54,7 +54,7 @@ protected void Application_BeginRequest(Object sender, EventArgs e) private string GetRoleByDomainName(string name) { - using (var context = new FreewayMSEntities()) + using (var context = new FreewayMSEntities2()) { //var currentUser = context.ApplicationUsers.Where(x => x.domainName == name.Replace("AZMAG\\", "")).FirstOrDefault(); //if (currentUser == null) diff --git a/server/FMS Dashboard/Web.config b/server/FMS Dashboard/Web.config index 0728838..59442d5 100644 --- a/server/FMS Dashboard/Web.config +++ b/server/FMS Dashboard/Web.config @@ -6,20 +6,20 @@ -
+
- + - - - - + + + + - - + + - + - + - + - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - + - - + + - + - + - + + + From 70bb7a1bffda5dea7d000dae26282d7ecf64a9e4 Mon Sep 17 00:00:00 2001 From: Chapman Munn Date: Fri, 3 Nov 2023 06:47:24 -0700 Subject: [PATCH 03/13] Working on transition from precanned reports. --- ...23e997d8-ddae-4851-936e-3ad926779e49.vsidx | Bin 0 -> 2456 bytes ...4f6adebd-24d8-4c03-970c-40c2ead06e11.vsidx | Bin 0 -> 107 bytes ...7cc99247-c278-440e-ab76-bdb14dece472.vsidx | Bin 0 -> 702839 bytes ...8aee3480-7606-4ccb-8393-2a4a7bd8cb79.vsidx | Bin 0 -> 70120 bytes .vs/FMS/v17/.wsuo | Bin 0 -> 14336 bytes .vs/slnx.sqlite | Bin 90112 -> 507904 bytes Information.txt | 2 ++ client/src/App.jsx | 5 +++- client/src/Header.jsx | 5 +++- .../ReportBuilder/ReportTypeToggle.jsx | 1 + .../components/ReportBuilder/SubmitButton.jsx | 2 +- .../SubmitButtonDirectReport.jsx | 28 ++++++++++++++++++ client/src/pages/Detector.jsx | 3 ++ client/src/pages/ReportBuilder.jsx | 7 +++-- deleteme.txt | 8 +++++ 15 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 .vs/FMS/FileContentIndex/23e997d8-ddae-4851-936e-3ad926779e49.vsidx create mode 100644 .vs/FMS/FileContentIndex/4f6adebd-24d8-4c03-970c-40c2ead06e11.vsidx create mode 100644 .vs/FMS/FileContentIndex/7cc99247-c278-440e-ab76-bdb14dece472.vsidx create mode 100644 .vs/FMS/FileContentIndex/8aee3480-7606-4ccb-8393-2a4a7bd8cb79.vsidx create mode 100644 .vs/FMS/v17/.wsuo create mode 100644 Information.txt create mode 100644 client/src/components/ReportBuilder/SubmitButtonDirectReport.jsx create mode 100644 deleteme.txt diff --git a/.vs/FMS/FileContentIndex/23e997d8-ddae-4851-936e-3ad926779e49.vsidx b/.vs/FMS/FileContentIndex/23e997d8-ddae-4851-936e-3ad926779e49.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..397d88dd84b2f288b4000ddfb7352abe1a17e5b8 GIT binary patch literal 2456 zcmYk7=Ux**6vYR{Ua=m&q*0`I5NRo}&4T#2q7#kp{vA2k*FX0DX$QSUl58^p@ zPV!?nd;WLs+_`gSW*34mw|db$*I450I_Tl{fi11wMyloU!_fs#TVY@be(3eu z?wV$AAq#0?;)#0DcVgV{sN}B7e8-A=F3uQqeVQ9t6Wi7ZkQPpfl#_ z#4I6%7gE{P0c|}PVK&c?K8BJDL~NzC7m3Wle!ef{QgNBMTwEcp6uZP#;%ae?xK>;z zt`|3m8^ulHW^s$SRoo_S7k7v|#gy1B?h<#4dqjQ!T;D!%zj#38hr<3t;$iWKcvS2W zkBPnFaq)zBQamM|7SD)h#dG3$u}{1pUKB5hm&GgMRWU7I69X|6Gh$ZEiTz?;yesQ6H zF*PEaTjD~VsK}G02V0C38Z0cW+XNT5}OUG7DR#6@I8$)RTkYEAg literal 0 HcmV?d00001 diff --git a/.vs/FMS/FileContentIndex/7cc99247-c278-440e-ab76-bdb14dece472.vsidx b/.vs/FMS/FileContentIndex/7cc99247-c278-440e-ab76-bdb14dece472.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..54e5580a32736d30bc12a1f947c67b772a85520c GIT binary patch literal 702839 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%0D&v7T341ERL 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%0DYbo&kHLJH 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
dQfPs{Sz>T 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