public bool CreateImagePreview(string mediaId)
        {
            bool   result           = false;
            string photoNamePreview = ImagePathManager.GetMediaFilename(mediaId, MediaObjectTypeEnum.Image, true);
            string pathToOriginal   = ImagePathManager.GetImagePath(mediaId, MediaObjectTypeEnum.Image, false);
            string pathToPreview    = ImagePathManager.GetImagePath(mediaId, MediaObjectTypeEnum.Image, true);

            try
            {
                byte[] originalByteArray = readFileToByteArray(pathToOriginal);
                if (originalByteArray.Length > 0)
                {
                    ImagePreviewManager previewManager = new ImagePreviewManager();
                    var    mediaService        = DependencyService.Get <IMediaService>();
                    byte[] imgPreviewByteArray = previewManager.GetPreviewImage(mediaService, originalByteArray, _width, _height, _quality);
                    File.WriteAllBytes(pathToPreview, imgPreviewByteArray);
                    result = true;
                }
            }
            catch (Exception e)
            {
                Crashes.TrackError(e, new Dictionary <string, string> {
                    { "MediaId", "ImgPreview" }, { mediaId, photoNamePreview }
                });
            }

            return(result);
        }
        public void TryDeleteFile(string routePointMediaObjectId, MediaObjectTypeEnum mediaType, bool isPreview = false)
        {
            string filename = ImagePathManager.GetImagePath(routePointMediaObjectId, mediaType, isPreview);

            if (File.Exists(filename))
            {
                try
                {
                    File.Delete(filename);
                }
                catch (Exception e)
                {
                    HandleError.Process("RoutePointMediaObjectManager", "TryDeleteFile", e, false);
                }
            }
        }
        internal void UpdateMetadata(string pathToImageDirectory)
        {
            var startDate  = DateTime.Now;
            int countFiles = 0;
            var files      = _cacheManager.LocalFilesByDays(_dateBegin, _dateEnd, pathToImageDirectory);

            foreach (var currentFile in files)
            {
                if (!currentFile.Processed)
                {
                    _imageManager.SetPreviewImageQuality(ImageQualityType.MiddleSizeHiQuality);
                    var currentMetadata = _imageManager.GetPhoto(currentFile.Id, Path.Combine(currentFile.SourcePath, currentFile.SourceFileName));
                    if (currentMetadata.getMetadataPhotoResult)
                    {
                        currentFile.Latitude             = currentMetadata.imageGpsCoordinates.Latitude;
                        currentFile.Longitude            = currentMetadata.imageGpsCoordinates.Longitude;
                        currentFile.ImagePreviewFileName = ImagePathManager.GetImagePath(currentFile.Id, LocalDB.Model.MediaObjectTypeEnum.Image, true);
                    }
                    currentFile.Processed = true;
                    _cacheManager.Save(currentFile);
                    if (countFiles % 10 == 0)
                    {
                        Xamarin.Forms.MessagingCenter.Send <CurrentProgressIndexMessage>(new CurrentProgressIndexMessage()
                        {
                            Index = countFiles
                        }, string.Empty);
                    }

                    countFiles++;
                }
            }

            var delay = DateTime.Now - startDate;

            Analytics.TrackEvent("ImagesCacheDb:Update metadata", new Dictionary <string, string> {
                { "delay", delay.ToString() },
                { "dateBegin", _dateBegin.ToString(DateTimeFormatInfo.InvariantInfo) },
                { "dateEnd", _dateEnd.ToString(DateTimeFormatInfo.InvariantInfo) },
                { "countFiles", files.Count().ToString() }
            });
        }