/// <summary>
        /// Creates or updates a mission
        /// </summary>
        /// <param name="missionRequestDTO"></param>
        /// <returns></returns>
        public async Task <Tuple <MissionDTO, string> > Save(MissionRequestDTO missionRequestDTO)
        {
            if (missionRequestDTO.Id == 0)
            {
                return(await Create(missionRequestDTO));
            }

            return(await Update(missionRequestDTO.Id, missionRequestDTO));
        }
        /// <summary>
        /// Updates a mission (moves an existing rover)
        /// </summary>
        /// <param name="id"></param>
        /// <param name="missionRequestDTO"></param>
        /// <returns></returns>
        public async Task <Tuple <MissionDTO, string> > Update(int id, MissionRequestDTO missionRequestDTO)
        {
            if (!Helper.IsInternetAvailable())
            {
                return(null);
            }

            var result = await ApiWrapper <MissionDTO> .Put(Api.Missions.Move.Replace("{id}", id.ToString()), missionRequestDTO);

            return(result);
        }
        /// <summary>
        /// Creates a new mission (deploys a new rover)
        /// </summary>
        /// <param name="missionDTO"></param>
        /// <returns></returns>
        public async Task <Tuple <MissionDTO, string> > Create(MissionRequestDTO missionRequestDTO)
        {
            if (!Helper.IsInternetAvailable())
            {
                return(null);
            }

            var result = await ApiWrapper <MissionDTO> .Post(Api.Missions.Create, missionRequestDTO);

            return(result);
        }
        public NewMissionPageViewModel(INavigationService navigationService, IModalNavigationService modalNavigationService, IPageDialogService dialogService, IAppService appService)
            : base(navigationService, modalNavigationService, dialogService, appService)
        {
            try
            {
                IsBusy = true;

                MaxX  = Preferences.Get(Settings.GridMaxX, 0);
                MaxY  = Preferences.Get(Settings.GridMaxY, 0);
                Model = new MissionRequestDTO {
                    MaxX = MaxX, MaxY = MaxY
                };
            }
            catch (Exception ex)
            {
                base.DisplayExceptionMessage(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }