示例#1
0
        public async Task <IHttpActionResult> PutFlightState(int id, FlightStateDTO flightStateDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != flightStateDto.Id)
            {
                return(BadRequest());
            }
            FlightState flightState = Mapper.Map <FlightState>(flightStateDto);

            db.Entry(flightState).State = System.Data.Entity.EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FlightStateExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task<IHttpActionResult> PutFlightState(int id, FlightStateDTO flightStateDto)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != flightStateDto.Id)
            {
                return BadRequest();
            }
            FlightState flightState = Mapper.Map<FlightState>(flightStateDto);
            db.Entry(flightState).State = System.Data.Entity.EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FlightStateExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
示例#3
0
        public void Edit(FlightStateDTO flightStateDTO)
        {
            var state = _airplaneContext.FlightStates.FirstOrDefault(c => c.Id == flightStateDTO.ID);

            if (state != null)
            {
                state.Name = flightStateDTO.Name;
                _airplaneContext.SaveChanges();
            }
        }
示例#4
0
        public Guid Add(FlightStateDTO flightStateDTO)
        {
            FlightState state = new FlightState {
                Name = flightStateDTO.Name
            };

            _airplaneContext.FlightStates.Add(state);
            _airplaneContext.SaveChanges();
            return(state.Id);
        }
        public async Task<IHttpActionResult> GetFlightState(int id)
        {
            FlightState flightState = await db.FlightStates.FindAsync(id);
            if (flightState == null)
            {
                return NotFound();
            }

            FlightStateDTO dto = new FlightStateDTO();
            dto.buildDTO(flightState);

            return Ok(dto);
        }
示例#6
0
        public async Task <IHttpActionResult> GetFlightState(int id)
        {
            FlightState flightState = await db.FlightStates.FindAsync(id);

            if (flightState == null)
            {
                return(NotFound());
            }

            FlightStateDTO dto = new FlightStateDTO();

            dto.buildDTO(flightState);

            return(Ok(dto));
        }
示例#7
0
        public async Task PushFlightStateUpdate(FlightStateDTO dto){
            Clients.All.flightStateUpdate(dto);
            //await TrespassChecker.ReportTrespassIfNecesarry(dto.UAVId, dto.Latitude, dto.Longitude);
            var eventHub = GlobalHost.ConnectionManager.GetHubContext<EventLogHub>();
            UAV uav = db.UAVs.FirstOrDefault(x => x.Id == dto.Id);
            double lat = Math.Round(dto.Latitude * 10000) / 10000;
            double lon = Math.Round(dto.Longitude * 10000) / 10000;

            var mis = from ms in db.Missions
                      where ms.ScheduleId == uav.Id
                      select ms;

            //look up the uav
            bool areaList = (areaWarning.Where(u => u.Id == uav.Id).Count()) > 0;
            bool batteryList = (batteryWarning.Where(u => u.Id == uav.Id).Count()) > 0 ;
            if (!areaList)
            {
                bool check = db.MapRestrictedSet.Where(
                    u => u.SouthWestLatitude < mis.FirstOrDefault().Latitude &&
                        u.NorthEastLatitude > mis.FirstOrDefault().Latitude &&
                        u.SouthWestLongitude < mis.FirstOrDefault().Longitude &&
                        u.NorthEastLongitude > mis.FirstOrDefault().Longitude
                    ).Count() > 0;
                if (check)
                {
                    areaWarning.Add(uav);

                    EventLog evt = new EventLog();
                    evt.event_id = events;
                    evt.uav_id = uav.Id;
                    evt.uav_callsign = uav.Callsign;
                    evt.criticality = "critical";
                    evt.message = "Delivery is in restricted area";
                    evt.create_date = DateTime.Now;
                    evt.modified_date = DateTime.Now;
                    //wtf seriously? -- why is this in here twice...
                    evt.UAVId = uav.Id;
                    evt.operator_screen_name = "jimbob";
                    eventHub.Clients.All.newEvent(evt);

                    db.EventLogs.Add(evt);
                    events++;

                }
            }

            //it's not in the battery list
            if( !batteryList ) {
                if (dto.BatteryLevel < .2)
                {
                    //add list -- stops from sending warning everytime
                    batteryWarning.Add(uav);

                    EventLog evt = new EventLog();
                        evt.event_id = events;
                        evt.uav_id = uav.Id;
                        evt.uav_callsign = uav.Callsign;
                        evt.criticality = "critical";
                        evt.message = "Low Battery";
                        evt.create_date = DateTime.Now;
                        evt.modified_date = DateTime.Now;
                        //wtf seriously? -- why is this in here twice...
                        evt.UAVId = uav.Id;
                        evt.operator_screen_name = "jimbob";
                        eventHub.Clients.All.newEvent(evt);

                    db.EventLogs.Add(evt);
                    events++;

                }
            }

            try
            {
                db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }
            
            // flightstatedto entity is not the same as models in our db context. can not guarantee atomic. need to wipe out flightstatedto
        }
示例#8
0
        public async Task PushFlightStateUpdate(FlightStateDTO dto)
        {
            Clients.All.flightStateUpdate(dto);
            //await TrespassChecker.ReportTrespassIfNecesarry(dto.UAVId, dto.Latitude, dto.Longitude);
            var    eventHub = GlobalHost.ConnectionManager.GetHubContext <EventLogHub>();
            UAV    uav      = db.UAVs.FirstOrDefault(x => x.Id == dto.Id);
            double lat      = Math.Round(dto.Latitude * 10000) / 10000;
            double lon      = Math.Round(dto.Longitude * 10000) / 10000;

            var mis = from ms in db.Missions
                      where ms.ScheduleId == uav.Id
                      select ms;

            //look up the uav
            bool areaList    = (areaWarning.Where(u => u.Id == uav.Id).Count()) > 0;
            bool batteryList = (batteryWarning.Where(u => u.Id == uav.Id).Count()) > 0;

            if (!areaList)
            {
                bool check = db.MapRestrictedSet.Where(
                    u => u.SouthWestLatitude <mis.FirstOrDefault().Latitude&&
                                              u.NorthEastLatitude> mis.FirstOrDefault().Latitude&&
                    u.SouthWestLongitude <mis.FirstOrDefault().Longitude&&
                                          u.NorthEastLongitude> mis.FirstOrDefault().Longitude
                    ).Count() > 0;
                if (check)
                {
                    areaWarning.Add(uav);

                    EventLog evt = new EventLog();
                    evt.event_id      = events;
                    evt.uav_id        = uav.Id;
                    evt.uav_callsign  = uav.Callsign;
                    evt.criticality   = "critical";
                    evt.message       = "Delivery is in restricted area";
                    evt.create_date   = DateTime.Now;
                    evt.modified_date = DateTime.Now;
                    //wtf seriously? -- why is this in here twice...
                    evt.UAVId = uav.Id;
                    evt.operator_screen_name = "jimbob";
                    eventHub.Clients.All.newEvent(evt);

                    db.EventLogs.Add(evt);
                    events++;
                }
            }

            //it's not in the battery list
            if (!batteryList)
            {
                if (dto.BatteryLevel < .2)
                {
                    //add list -- stops from sending warning everytime
                    batteryWarning.Add(uav);

                    EventLog evt = new EventLog();
                    evt.event_id      = events;
                    evt.uav_id        = uav.Id;
                    evt.uav_callsign  = uav.Callsign;
                    evt.criticality   = "critical";
                    evt.message       = "Low Battery";
                    evt.create_date   = DateTime.Now;
                    evt.modified_date = DateTime.Now;
                    //wtf seriously? -- why is this in here twice...
                    evt.UAVId = uav.Id;
                    evt.operator_screen_name = "jimbob";
                    eventHub.Clients.All.newEvent(evt);

                    db.EventLogs.Add(evt);
                    events++;
                }
            }

            try
            {
                db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }

            // flightstatedto entity is not the same as models in our db context. can not guarantee atomic. need to wipe out flightstatedto
        }