Exemple #1
0
        public async Task <ActionResult <Flights> > Get([FromQuery] string relative_To)
        {
            string urlRequest = Request.QueryString.Value;
            IEnumerable <Flights> flightList = new List <Flights>();
            // The pattern we asked for.
            string patternAndSync     = @"^?relative_to=(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z+(&sync_all)$";
            string patternWithoutSync = @"^?relative_to=(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$";

            // Check if the givven dateTime in relative_to is availible.
            if (!CheckObjects.CheckDateTime(relative_To))
            {
                return(BadRequest());
            }
            if (Regex.IsMatch(urlRequest, patternAndSync))
            {
                flightList = await flightManager.GetFlightsByDateTimeAndSync(relative_To);
            }
            else if (Regex.IsMatch(urlRequest, patternWithoutSync))
            {
                flightList = flightManager.GetFlightsByDateTime(relative_To);
            }
            else
            {
                return(BadRequest());
            }
            if (flightList == null)
            {
                return(NotFound(flightList));
            }
            return(Ok(flightList));
        }
Exemple #2
0
        public ActionResult Post([FromBody] FlightPlan flightPlan)
        {
            if (!CheckObjects.CheckFlightPlan(flightPlan))
            {
                return(BadRequest());
            }
            string idOfAddedFlightPlan = flightPlanManager.AddFlightPlan(flightPlan);

            return(CreatedAtAction(actionName: "GetFlightPlan",
                                   new { id = idOfAddedFlightPlan }, flightPlan));
        }
Exemple #3
0
        public ActionResult Post([FromBody] Server server)
        {
            if (!CheckObjects.CheckProperServer(server))
            {
                return(BadRequest());
            }
            string idOfAddedServer = serverManager.AddServer(server);

            if (idOfAddedServer == null)
            {
                return(NotFound(idOfAddedServer));
            }
            return(Ok(idOfAddedServer));
        }
Exemple #4
0
        // Function that returns FlightPlan according to the given id.
        public async Task <FlightPlan> GetFlightPlanById(string id)
        {
            // Take the line from FlightPlanSQL which the Id equals to id.
            object[] lineFlightPlanSQL = GetLineInformationFromSQLWithCommand(
                "SELECT * FROM FlightPlanSQL WHERE Id=\"" + id + "\"");
            // If this id is not exist then return null. Otherwise, set a FlightPlan.
            if (lineFlightPlanSQL != null)
            {
                return(SetFlightPlanByListObjects(lineFlightPlanSQL, id));
            }
            List <Server> listOfExternalServers = GetExternalServers();

            if (listOfExternalServers == null)
            {
                return(null);
            }
            int i = 0;

            for (; i < listOfExternalServers.Count; ++i)
            {
                mutexOfFlightsFromServer.WaitOne();
                object[] idFlightFromExternalServer = GetLineInformationFromSQLWithCommand(
                    "SELECT IdFlight FROM FlightsFromExternalServersSQL WHERE IdFlight=\"" +
                    id + "\"");
                mutexOfFlightsFromServer.ReleaseMutex();
                if (idFlightFromExternalServer == null)
                {
                    continue;
                }
                string url = GetUrlWithoutSlashInTheEnd(listOfExternalServers[i].ServerURL);
                url += "/api/FlightPlan/" + id;
                FlightPlan flightPlanFromExternalServer =
                    await GetGenericFromAnotherServer <FlightPlan>(url);

                if (!CheckObjects.CheckFlightPlan(flightPlanFromExternalServer))
                {
                    continue;
                }
                if (flightPlanFromExternalServer != null)
                {
                    return(flightPlanFromExternalServer);
                }
            }
            return(null);
        }
Exemple #5
0
        // Adding flightPlan to our SQL tables, and returns the id.
        public string AddFlightPlan(FlightPlan flightPlan)
        {
            // Check if the givven flightplan is proper.
            if (!CheckObjects.CheckFlightPlan(flightPlan))
            {
                return(null);
            }
            OpenConnection();
            // Random id.
            string id = SetRandId();
            bool   succeedToAddToFlightPlanSQL, succeedToAddToSegmentSQL;
            bool   succeedToAddToInitialLocationSQL;

            // Check if add to FlightPlanSQL table succeed.
            succeedToAddToFlightPlanSQL = AddToFlightPlanTable(flightPlan, id);
            if (!succeedToAddToFlightPlanSQL)
            {
                CloseConnection();
                return(null);
            }
            // Check if add to InitialLocationSQL table succeed.
            succeedToAddToInitialLocationSQL = AddToInitialLocationTable(flightPlan, id);
            if (!succeedToAddToInitialLocationSQL)
            {
                CloseConnection();
                return(null);
            }
            // Check if add to SegmentSQL table succeed.
            succeedToAddToSegmentSQL = AddListToSegmentTable(flightPlan.Segments, id);
            if (!succeedToAddToSegmentSQL)
            {
                CloseConnection();
                return(null);
            }
            CloseConnection();
            return(id);
        }
Exemple #6
0
        // Function that deletes and creates a table in the name of ServerId and
        // Updates the fields.
        private void CreateOrDeleteSQLFlightFromOtherServer(List <Flights> flightsFromOtherServer,
                                                            string idOfServer)
        {
            mutexOfFlightsFromServer.WaitOne();
            DeleteLineFromTable("DELETE FROM FlightsFromExternalServersSQL WHERE ServerId=\"" +
                                idOfServer + "\"");
            if (flightsFromOtherServer == null)
            {
                mutexOfFlightsFromServer.ReleaseMutex();
                return;
            }
            int i = 0;

            for (; i < flightsFromOtherServer.Count; ++i)
            {
                if (!CheckObjects.CheckFlights(flightsFromOtherServer[i]))
                {
                    continue;
                }
                AddFlightIdToFlightsFromExternalServersSQL(
                    flightsFromOtherServer[i].FlightId, idOfServer);
            }
            mutexOfFlightsFromServer.ReleaseMutex();
        }