public bool LogGeocache(LiveAPI.GeocachingLiveV6 api, LogInfo logInfo, List<LiveAPI.LiveV6.Trackable> dropTbs, List<string> retrieveTbs) { bool result = false; try { var req = new LiveAPI.LiveV6.CreateFieldNoteAndPublishRequest(); req.AccessToken = api.Token; req.CacheCode = logInfo.GeocacheCode; req.EncryptLogText = false; req.FavoriteThisCache = logInfo.AddToFavorites; req.Note = logInfo.LogText; req.PromoteToLog = true; req.WptLogTypeId = logInfo.LogType.ID; req.UTCDateLogged = logInfo.VisitDate.Date.AddHours(12).ToUniversalTime(); var resp = api.Client.CreateFieldNoteAndPublish(req); if (resp.Status.StatusCode == 0) { bool error = false; if (Core.ApplicationData.Instance.ActiveDatabase!=null) { var gc = Core.ApplicationData.Instance.ActiveDatabase.GeocacheCollection.GetGeocache(logInfo.GeocacheCode); if (gc != null) { if (logInfo.LogType.AsFound) { gc.Found = true; } } LiveAPI.Import.ImportLog(Core.ApplicationData.Instance.ActiveDatabase, resp.Log); if (gc!=null) { gc.ResetCachedLogData(); } } //log trackables (14=drop off, 13=retrieve from cache, 75=visited) if (dropTbs != null && dropTbs.Count > 0) { var reqT = new LiveAPI.LiveV6.CreateTrackableLogRequest(); reqT.AccessToken = api.Token; reqT.LogType = 14; reqT.UTCDateLogged = logInfo.VisitDate.Date.AddHours(12).ToUniversalTime(); foreach (var tb in dropTbs) { reqT.TrackingNumber = tb.TrackingCode; reqT.CacheCode = logInfo.GeocacheCode; var resp2 = api.Client.CreateTrackableLog(reqT); if (resp2.Status.StatusCode != 0) { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp2.Status.StatusMessage); error = true; //break; } } } if (retrieveTbs != null && retrieveTbs.Count > 0) { var reqT = new LiveAPI.LiveV6.CreateTrackableLogRequest(); reqT.AccessToken = api.Token; reqT.LogType = 13; reqT.UTCDateLogged = logInfo.VisitDate.Date.AddHours(12).ToUniversalTime(); foreach (var tb in retrieveTbs) { reqT.TrackingNumber = tb; reqT.CacheCode = logInfo.GeocacheCode; var resp2 = api.Client.CreateTrackableLog(reqT); if (resp2.Status.StatusCode != 0) { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp2.Status.StatusMessage); error = true; //break; } } } //add log images foreach (var li in logInfo.Images) { var uplReq = new LiveAPI.LiveV6.UploadImageToGeocacheLogRequest(); uplReq.AccessToken = api.Token; uplReq.LogGuid = resp.Log.Guid; uplReq.ImageData = new LiveAPI.LiveV6.UploadImageData(); uplReq.ImageData.FileCaption = li.Caption; uplReq.ImageData.FileDescription = li.Description; uplReq.ImageData.FileName = li.Uri; //todo: scale image to comply to limits uplReq.ImageData.base64ImageData = System.Convert.ToBase64String(System.IO.File.ReadAllBytes(li.Uri)); var resp2 = api.Client.UploadImageToGeocacheLog(uplReq); if (resp2.Status.StatusCode != 0) { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp2.Status.StatusMessage); error = true; //break; } } if (logInfo.AddToFavorites) { Favorites.Manager.Instance.AddFavoritedGeocache(logInfo.GeocacheCode); } result = true; } else { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp.Status.StatusMessage); } } catch(Exception e) { Core.ApplicationData.Instance.Logger.AddLog(this, e); } return result; }
public bool LogGeocache(LiveAPI.GeocachingLiveV6 api, LogInfo logInfo, List <LiveAPI.LiveV6.Trackable> dropTbs, List <string> retrieveTbs) { bool result = false; try { var req = new LiveAPI.LiveV6.CreateFieldNoteAndPublishRequest(); req.AccessToken = api.Token; req.CacheCode = logInfo.GeocacheCode; req.EncryptLogText = false; req.FavoriteThisCache = logInfo.AddToFavorites; req.Note = logInfo.LogText; req.PromoteToLog = true; req.WptLogTypeId = logInfo.LogType.ID; req.UTCDateLogged = logInfo.VisitDate.Date.AddHours(12).ToUniversalTime(); var resp = api.Client.CreateFieldNoteAndPublish(req); if (resp.Status.StatusCode == 0) { bool error = false; if (Core.ApplicationData.Instance.ActiveDatabase != null) { var gc = Core.ApplicationData.Instance.ActiveDatabase.GeocacheCollection.GetGeocache(logInfo.GeocacheCode); if (gc != null) { if (logInfo.LogType.AsFound) { gc.Found = true; } } LiveAPI.Import.ImportLog(Core.ApplicationData.Instance.ActiveDatabase, resp.Log); if (gc != null) { gc.ResetCachedLogData(); } } //log trackables (14=drop off, 13=retrieve from cache, 75=visited) if (dropTbs != null && dropTbs.Count > 0) { var reqT = new LiveAPI.LiveV6.CreateTrackableLogRequest(); reqT.AccessToken = api.Token; reqT.LogType = 14; reqT.UTCDateLogged = logInfo.VisitDate.Date.AddHours(12).ToUniversalTime(); foreach (var tb in dropTbs) { reqT.TrackingNumber = tb.TrackingCode; reqT.CacheCode = logInfo.GeocacheCode; var resp2 = api.Client.CreateTrackableLog(reqT); if (resp2.Status.StatusCode != 0) { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp2.Status.StatusMessage); error = true; //break; } } } if (retrieveTbs != null && retrieveTbs.Count > 0) { var reqT = new LiveAPI.LiveV6.CreateTrackableLogRequest(); reqT.AccessToken = api.Token; reqT.LogType = 13; reqT.UTCDateLogged = logInfo.VisitDate.Date.AddHours(12).ToUniversalTime(); foreach (var tb in retrieveTbs) { reqT.TrackingNumber = tb; reqT.CacheCode = logInfo.GeocacheCode; var resp2 = api.Client.CreateTrackableLog(reqT); if (resp2.Status.StatusCode != 0) { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp2.Status.StatusMessage); error = true; //break; } } } //add log images foreach (var li in logInfo.Images) { var uplReq = new LiveAPI.LiveV6.UploadImageToGeocacheLogRequest(); uplReq.AccessToken = api.Token; uplReq.LogGuid = resp.Log.Guid; uplReq.ImageData = new LiveAPI.LiveV6.UploadImageData(); uplReq.ImageData.FileCaption = li.Caption; uplReq.ImageData.FileDescription = li.Description; uplReq.ImageData.FileName = li.Uri; using (System.IO.TemporaryFile tmpFile = new System.IO.TemporaryFile(true)) { if (Utils.ResourceHelper.ScaleImage(li.Uri, tmpFile.Path, Core.Settings.Default.LiveAPILogGeocachesMaxImageWidth, Core.Settings.Default.LiveAPILogGeocachesMaxImageHeight, Core.Settings.Default.LiveAPILogGeocachesMaxImageSizeMB, Core.Settings.Default.LiveAPILogGeocachesImageQuality, li.RotationDeg)) { uplReq.ImageData.base64ImageData = System.Convert.ToBase64String(System.IO.File.ReadAllBytes(tmpFile.Path)); } } if (!string.IsNullOrEmpty(uplReq.ImageData.base64ImageData)) { var resp2 = api.Client.UploadImageToGeocacheLog(uplReq); if (resp2.Status.StatusCode != 0) { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp2.Status.StatusMessage); error = true; //break; } } else { error = true; } } if (logInfo.AddToFavorites) { Favorites.Manager.Instance.AddFavoritedGeocache(logInfo.GeocacheCode); } result = true; } else { Core.ApplicationData.Instance.Logger.AddLog(this, Core.Logger.Level.Error, resp.Status.StatusMessage); } } catch (Exception e) { Core.ApplicationData.Instance.Logger.AddLog(this, e); } return(result); }