Compare commits
3 Commits
eff67b7697
...
main
Author | SHA1 | Date | |
---|---|---|---|
e783f8c614 | |||
c418188481 | |||
ec5ca51602 |
@ -23,18 +23,17 @@ namespace EFB.Controllers
|
||||
public IActionResult Index()
|
||||
{
|
||||
//Check to see what point on the application the user is at and where they should be sent
|
||||
UserModel User = HttpContext.Session.GetObject<UserModel>("User");
|
||||
if (User != null)
|
||||
UserModel user = HttpContext.Session.GetObject<UserModel>("User");
|
||||
if (user == null)
|
||||
{
|
||||
if (User.Route == null)
|
||||
{
|
||||
return RedirectToAction("Index", "Route");
|
||||
}else{
|
||||
return RedirectToAction("Index", "App");
|
||||
}
|
||||
}else{
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
if (user.Route == null)
|
||||
{
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
|
||||
return View(user);
|
||||
}
|
||||
|
||||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||
|
@ -26,10 +26,16 @@ namespace EFB.Controllers
|
||||
{
|
||||
//Retrieve and Check current user status
|
||||
UserModel user = HttpContext.Session.GetObject<UserModel>("User");
|
||||
if(user == null) return RedirectToAction("Index", "Home");
|
||||
if(user == null){
|
||||
TempData["Error"] = "You must be logged in before you are able to view the FlightSim Page";
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
|
||||
//Retrieve the user's latest sim position and construct it into FlightsimModel
|
||||
if (user.Route == null) return RedirectToAction("Index", "Route");
|
||||
if (user.Route == null){
|
||||
TempData["Error"] = "You must have a route planned before you are able to view the Flightsim page";
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
|
||||
SimPositionModel latestPositionModel = await Mongo.GetLatestData(user.EMail);
|
||||
|
||||
|
@ -46,10 +46,16 @@ namespace EFB.Controllers
|
||||
public async Task<IActionResult> New(string departure, string arrival, string cruise)
|
||||
{
|
||||
UserModel user = HttpContext.Session.GetObject<UserModel>("User");
|
||||
if (!(user == null || user.UserToken.IsExpired()))
|
||||
if (user == null || user.UserToken.IsExpired())
|
||||
{//If the user is still authenticated
|
||||
if (FormAuthenticator.ValidateICAOCode(departure) && FormAuthenticator.ValidateICAOCode(arrival))
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
|
||||
if (!FormAuthenticator.ValidateICAOCode(departure) || !FormAuthenticator.ValidateICAOCode(arrival))
|
||||
{//If the user has entered valid ICAOs
|
||||
TempData["Error"] = "Invalid Departure or Arrival ICAO";
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
|
||||
uint cruiseAlt;
|
||||
|
||||
@ -99,24 +105,23 @@ namespace EFB.Controllers
|
||||
TempData["Departure"] = departure;
|
||||
TempData["Arrival"] = arrival;
|
||||
return RedirectToAction("Index", "Route");
|
||||
|
||||
}
|
||||
TempData["Error"] = "Invalid Departure or Arrival ICAO";
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
|
||||
|
||||
public async Task<IActionResult> Poll(string departure, string arrival, uint cruise)
|
||||
{
|
||||
if (HttpContext.Session.GetString("User") != null)
|
||||
{//If the user is currently logged in
|
||||
if (HttpContext.Session.GetString("User") == null)
|
||||
{//If the user is not currently logged in
|
||||
TempData["Error"] = "Please login before trying to plan a route";
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
|
||||
UserModel user = HttpContext.Session.GetObject<UserModel>("User");
|
||||
|
||||
if (user.RouteToken != null)
|
||||
if (user.RouteToken == null)
|
||||
{//If the user has a route object (e.g, they have been to the route page)
|
||||
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
//Make calls to the server to fetch route
|
||||
bool collected = false;
|
||||
int pollCount = 0;
|
||||
@ -180,23 +185,11 @@ namespace EFB.Controllers
|
||||
user.Cruise = cruise;
|
||||
HttpContext.Session.SetObject("User", user);
|
||||
|
||||
return RedirectToAction("Index", "Route");
|
||||
return RedirectToAction("Index", "App");
|
||||
}
|
||||
|
||||
TempData["Error"] = $"Unable to get route after {pollCount} Attempts!";
|
||||
return RedirectToAction("Index", "Route");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return RedirectToAction("Index", "Route");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -31,8 +31,12 @@ namespace EFB.Controllers
|
||||
|
||||
public async Task<IActionResult> Login(string email, string password){
|
||||
|
||||
if (Form.FormAuthenticator.ValidateEMail(email))
|
||||
if (!Form.FormAuthenticator.ValidateEMail(email))
|
||||
{
|
||||
TempData["Error"] = "Please enter a valid E-Mail";
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
|
||||
//API Helper
|
||||
APIInterface API = new APIInterface();
|
||||
|
||||
@ -55,14 +59,18 @@ namespace EFB.Controllers
|
||||
TempData["Error"] = response.Error;
|
||||
TempData["email"] = email;
|
||||
return RedirectToAction("Index", "Home");
|
||||
}else{
|
||||
|
||||
}
|
||||
//Type cast required but we know response will be of known type
|
||||
LoginResponse login = response.Result;
|
||||
|
||||
//Generate User Session
|
||||
if (login.error == null)
|
||||
if (login.error != null)
|
||||
{
|
||||
TempData["Error"] = login.error_description;
|
||||
TempData["email"] = email;
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
|
||||
UserModel user = new UserModel{
|
||||
EMail = email,
|
||||
UserToken = new TokenModel{
|
||||
@ -74,19 +82,6 @@ namespace EFB.Controllers
|
||||
//Using Session Extensions (Store the user session)
|
||||
HttpContext.Session.SetObject("User", user);
|
||||
return RedirectToAction("Index", "App");
|
||||
}else{
|
||||
TempData["Error"] = login.error_description;
|
||||
TempData["email"] = email;
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}else{
|
||||
TempData["Error"] = "Please enter a valid E-Mail";
|
||||
return RedirectToAction("Index", "Home");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -7,5 +7,6 @@
|
||||
<PackageReference Include="MySql.Data" Version="*"/>
|
||||
<PackageReference Include="MongoDB.Driver" Version="*"/>
|
||||
<PackageReference Include="MongoDB.Bson" Version="*"/>
|
||||
<PackageReference Include="libmetar" Version="*"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
32
Metar/Metar.cs
Normal file
32
Metar/Metar.cs
Normal file
@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using libmetar.Services;
|
||||
|
||||
namespace EFB.Metar
|
||||
{
|
||||
public static class Metar
|
||||
{
|
||||
private static MetarService metarService { get; set; } = new MetarService();
|
||||
private static TafService tafService { get; set; } = new TafService();
|
||||
|
||||
|
||||
public static async Task<string> GetMETAR(string ICAO){
|
||||
return (await metarService.GetRawAsync(ICAO)).Raw;
|
||||
}
|
||||
|
||||
public static async Task<List<string>> GetTAF(string ICAO){
|
||||
var downloadedTAF = (await tafService.GetRawAsync(ICAO)).RawSplit;
|
||||
List<string> TAF = new List<string>();
|
||||
|
||||
foreach (var line in downloadedTAF)
|
||||
{
|
||||
TAF.Add(line);
|
||||
}
|
||||
return TAF;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
48
Views/App/Index.cshtml
Normal file
48
Views/App/Index.cshtml
Normal file
@ -0,0 +1,48 @@
|
||||
@using EFB.Metar;
|
||||
@model EFB.Models.UserModel;
|
||||
@{
|
||||
ViewData["Title"] = "Welcome";
|
||||
}
|
||||
|
||||
<div class="row d-flex">
|
||||
<div class="card-body col-md-12 bg-primary">
|
||||
<div class="container jumbotron">
|
||||
<h3>Current Session - @Model.EMail</h3>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
|
||||
<div class="row d-flex">
|
||||
<div class="col-md-6">
|
||||
<h4>Departure</h4>
|
||||
@Model.Departure
|
||||
|
||||
<br />
|
||||
|
||||
@await Metar.GetMETAR(Model.Departure)
|
||||
|
||||
<h4>Cruise</h4>
|
||||
@Model.Cruise ft
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h4>Arrival</h4>
|
||||
@Model.Arrival
|
||||
|
||||
<br />
|
||||
|
||||
@await Metar.GetMETAR(Model.Arrival)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<h4>Route</h4>
|
||||
@Model.Route
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
@using Newtonsoft.Json;
|
||||
@using EFB.Metar;
|
||||
@model EFB.Models.ViewChartModel;
|
||||
@{
|
||||
ViewData["Title"] = "Welcome";
|
||||
@ -80,6 +81,10 @@
|
||||
</div>
|
||||
</form>
|
||||
}
|
||||
|
||||
<br />
|
||||
<h4>Current Weather</h4>
|
||||
@await Metar.GetMETAR(@Model.Charts.ICAO);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -99,4 +104,6 @@
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
Reference in New Issue
Block a user