{"id":22830994,"url":"https://github.com/eyalgolan/flightcontrol","last_synced_at":"2025-05-06T18:45:58.792Z","repository":{"id":80018404,"uuid":"259970153","full_name":"eyalgolan/FlightControl","owner":"eyalgolan","description":"Advanced Programming 2 course, Flight control web application","archived":false,"fork":false,"pushed_at":"2020-06-05T11:07:36.000Z","size":22595,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-31T01:42:19.950Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eyalgolan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-29T15:49:20.000Z","updated_at":"2020-07-03T22:52:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"a63b889b-abe5-49fa-bcc8-44ac1ed97dae","html_url":"https://github.com/eyalgolan/FlightControl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyalgolan%2FFlightControl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyalgolan%2FFlightControl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyalgolan%2FFlightControl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyalgolan%2FFlightControl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eyalgolan","download_url":"https://codeload.github.com/eyalgolan/FlightControl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252748089,"owners_count":21798257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-12T20:16:18.559Z","updated_at":"2025-05-06T18:45:58.767Z","avatar_url":"https://github.com/eyalgolan.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FlightControl\nAdvanced programming 2 course, flight control web application\n\nCreated by: Almog Lev, Eyal Golan, Sapir Deutscher and Ofir Netzer.\n\n## Preview\n\nA flight control RESTful web application.\n\nWe built our frontend using Javascript, JQuery, bootstrap, html and css. \n\nThe backend was built using C#, ASP.NET Core, and Entity Framework (with in-memory SQL DB). We created a RESTful API using WebAPI.\nFor unit testing we used Moq.\n\nThe web application features a flight control system that shows active flights, enables adding new flight plans and shows details about each flight. Upon clicking on a flight, its path is shown on the map.\n\n![WebApplicationFlightControl](img/WebApplicationFlightControl.JPG)\n\n## Program explanation\n\n### API\n\nThe api supports the following actions:\n\nAction | Path | Description\n------ | --------- | ----------\nGET | /api/Flights?relative_to=\u003cDATE_TIME\u003e | Returns all the internal flights active in DATE_TIME\nGET | /api/Flights?relative_to=\u003cDATE_TIME\u003e\u0026sync_all | Returns all flights (internal and external) active in DATE_TIME\nPOST | /api/FlightPlan | Adds a new flight plan\nGET | /api/FlightPlan/{id} | Returns the flight plan with the given id\nDELETE | /api/Flights/{id} | Deletes the flight with the given id\nGET | /api/servers | Returns all the external servers that provide flight data to the application\nPOST | /api/servers | Adds a new external server\nDELETE | /api/servers/{id} | Deletes the server with the given Id from the external servers list\n\n### Adding Flights\n\nThe user can add a flight by dragging a flight plan json file into the drag and drop area.\n\nThe structure of a flight plan json is as follows:\n\n```\n{\n  \"passengers\": 257,\n  \"company_name\": \"ISRAIR\",\n  \"initial_location\": {\n    \"longitude\": 21.239979,\n    \"latitude\": 32.026706,\n    \"date_time\": \"2020-06-03T13:30:00Z\"\n  },\n  \"segments\": [\n    {\n      \"longitude\": 23.240702,\n      \"latitude\": 34.921971,\n      \"timespan_seconds\": 1000\n    },\n    {\n      \"longitude\": 21.346370,\n      \"latitude\": 39.419221,\n      \"timespan_seconds\": 2000\n    }\n  ]\n}\n```\n\n### Interacting with external servers\n\nThe application can also connect with external servers and show their flights:\n\nThe following image shows two seperate sites. Each site has its own internal server. The site on the left has the internal server of the site on the right as its external server. Simillary, the right site has the internal server of the left site as its external server. \n\n![InteractingWithExternalServers](img/InteractingWithExternalServers.jpg)\n\n### DB structure\n\nWe use an in-memory SQL DB that contains several tables. We use seperate tables for internal and external flights to make our queries more efficient.\n\nThe database structure is as follows:\n\n![DBStructure](img/DBStructure.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feyalgolan%2Fflightcontrol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feyalgolan%2Fflightcontrol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feyalgolan%2Fflightcontrol/lists"}